EmDash CMS – Arranque del proyecto y estructura de directorios
Guía práctica de arquitectura para iniciar un proyecto EmDash con una estructura de directorios que escala bien desde la prueba de concepto hasta producción.
Para quién es esta guía
Úsala cuando partas de un repositorio vacío y quieras una estructura que soporte:
- cambios editoriales de contenido cada día
- iteración de frontend sin romper supuestos del CMS
- un despliegue posterior del desarrollo local a Cloudflare
El objetivo no es el árbol de carpetas más ingenioso, sino reducir el coste de mantenimiento a largo plazo.
Primero decide el tiempo de ejecución
Antes de crear archivos, decide qué tiempo de ejecución optimizarás en los próximos 30 a 90 días:
Node.js + SQLitepara incorporación local más rápida y menor complejidad operativaCloudflare Workers + D1 + R2para SSR en producción, almacenamiento gestionado e integración más estrecha con el modelo de plugins de EmDash
Si el equipo aún valida la estrategia de contenidos, empieza con Node.js y mantén nombres listos para Cloudflare desde el día uno. Evitas bloqueo temprano en la plataforma y mantienes la migración sencilla.
Estructura de directorios base recomendada
your-emdash-site/
├── src/
│ ├── components/ # Solo piezas de UI reutilizables
│ ├── layouts/ # Cascos de página compartidos
│ ├── pages/ # Rutas Astro
│ ├── lib/ # Lógica de dominio e integraciones
│ ├── styles/ # Tokens de estilo globales y compartidos
│ └── live.config.ts # Mapeo de colecciones de contenido en vivo
├── seed/ # Datos semilla para arranque/demo
├── public/ # Activos estáticos (favicons, imágenes)
├── docs/ # Documentación del producto y contenido editorial (MDX)
├── astro.config.mjs
├── package.json
├── tsconfig.json
└── emdash-env.d.ts
Si el proyecto ya usa utils/ en lugar de lib/, mantenlo por ahora. Renombra solo cuando puedas aplicar reglas de propiedad claras.
Modelo de propiedad de directorios
La estructura solo funciona con propiedad explícita:
src/components: unidades solo de presentación; sin llamadas directas a base de datos o almacenamientosrc/layouts: marco compartido (head, nav, pie)src/pages: composición de rutas y cableado de datos para el renderizadosrc/lib: reglas de negocio, adaptadores de datos y pegamento específico de plataformaseed: contenido base reproducible para entornos nuevos
Así se evita el desvío más común: el código de utilidades que pasa silenciosamente a ser lógica de negocio.
Ruta de arranque que evita retrabajo
Para proyectos de producción, usa esta secuencia:
- Crear con el scaffold oficial
- Elegir una plantilla (blog, marketing o portfolio)
- Mantener las convenciones generadas salvo conflicto con un estándar claro del equipo
- Añadir solo una personalización estructural cada vez
Por qué importa el orden: la mayoría de retrasos no vienen de funciones que faltan, sino de divergencia estructural temprana que luego rompe documentación, scripts e incorporación.
Comandos de arranque recomendados
# Crear un proyecto EmDash CMS nuevo
npm create emdash@latest my-emdash-site
cd my-emdash-site
# Instalar y arrancar desarrollo local
npm install
npm run dev
Anti-patrones comunes
1) Código primero por rutas sin decidir el modelo de contenido
Construir rutas de página antes de acordar la forma de colecciones y taxonomías provoca reescrituras caras.
2) Mezclar preocupaciones de despliegue en carpetas de UI
No pongas scripts específicos de despliegue ni ayudas de configuración bajo components o pages. Las preocupaciones de plataforma van en archivos de configuración y src/lib.
3) Carpetas utils sin límite
Si todo va a utils, desaparece la descubribilidad. Prefiere dominios con nombre en src/lib, por ejemplo src/lib/content, src/lib/media, src/lib/auth.
Definición de terminado para la configuración inicial
Considera el arranque completo solo cuando:
- el servidor de desarrollo local funciona sin parches manuales
- un flujo de contenido de ejemplo funciona de extremo a extremo
- los datos semilla se pueden importar en un entorno nuevo
- el build de CI pasa sin hacks específicos del entorno
- un nuevo colaborador puede orientarse en el repositorio en menos de diez minutos
Qué hacer después
Cuando la estructura sea estable:
- documenta la elección de tiempo de ejecución y criterios de migración en el repositorio
- define convenciones de nombres de tipos de contenido antes de que crezca el volumen
- implementa el runbook de despliegue para tu plataforma
La estructura de directorios es arquitectura, no cosmética. Fijarla pronto ahorra semanas después.