ServiciosConocimiento (EN)HerramientasField Guide (EN)BlogNosotros
← Volver a R&D

Sardine CMS

Un framework de CMS multilingüe y static-first.

Python · Apache-2.0

El motor detrás de este sitio, extraído a un framework reutilizable. Sardine construye sitios multilingües y static-first: contenido estructurado, separado de la presentación, validación fuerte antes de cualquier publicación, y un build determinista que exporta directamente a un alojamiento estático.

Qué es

El contenido vive en JSON y Markdown, con idioma de origen configurable. Hoy vienen siete paquetes de idioma: inglés, portugués europeo, español, francés y alemán, más italiano e indonesio, estos dos aportados por la comunidad con el catálogo completo del panel de administración. 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 origen: canonical, hreflang, Open Graph, JSON-LD, sitemap y RSS;
  • un panel autenticado en el navegador que cubre el ciclo editorial completo.

El contenido es portable por diseño: JSON y Markdown, sin atadura a la base de datos. Hay cuatro motores de almacenamiento: SQLite por defecto, con PostgreSQL, MySQL y SQL Server como extras opcionales. El front-end cumple la WCAG 2.2 AA. Los destinos de publicación incluyen Azure Static Web Apps, nginx, un servidor genérico, y un scaffold de proyecto Astro que consume la Content API.

El panel de administración de Sardine CMS: la pantalla de Temas, con los temas instalados, su veredicto de compatibilidad y el tema de referencia activo

El panel de administración

Quien edita trabaja en un panel real en el navegador, no en un archivo de configuración. Lleva SEO por entrada, formularios apoyados en un endpoint oficial, y enlaces de previsualización externos firmados, para mostrar un borrador a alguien sin cuenta.

Los temas y las extensiones se gestionan desde el panel, de forma declarativa. Descubre lo que está instalado y muestra los metadatos, una captura y un veredicto de compatibilidad sin ejecutar ningún código durante el descubrimiento. La activación es transaccional: un build de prueba tiene que pasar antes de que la configuración cambie, así que una extensión averiada es un estado visible y reversible, nunca un panel muerto. Las extensiones traen un esquema de ajustes versionado y un health-check opcional, los ajustes se validan antes de guardar, los valores secretos nombran una variable de entorno en vez de almacenarse, y un tema es un contrato verificable de quince comprobaciones de conformidad nombradas.

Migrar blogs existentes

Un camino completo, de extremo a extremo, para exportaciones WXR de WordPress, en el CLI y en el panel sobre el mismo pipeline. Nada se escribe antes de ver lo que va a pasar: un informe dry-run indica un porcentaje de fidelidad explícito y lista una línea por cada elemento que no se puede migrar, para que nada se descarte en silencio. La reimportación es idempotente, los autores, categorías y etiquetas se mapean, la media referenciada se descarga, y los redireccionamientos de las URLs antiguas se generan automáticamente.

Instalación

Requiere Python 3.12 o más reciente. El comando cms viene de un único paquete:

bash
pip install sardine-cms-cli

Eso trae el núcleo, el validador y el constructor. El tema de referencia y el panel en el navegador son paquetes separados, opcionales. Los motores de base de datos más allá de SQLite son extras opcionales del núcleo:

bash
pip install "sardine-cms-core[postgres]"   # o [mysql], [mssql]

Quickstart

Un comando va de cero a un sitio navegable en siete idiomas:

bash
pip install sardine-cms-cli sardine-cms-theme-ph7x-reference
cms demo

También hay un camino Docker: docker compose up levanta el panel con un sitio sembrado y sin preparar Python, imprimiendo una contraseña de administración generada en el primer arranque. Para empezar en cambio un proyecto real, cms init my-site --theme ph7x-reference, luego cms seed, cms build y cms preview.

Cómo está organizado

El espacio de trabajo 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, y cms-cli para el comando cms, más un tema de referencia y el panel en el navegador. El diseño vive a nivel del tema: traiga el suyo.

Cómo contribuir

El repositorio está abierto a contribuciones. Lea el CONTRIBUTING.md y el CODE_OF_CONDUCT.md, elija una issue marcada good first issue, y abra un pull request. Los informes de errores y las correcciones de documentación son tan bienvenidos como el código. Las cuestiones de seguridad siguen el SECURITY.md, en privado.

Puede verlo funcionando en el demo, una empresa aeroespacial ficticia en siete idiomas, reconstruida y publicada en cada merge.