Sardine CMS
Un framework de CMS multilingüe, static-first.

El motor detrás de este sitio, extraído en un framework reutilizable. Sardine construye sitios multilingües y static-first: contenido estructurado separado de la presentación, validación fuerte antes de publicar, y un build determinista que exporta directo a un servidor estático.
Qué es
El contenido vive en JSON y Markdown, en cinco idiomas con el inglés como fuente. Las piezas son los mismos contratos ya probados en este sitio:
- contenido estructurado en JSON y Markdown, separado de la presentación;
- validación fuerte antes de publicar: paridad de idiomas, estructura, reglas editoriales;
- un build determinista con exportación estática, listo para Azure Static Web Apps;
- SEO multilingüe desde el principio: canonical, hreflang, Open Graph, JSON-LD, sitemap y RSS;
- un admin autenticado con el ciclo borrador, revisión, publicado, archivado.
El contenido es portable por diseño: JSON y Markdown, sin quedar atado a una base de datos. Hay cuatro motores de almacenamiento, SQLite por defecto y PostgreSQL, MySQL o SQL Server como opcionales. El frontend cumple el nivel WCAG 2.2 AA.
Instalación
Requiere Python 3.12 o más reciente. El comando cms viene de un único paquete:
pip install sardine-cms-cli
Eso trae el núcleo, el validador y el generador. El tema de referencia y el admin de navegador son paquetes separados y opcionales. Los motores de base de datos más allá de SQLite son opcionales del núcleo:
pip install "sardine-cms-core[postgres]" # or [mysql], [mssql]
Inicio rápido
cms init my-site --name "My Site" --base-url "https://my-site.example"
cd my-site
cms seed # example content in five languages
cms validate # parity, structure, editorial rules
cms build # deterministic _site/
cms preview # serve it locally
cms export escribe el build para un servidor de destino: Azure Static Web Apps, nginx o un servidor genérico.
Cómo está organizado
El workspace es un conjunto de paquetes enfocados: cms-core para el modelo de contenido y los estados de traducción, cms-validation para las reglas, cms-build para el generador determinista y los temas, cms-cli para el comando cms, más un tema de referencia y el admin de navegador. El diseño vive a nivel del tema: cada uno trae el suyo.
Cómo contribuir
El repositorio está abierto a contribuciones. Lee el CONTRIBUTING.md y el CODE_OF_CONDUCT.md, elige una issue marcada como good first issue, y abre un pull request. Los informes de errores y las correcciones de documentación son tan bienvenidos como el código. Los fallos de seguridad siguen el SECURITY.md, en privado.
Puedes verlo en marcha en la demo en directo, una empresa aeroespacial ficticia en cinco idiomas, reconstruida y publicada en cada merge.
