Skip to content
pH7x Systems edited this page Jul 21, 2026 · 8 revisions

Sardine CMS

Sardine CMS is a multilingual, static-first CMS framework: a content and publishing engine that pairs a real editorial workflow (translations, review states, validation gates) with deterministic static builds.

What makes it different

  • EN is the source of truth; PT-PT, ES, FR and DE translations carry explicit states (missing / outdated / complete) derived from content checksums — edit the source and its translations flag themselves outdated automatically.
  • Validation before publish, always: language parity, unique slugs, media references, alt-text coverage, category rules. Errors block publishing.
  • Deterministic builds: same input → byte-identical output, with hashed asset URLs, full multilingual SEO (canonical, hreflang, Open Graph, JSON-LD, sitemap, RSS) and deployment targets for Azure Static Web Apps, nginx and generic hosts.
  • The database is never the source of truth: portable JSON/Markdown export is. SQLite in development; PostgreSQL, MySQL/MariaDB or SQL Server in production — same storage contract.
  • Design-agnostic: themes are packages discovered via entry points; the bundled reference theme is just one example.

Documentation

Page What it covers
Getting Started Install, scaffold, seed, build, preview
CLI Reference Every cms command and option
Configuration The sardine.toml reference
Content Model Articles, pages, sections, media, translation states
Storage Backends SQLite, PostgreSQL, migrations, conformance
Themes Theme packages, template contexts, overrides, islands
Content API The versioned headless JSON output
Extensions The sardine.extensions contract
Admin Panel Running the admin, accounts, roles, editors
Architecture Layered packages and the ADR index
Deployment Export targets and the demo pipeline
Development and Testing Contributing, gates, test suites
Roadmap Milestones, capability inventory, what is next

Status

Milestones 0–6 are complete. M6 closed with explicit extensions, menus, responsive image derivatives, redirects, lossless portable dump/import, a controlled foreign-blog adapter, design-aware autosave/live preview, the tested section-kind gallery (nine reusable blocks), the consent-first comments contract (ADR-0031) and the versioned Content API. System hardening is in force: hostile XML and active URLs are rejected, preview/media access is private, uploads are bounded and non-replacing, login defenses are resource-bounded, and CI inputs/deployment secrets are isolated. Milestone 7 (operations) is underway — the email/notifications contract is fixed in ADR-0032 and its implementation is next. The detailed capability inventory lives in docs/ROADMAP.md.

Clone this wiki locally