Bootstrap del progetto Emdash CMS e struttura delle directory
Una guida pratica di architettura per avviare un nuovo progetto EmDash con una struttura directory che scala in modo pulito dal proof-of-concept alla produzione.
A chi si rivolge questa guida
Usa questa guida quando parti da un repository vuoto e vuoi una struttura di directory capace di supportare:
- modifiche quotidiane ai contenuti editoriali
- iterazioni frontend senza rompere le assunzioni del CMS
- una migrazione del deploy dallo sviluppo locale a Cloudflare in seguito
L’obiettivo non è creare l’albero cartelle più “furbo”. L’obiettivo è ridurre il costo di manutenzione nel lungo periodo.
Parti prima dalla decisione sul runtime
Prima di creare file, decidi per quale runtime vuoi ottimizzare nei prossimi 30-90 giorni:
Node.js + SQLiteper onboarding locale più rapido e minore complessità operativaCloudflare Workers + D1 + R2per SSR in produzione, storage gestito e integrazione più stretta con il modello plugin di EmDash
Se il tuo team sta ancora validando la strategia contenuti, inizia prima con Node.js e mantieni da subito naming compatibile con Cloudflare. Così eviti lock-in di piattaforma precoce mantenendo una migrazione semplice.
Struttura directory base consigliata
your-emdash-site/
├── src/
│ ├── components/ # Solo componenti UI riutilizzabili
│ ├── layouts/ # Shell di pagina condivise
│ ├── pages/ # Route Astro
│ ├── lib/ # Logica di dominio e integrazioni
│ ├── styles/ # Token di stile globali e condivisi
│ └── live.config.ts # Mappatura delle collection contenuto live
├── seed/ # Dati seed per bootstrap/demo
├── public/ # Asset statici (favicon, immagini statiche)
├── docs/ # Documentazione prodotto e contenuti editoriali (MDX)
├── astro.config.mjs
├── package.json
├── tsconfig.json
└── emdash-env.d.ts
Se il progetto esistente usa già utils/ invece di lib/, mantienilo per ora. Rinomina solo quando puoi far rispettare regole di ownership chiare.
Modello di ownership delle directory
La struttura funziona solo quando l’ownership è esplicita:
src/components: unità solo di presentazione; nessuna chiamata diretta a database o storagesrc/layouts: aspetti condivisi del frame (tag head, frame navigazione, shell footer)src/pages: composizione route e wiring dati per il renderingsrc/lib: regole di business, adapter dati e glue specifico di piattaformaseed: baseline contenuto riproducibile per nuovi ambienti
Questa separazione previene la deriva più comune: codice utility che diventa silenziosamente logica di business.
Percorso di bootstrap che evita rilavorazioni
Per progetti di produzione, usa questa sequenza:
- Crea il progetto con lo scaffold ufficiale
- Scegli un solo template (blog, marketing o portfolio)
- Mantieni le convenzioni generate salvo conflitto con uno standard di team chiaro
- Aggiungi una sola personalizzazione strutturale alla volta
Perché questa sequenza conta: la maggior parte dei ritardi di lancio non nasce da feature mancanti. Nasce da divergenze strutturali precoci che poi rompono documentazione, script e onboarding.
Comandi bootstrap consigliati
# Crea lo scaffold di un nuovo progetto Emdash CMS
npm create emdash@latest my-emdash-site
cd my-emdash-site
# Installa e avvia lo sviluppo locale
npm install
npm run dev
Anti-pattern comuni da evitare
1) Sviluppo route-first senza decisioni sul modello contenuti
Costruire le route prima di concordare forma di collection e tassonomie porta a riscritture costose.
2) Mescolare aspetti di deploy nelle cartelle UI
Non mettere script specifici di deploy e helper di configurazione in components o pages. Mantieni gli aspetti di piattaforma nei file di config e in src/lib.
3) Cartelle utils senza confini
Se tutto finisce in utils, la scopribilità crolla. Preferisci domini nominati in src/lib come src/lib/content, src/lib/media e src/lib/auth.
Definizione di completamento per il setup iniziale
Considera il bootstrap completo solo quando tutti i controlli passano:
- il server di sviluppo locale gira senza patch manuali
- un flusso contenuto di esempio funziona end-to-end
- i dati seed sono importabili in un ambiente nuovo
- la build CI passa senza hack specifici d’ambiente
- un nuovo contributor riesce a orientarsi nel repository in meno di dieci minuti
Cosa fare dopo
Dopo aver stabilizzato la struttura:
- documenta nel repository la scelta runtime e i criteri di migrazione
- definisci convenzioni di naming dei content type prima che il volume cresca
- implementa un runbook di deploy per la piattaforma scelta
La struttura delle directory è architettura, non cosmetica. Bloccarla presto fa risparmiare settimane dopo.