Site Système
Boilerplate zéro dépendances pour créer des sites et landing pages en pur HTML/CSS/JS.
Démarrage rapide
- Copiez le dossier du framework dans votre projet
- Ouvrez
core/css/tokens.csset modifiez les couleurs, polices, etc. - Configurez
config-site.js(nom du site, favicon, analytics, domaines) - C'est prêt ! Ouvrez
index.htmldans 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.
- Démarrer un projet
- Personnaliser les tokens
- Configurer header & footer
- Mettre en page avec Grid / Bento
- Copier-coller des sections
- Ajouter des animations
- Mettre en place les cookies (obligatoire RGPD)
- Configurer les pages légales via LEGAL_CONFIG (obligatoire)
- Mettre en production
Site avec blog
Tout ce qui précède + un blog dynamique connecté à Baserow.
- Parcours « Site vitrine » ci-dessus
- Configurer le blog
- Générer le sitemap
Site avec formulaires
Tout ce qui précède + formulaires multi-étapes avec envoi par email.
- Parcours « Site vitrine » ci-dessus
- Créer des formulaires
- 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 →Animations
Animations d'entrée au scroll, de sortie, et au clic. Respect prefers-reduced-motion.
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.
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
| Terme | Définition |
|---|---|
| Design tokens | Variables CSS centralisées (--color-primary, --text-lg, etc.) qui définissent la charte graphique. Modifiez-les dans tokens.css pour changer tout le design. |
| BEM | Convention de nommage CSS : .block__element--modifier. Exemple : .card__title--large. |
| Slots | Mécanisme pour injecter du contenu dans un composant. On définit des <template data-slot="nom"> dans le HTML. |
| Composant | Bloc 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. |
| Wireframe | Section HTML prête à l'emploi (hero, FAQ, portfolio...) à copier-coller dans vos pages. |
| Webhook | URL qui reçoit les données d'un formulaire par POST. Le proxy PHP transmet les données au webhook configuré. |
| Proxy PHP | Script côté serveur (api/*.php) qui transmet les requêtes à des services externes (Baserow, webhook) en masquant les tokens d'API. |
| Baserow | CMS headless (base de données en ligne) utilisé comme back-end pour le blog. Similaire à Airtable. |
| RGPD / CNIL | Règlementation européenne/française sur la protection des données. Impose le consentement avant dépôt de cookies. |
| CORS | Cross-Origin Resource Sharing : mécanisme de sécurité des navigateurs qui contrôle les requêtes HTTP entre différents domaines. |
| XSS | Cross-Site Scripting : type d'attaque web où du code malveillant est injecté dans une page vue par d'autres utilisateurs. |
| SVG | Scalable Vector Graphics : format d'image vectorielle basé sur XML, redimensionnable sans perte de qualité. |
| UTM | Urchin 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 :
- CSS : tokens, base, grid, forms, elements, animations, text-anim, icons, blog, cookies, legal, interactions
- JS synchrones : darkmode, config-site, site, components
- 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.