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.