Site Système

Boilerplate zéro dépendances pour créer des sites et landing pages en pur HTML/CSS/JS.

Démarrage rapide

  1. Copiez le dossier du framework dans votre projet
  2. Ouvrez core/css/tokens.css et modifiez les couleurs, polices, etc.
  3. Configurez config-site.js (nom du site, favicon, analytics, domaines)
  4. C'est prêt ! Ouvrez index.html dans votre navigateur

Par où commencer ?

Choisissez votre parcours selon votre besoin :

Site vitrine simple

Une landing page ou un site de quelques pages, sans blog ni formulaire.

  1. Démarrer un projet
  2. Personnaliser les tokens
  3. Configurer header & footer
  4. Mettre en page avec Grid / Bento
  5. Copier-coller des sections
  6. Ajouter des animations
  7. Mettre en place les cookies (obligatoire RGPD)
  8. Configurer les pages légales via LEGAL_CONFIG (obligatoire)
  9. Mettre en production

Site avec blog

Tout ce qui précède + un blog dynamique connecté à Baserow.

  1. Parcours « Site vitrine » ci-dessus
  2. Configurer le blog
  3. Générer le sitemap

Site avec formulaires

Tout ce qui précède + formulaires multi-étapes avec envoi par email.

  1. Parcours « Site vitrine » ci-dessus
  2. Créer des formulaires
  3. Pré-remplissage par URL

Architecture

mon-projet/
├── .htaccess                  ← URLs propres + sécurité (Apache)
├── .env                       ← Variables serveur (CORS, tokens API) — non versionné
├── .deploy.env                ← Config SSH de déploiement — non versionné
├── .rsync-exclude             ← Fichiers exclus du déploiement rsync
├── config-site.js             ← Configuration client (site, cookies, blog, legal)
├── deploy.sh                  ← Script de déploiement rsync/SSH
├── core/                      ← Framework (ne pas toucher)
│   ├── loader.js              ← Import automatique (1 ligne = tous les CSS + JS)
│   ├── css/
│   │   ├── tokens.css         ← Charte client (couleurs, polices, etc.)
│   │   ├── base.css           ← Reset + utilitaires
│   │   ├── animations.css     ← Animations scroll + clic
│   │   ├── elements.css       ← Styles éléments interactifs
│   │   ├── forms.css          ← Styles formulaires + toasts
│   │   ├── cookies.css        ← Bandeau cookies
│   │   ├── grid.css           ← Système de grille / bento
│   │   ├── icons.css          ← Styles icônes SVG
│   │   ├── blog.css           ← Styles blog (listing, article, lightbox)
│   │   └── interactions.css   ← Styles interactions déclaratives
│   └── js/
│       ├── components.js      ← Système de composants/slots
│       ├── animations.js      ← IntersectionObserver + clic
│       ├── elements.js        ← Popup, Tooltip, Accordion, Tabs, Slider
│       ├── forms.js           ← Formulaires multi-steps, validation, webhooks
│       ├── params.js          ← Persistance des UTMs + pré-remplissage
│       ├── cookies.js         ← Consentement cookies
│       ├── blog.js            ← Moteur blog Baserow
│       ├── darkmode.js        ← Toggle dark/light mode
│       ├── icons.js           ← Système d'icônes SVG inline
│       ├── site.js            ← Favicon + titre par défaut (depuis SITE_CONFIG)
│       └── interactions.js    ← Interactions déclaratives (click, hover, scroll…)
├── components/                ← Composants (modifiables)
│   ├── header.js              ← Composant Header
│   ├── footer.js              ← Composant Footer
│   └── card.js                ← Composant Card
├── snippets/                  ← Fragments HTML copier-coller
├── assets/                    ← Images, icônes, logos, polices
│   ├── images/
│   ├── icons/
│   ├── logos/
│   └── fonts/
├── api/                       ← Endpoints PHP (proxy Baserow, consentement, formulaires)
│   ├── baserow.php            ← Proxy API Baserow (CORS)
│   ├── consent.php            ← Enregistrement consentement RGPD
│   └── form.php               ← Proxy webhook formulaires
├── data/                      ← Données serveur (CSV consentements, métadonnées médias)
├── pages/                     ← Pages du site
│   ├── index.html             ← Page d'accueil
│   ├── blog.html              ← Page listing blog
│   ├── blog/
│   │   └── article.html       ← Page article
│   ├── mentions-legales.html  ← Mentions légales (auto-générée)
│   ├── confidentialite.html   ← Politique de confidentialité (auto-générée)
│   ├── css/                   ← Styles custom du projet
│   └── js/                    ← Scripts custom du projet
├── wireframes/                ← 375+ sections HTML prêtes à l'emploi
├── docs/                      ← Cette documentation
├── configurateur/             ← Configurateur visuel (site builder)
└── 404.html                   ← Page d'erreur (racine, convention Apache)

Fonctionnalités

Démarrer un projet

Créer un site, le déployer en production, adapter le boilerplate (avec ou sans blog).

Voir la doc →

Design Tokens

