Estructura de Directorios para CMS Headless con Arquitectura Microkernel
/
├── cmd/ # Puntos de entrada de la aplicación
│ └── server/ # Servidor principal
│ └── main.go # Inicializa y arranca el microkernel
│
├── internal/ # Código privado de la aplicación
│ ├── kernel/ # Núcleo del sistema (microkernel)
│ │ ├── bus.go # Bus de eventos para comunicación entre componentes
│ │ ├── container.go # Contenedor de dependencias y registro de plugins
│ │ ├── kernel.go # Implementación del microkernel
│ │ └── interfaces.go # Interfaces para plugins y extensiones
│ │
│ ├── api/ # Componentes relacionados con la API
│ │ ├── generator/ # Generador automático de APIs REST
│ │ │ ├── generator.go # Motor de generación de endpoints
│ │ │ ├── parser.go # Parser de definiciones JSON
│ │ │ └── template.go # Plantillas para rutas y controladores
│ │ ├── middleware/ # Middleware para APIs
│ │ └── response/ # Transformación de respuestas
│ │ ├── formatter.go # Formateador de respuestas
│ │ └── transformer.go # Transformador para adaptar respuestas al cliente
│ │
│ ├── plugins/ # Plugins básicos del sistema
│ │ ├── auth/ # Plugin de autenticación
│ │ ├── cache/ # Plugin de caché
│ │ ├── storage/ # Plugin de almacenamiento
│ │ └── logging/ # Plugin de logging
│ │
│ ├── schema/ # Gestión de esquemas de datos
│ │ ├── loader.go # Carga dinámicamente definiciones de esquemas
│ │ ├── validator.go # Validación de esquemas
│ │ └── registry.go # Registro de esquemas disponibles
│ │
│ └── utils/ # Utilidades compartidas
│ ├── config/ # Configuración
│ └── errors/ # Gestión de errores
│
├── plugins/ # Plugins de terceros o extensiones
│ ├── content_types/ # Plugins para tipos de contenido
│ │ ├── article/ # Plugin para tipo de contenido "artículo"
│ │ └── product/ # Plugin para tipo de contenido "producto"
│ ├── extensions/ # Extensiones funcionales
│ │ ├── seo/ # Extensión para SEO
│ │ └── media/ # Extensión para gestión de medios
│ └── apis/ # Plugins de APIs personalizadas
│
├── web/ # Frontend en Svelte (opcional, para admin)
│ ├── src/ # Código fuente del frontend
│ │ ├── lib/ # Componentes y utilidades
│ │ │ └── schema-client/ # Cliente para consumir esquemas del backend
│ │ ├── routes/ # Rutas de la aplicación
│ │ └── app.html # Plantilla principal
│ └── static/ # Archivos estáticos
│
├── config/ # Configuraciones
│ ├── schema/ # Definiciones JSON de esquemas y APIs
│ │ ├── content_types/ # Definiciones de tipos de contenido
│ │ │ ├── article.json # Definición de tipo "artículo"
│ │ │ └── product.json # Definición de tipo "producto"
│ │ ├── apis/ # Definiciones de APIs
│ │ │ └── v1/ # Versión 1 de la API
│ │ │ ├── article.json # API para artículos
│ │ │ └── product.json # API para productos
│ │ └── transformers/ # Definiciones de transformadores de respuesta
│ │ ├── web.json # Transformador para web
│ │ └── mobile.json # Transformador para móvil
│ └── server.json # Configuración del servidor
│
├── deployments/ # Configuraciones de despliegue
│ ├── docker/ # Archivos Docker
│ │ ├── Dockerfile # Dockerfile para la construcción
│ │ └── docker-compose.yml # Composición para desarrollo local
│ └── nginx/ # Configuración de Nginx
│
├── scripts/ # Scripts de utilidad
│ ├── build.sh # Script de construcción
│ └── generate-api.sh # Script para generar APIs
│
├── tests/ # Pruebas
│ ├── unit/ # Pruebas unitarias
│ ├── integration/ # Pruebas de integración
│ └── e2e/ # Pruebas de extremo a extremo
│
├── docs/ # Documentación
│ ├── api/ # Documentación de API
│ └── plugins/ # Documentación de plugins
│
├── go.mod # Dependencias de Go
├── go.sum # Checksums de dependencias
└── README.md # Documentación principal