Amorçage de projet et arborescence EmDash CMS
Guide d’architecture pratique pour démarrer un nouveau projet EmDash avec une arborescence qui évolue proprement de la preuve de concept à la production.
À qui s’adresse ce guide
Utilisez ce guide lorsque vous partez d’un dépôt vide et voulez une structure de répertoires capable de supporter :
- des changements de contenu éditorial quotidiens
- l’itération frontend sans casser les hypothèses du CMS
- un déploiement ultérieur du développement local vers Cloudflare
L’objectif n’est pas l’arborescence la plus astucieuse. L’objectif est de réduire le coût de maintenance à long terme.
Commencer par le choix de runtime
Avant de créer des fichiers, décidez pour quel runtime vous optimisez dans les 30 à 90 prochains jours :
Node.js + SQLitepour l’embarquement local le plus rapide et la complexité opérationnelle la plus faibleCloudflare Workers + D1 + R2pour le SSR en production, le stockage géré et une intégration plus étroite avec le modèle de plugins EmDash
Si votre équipe valide encore la stratégie de contenu, commencez par Node.js tout en gardant dès le jour un nommage prêt pour Cloudflare. Cela évite un verrouillage plateforme précoce tout en gardant une migration simple.
Arborescence de base recommandée
your-emdash-site/
├── src/
│ ├── components/ # Composants UI réutilisables uniquement
│ ├── layouts/ # Enveloppes de page partagées
│ ├── pages/ # Routes Astro
│ ├── lib/ # Logique métier et intégrations
│ ├── styles/ # Styles globaux et jetons partagés
│ └── live.config.ts # Mapping des collections de contenu live
├── seed/ # Données de départ pour bootstrap / démo
├── public/ # Assets statiques (favicons, images statiques)
├── docs/ # Doc produit et contenu éditorial (MDX)
├── astro.config.mjs
├── package.json
├── tsconfig.json
└── emdash-env.d.ts
Si votre projet existant utilise déjà utils/ au lieu de lib/, gardez-le pour l’instant. Renommez seulement lorsque vous pouvez imposer des règles de propriété claires.
Modèle de propriété des répertoires
La structure ne fonctionne que si la propriété est explicite :
src/components: unités purement présentation ; pas d’appels directs base de données ou stockagesrc/layouts: cadre partagé (balises head, cadre nav, enveloppe pied de page)src/pages: composition des routes et câblage des données pour le rendusrc/lib: règles métier, adaptateurs de données et colle spécifique plateformeseed: contenu de base reproductible pour les nouveaux environnements
Cette séparation évite la dérive la plus courante : le code utilitaire qui devient silencieusement de la logique métier.
Parcours d’amorçage qui limite les retouches
Pour les projets de production, suivez cette séquence :
- Créer avec le scaffold officiel
- Choisir un modèle (blog, marketing ou portfolio)
- Conserver les conventions générées sauf conflit avec une norme d’équipe claire
- N’ajouter qu’une personnalisation structurelle à la fois
Pourquoi cet ordre : la plupart des retards de lancement ne viennent pas de fonctionnalités manquantes. Ils viennent d’une divergence structurelle précoce qui casse ensuite docs, scripts et embarquement.
Commandes d’amorçage recommandées
# Générer un nouveau projet Emdash CMS
npm create emdash@latest my-emdash-site
cd my-emdash-site
# Installer et lancer le développement local
npm install
npm run dev
Anti-patterns courants à éviter
1) Coder les routes avant les décisions de modèle de contenu
Construire les routes de pages avant d’accorder sur la forme des collections et de la taxonomie provoque des réécritures coûteuses.
2) Mélanger les sujets de déploiement dans les dossiers UI
Ne placez pas les scripts et helpers de config spécifiques au déploiement sous components ou pages. Gardez les sujets plateforme dans les fichiers de config et src/lib.
3) Dossiers utils sans limite
Si tout part dans utils, la découvrabilité s’effondre. Préférez des domaines nommés dans src/lib, par exemple src/lib/content, src/lib/media et src/lib/auth.
Définition du « terminé » pour la mise en place initiale
Considérez l’amorçage comme terminé seulement si tous les contrôles passent :
- le serveur de dev local tourne sans correctifs manuels
- un flux de contenu d’exemple fonctionne de bout en bout
- les données seed peuvent être importées dans un environnement neuf
- le build CI passe sans bricolage spécifique à l’environnement
- un nouveau contributeur peut parcourir le dépôt en moins de dix minutes
Suite logique
Une fois la structure stable :
- documenter le choix de runtime et les critères de migration dans le dépôt
- définir les conventions de nommage des types de contenu avant que le volume ne croisse
- implémenter le runbook de déploiement pour votre plateforme choisie
L’arborescence est de l’architecture, pas du cosmétique. La figer tôt fait gagner des semaines plus tard.