Configurez la charte graphique du client en 30 secondes dans un seul fichier.

Voir la doc →

Composants / Slots

Système de composants réutilisables via slots : Header, Footer, Card, et composants custom.

Voir la doc →

Éléments interactifs

Popup, Tooltip, Accordion, Tabs, Slider (draggable, autoplay, multi-slides).

Voir la doc →

Icônes

324 icônes Heroicons (outline + solid). Chargement SVG inline, animation au survol, copier-coller rapide.

Voir la doc →

Grid / Bento

Système de grille flexible et layouts bento asymétriques. CSS pur, responsive.

Voir la doc →

Formulaires

Multi-steps, logique conditionnelle, champs custom, validation, webhooks.

Voir la doc →

Blog

Blog dynamique connecté à Baserow. Listing, article, galerie lightbox, filtres.

Voir la doc →

Cookies

Bandeau RGPD avec gestion granulaire et injection auto des scripts analytics.

Voir la doc →

Animations

Animations d'entrée au scroll, de sortie, et au clic. Respect prefers-reduced-motion.

Voir la doc →

Paramètres URL

Persistance des UTMs, pré-remplissage des champs depuis l'URL.

Voir la doc →

Sitemap

Génération automatique de sitemap.xml et robots.txt via Node.js.

Voir la doc →

Wireframes

375 sections prêtes à copier-coller : headers, heroes, services, portfolios, FAQs, et bien plus.

Voir la doc →

Snippets VSCode

158 raccourcis Emmet‑like (114 HTML + 44 CSS) : bly-form-steps-3, bly-accordion-5, bly-responsive, bly-bem, bly-states… BEM optionnel, tokens Beely, animations configurables.

Voir la doc →

Conventions

  • BEM : Block__Element--Modifier pour le nommage CSS
  • data-* : Configuration via attributs HTML
  • Aucune dépendance : tout fonctionne en pur JS/CSS/HTML
  • file:// : fonctionne sans serveur web

Prérequis

  • HTML/CSS : connaître les bases (balises, classes, propriétés CSS)
  • Éditeur de code : VSCode recommandé (avec l'extension Live Server)
  • Navigateur moderne : Chrome, Firefox, Safari ou Edge
  • Node.js : uniquement pour la génération du sitemap (optionnel)
  • Serveur Apache + PHP : uniquement pour la production (blog, formulaires, cookies)

Glossaire

TermeDéfinition
Design tokensVariables CSS centralisées (--color-primary, --text-lg, etc.) qui définissent la charte graphique. Modifiez-les dans tokens.css pour changer tout le design.
BEMConvention de nommage CSS : .block__element--modifier. Exemple : .card__title--large.
SlotsMécanisme pour injecter du contenu dans un composant. On définit des <template data-slot="nom"> dans le HTML.
ComposantBloc HTML réutilisable (header, footer, card) défini en JS via registerComponent() et utilisé via data-component="nom".
data-*Attributs HTML personnalisés utilisés pour configurer le comportement des éléments sans écrire de JS. Ex : data-popup-target, data-icon.
WireframeSection HTML prête à l'emploi (hero, FAQ, portfolio...) à copier-coller dans vos pages.
WebhookURL qui reçoit les données d'un formulaire par POST. Le proxy PHP transmet les données au webhook configuré.
Proxy PHPScript côté serveur (api/*.php) qui transmet les requêtes à des services externes (Baserow, webhook) en masquant les tokens d'API.
BaserowCMS headless (base de données en ligne) utilisé comme back-end pour le blog. Similaire à Airtable.
RGPD / CNILRèglementation européenne/française sur la protection des données. Impose le consentement avant dépôt de cookies.
CORSCross-Origin Resource Sharing : mécanisme de sécurité des navigateurs qui contrôle les requêtes HTTP entre différents domaines.
XSSCross-Site Scripting : type d'attaque web où du code malveillant est injecté dans une page vue par d'autres utilisateurs.
SVGScalable Vector Graphics : format d'image vectorielle basé sur XML, redimensionnable sans perte de qualité.
UTMUrchin Tracking Module : paramètres ajoutés aux URLs pour suivre l'origine du trafic dans les outils d'analytics.

Inclure dans une page

Une seule ligne suffit grâce au loader :

<script src="../core/loader.js"></script>

Le loader (core/loader.js) charge automatiquement tous les CSS et JS du framework. Il détecte la profondeur de la page pour calculer les chemins relatifs. Plus besoin de lister 20+ imports individuels.

Il charge dans l'ordre :

  1. CSS : tokens, base, grid, forms, elements, animations, text-anim, icons, blog, cookies, legal, interactions
  2. JS synchrones : darkmode, config-site, site, components
  3. JS deferred : forms, elements, animations, text-anim, icons, blog, cookies, params, form-embed, legal, content, interactions

Les composants du projet (header.js, footer.js) restent en import séparé :

<script src="../core/loader.js"></script>
<script src="../components/header.js"></script>
<script src="../components/footer.js"></script>

Voir Démarrer un projet — Loader pour le détail.