Sardine CMS
Uma framework de CMS multilingue, static-first.

O motor por trás deste site, extraído numa framework reutilizável. O Sardine constrói sites multilingues e static-first: conteúdo estruturado separado da apresentação, validação forte antes de publicar, e um build determinista que exporta direto para um servidor estático.
O que é
O conteúdo vive em JSON e Markdown, em cinco línguas com o inglês como fonte. As peças são os mesmos contratos já provados neste site:
- conteúdo estruturado em JSON e Markdown, separado da apresentação;
- validação forte antes de publicar: paridade de línguas, estrutura, regras editoriais;
- um build determinista com exportação estática, pronto para Azure Static Web Apps;
- SEO multilingue desde o início: canonical, hreflang, Open Graph, JSON-LD, sitemap e RSS;
- um admin autenticado com o ciclo rascunho, revisão, publicado, arquivado.
O conteúdo é portável por desenho: JSON e Markdown, sem ficar preso a uma base de dados. Há quatro motores de armazenamento, SQLite por omissão e PostgreSQL, MySQL ou SQL Server como opcionais. O frontend cumpre o nível WCAG 2.2 AA.
Instalação
Requer Python 3.12 ou mais recente. O comando cms vem de um único pacote:
pip install sardine-cms-cli
Isso traz o núcleo, o validador e o gerador. O tema de referência e o admin de navegador são pacotes separados e opcionais. Os motores de base de dados além do SQLite são opcionais do núcleo:
pip install "sardine-cms-core[postgres]" # or [mysql], [mssql]
Arranque 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
O cms export escreve o build para um servidor de destino: Azure Static Web Apps, nginx ou um servidor genérico.
Como está organizado
O workspace é um conjunto de pacotes focados: cms-core para o modelo de conteúdo e os estados de tradução, cms-validation para as regras, cms-build para o gerador determinista e os temas, cms-cli para o comando cms, mais um tema de referência e o admin de navegador. O desenho vive ao nível do tema: cada um traz o seu.
Como contribuir
O repositório está aberto a contribuições. Lê o CONTRIBUTING.md e o CODE_OF_CONDUCT.md, escolhe uma issue marcada como good first issue, e abre um pull request. Relatos de bugs e correções na documentação são tão bem-vindos como código. As falhas de segurança seguem o SECURITY.md, em privado.
Podes vê-lo a funcionar na demo online, uma empresa aeroespacial fictícia em cinco línguas, reconstruída e publicada a cada merge.
