CompetênciasConhecimento (EN)FerramentasField Guide (EN)BlogSobre
← Voltar ao R&D

Sardine CMS

Uma framework de CMS multilingue e static-first.

Python · Apache-2.0

O motor por trás deste site, extraído para uma framework reutilizável. O Sardine constrói sites multilingues e static-first: conteúdo estruturado, separado da apresentação, validação forte antes de qualquer publicação, e um build determinista que exporta diretamente para um alojamento estático.

O que é

O conteúdo vive em JSON e Markdown, com língua de origem configurável. Hoje vêm sete packs de língua: inglês, português europeu, espanhol, francês e alemão, mais italiano e indonésio, estes dois contribuídos pela comunidade com o catálogo completo do painel de administração. 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 o Azure Static Web Apps;
  • SEO multilingue de origem: canonical, hreflang, Open Graph, JSON-LD, sitemap e RSS;
  • um painel autenticado no browser que cobre o ciclo editorial completo.

O conteúdo é portátil por desenho: JSON e Markdown, sem prisão a base de dados. Há quatro motores de armazenamento: SQLite por omissão, com PostgreSQL, MySQL e SQL Server como extras opcionais. O front-end cumpre o WCAG 2.2 AA. Os alvos de publicação incluem o Azure Static Web Apps, o nginx, um servidor genérico, e um scaffold de projeto Astro que consome a Content API.

O painel de administração do Sardine CMS: o ecrã de Temas, com os temas instalados, o veredito de compatibilidade e o tema de referência ativo

O painel de administração

Quem edita trabalha num painel real no browser, não num ficheiro de configuração. Tem SEO por entrada, formulários assentes num endpoint oficial, e links de pré-visualização externos assinados, para mostrar um rascunho a alguém sem conta.

Os temas e as extensões geram-se a partir do painel, de forma declarativa. Ele descobre o que está instalado e mostra os metadados, um screenshot e um veredito de compatibilidade sem executar código nenhum durante a descoberta. A ativação é transacional: um build de teste tem de passar antes de a configuração mudar, por isso uma extensão avariada é um estado visível e reversível, nunca um painel morto. As extensões trazem um esquema de definições versionado e um health-check opcional, as definições são validadas antes de gravar, os valores secretos nomeiam uma variável de ambiente em vez de serem guardados, e um tema é um contrato verificável de quinze verificações de conformidade nomeadas.

Migrar blogs existentes

Um caminho completo, de ponta a ponta, para exports WXR do WordPress, no CLI e no painel sobre o mesmo pipeline. Nada é escrito antes de ver o que vai acontecer: um relatório dry-run indica uma percentagem de fidelidade explícita e lista uma linha por item que não pode ser migrado, para nada ser descartado em silêncio. A reimportação é idempotente, os autores, categorias e etiquetas são mapeados, a media referenciada é descarregada, e os redirects dos URLs antigos são gerados automaticamente.

Instalação

Requer Python 3.12 ou mais recente. O comando cms vem de um único pacote:

bash
pip install sardine-cms-cli

Isso traz o núcleo, o validador e o construtor. O tema de referência e o painel no browser são pacotes separados, opcionais. Os motores de base de dados além do SQLite são extras opcionais do núcleo:

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

Quickstart

Um comando vai do zero a um site navegável em sete línguas:

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

Há também um caminho Docker: docker compose up levanta o painel com um site semeado e sem preparar Python, imprimindo uma password de administração gerada no primeiro arranque. Para começar antes um projeto real, cms init my-site --theme ph7x-reference, depois cms seed, cms build e cms preview.

Como está organizado

O espaço de trabalho é 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, e cms-cli para o comando cms, mais um tema de referência e o painel no browser. O design vive ao nível do tema: traga o seu.

Como contribuir

O repositório está aberto a contribuições. Leia o CONTRIBUTING.md e o CODE_OF_CONDUCT.md, escolha uma issue marcada good first issue, e abra um pull request. Relatos de bugs e correções de documentação são tão bem-vindos como código. As questões de segurança seguem o SECURITY.md, em privado.

Pode vê-lo a correr no demo, uma empresa aeroespacial fictícia em sete línguas, reconstruída e publicada a cada merge.