Skip to content

Roadmap

pH7x Systems edited this page Jul 21, 2026 · 40 revisions

Roadmap

Sardine CMS is a CMS: the bar for "complete" is what editors already expect from the mature CMSs they come from. The full capability inventory — what ships today, what is partial, and where each gap is scheduled — lives in docs/ROADMAP.md, kept honest next to the code. The headlines:

Shipped (Milestones 0–5)

Content core with per-language translation states, four storage engines, validation engine with per-rule reporting, deterministic builder with full multilingual SEO, theme system, deployment targets, the cms CLI, and the complete browser admin (accounts and roles, editors, media library, workflow, publishing) on AdminLTE with its behaviors. v0.1.x on PyPI; live demo at https://sardine.ph7x.com.

M5 — Editorial completeness (closed)

Trash/restore, duplicate-as-draft, per-entry preview, quick list actions, featured content, authorship, media library filters, a users screen, editorial notes.

M6 — Extensibility and adoption

Shipped: the explicit extension contract and custom fields (ADR-0028), menu manager, responsive image derivatives (ADR-0029), redirect maps, lossless portable dump/import, a controlled foreign-blog adapter (ADR-0030), and design-aware autosave/live preview (ADR-0027).

Reusable-block authoring shipped: the section-kind gallery is now a tested contract — nine bundled kinds (including quote, FAQ, CTA and image gallery), both themes, admin field suggestions and extension-added kinds. Milestone 6 is closed: the comments contract shipped (ADR-0031, providers as extensions, consent-first) and the versioned JSON content target now accompanies every opt-in build (Content API). Milestone 7 is underway: ADR-0032 phase 1 shipped — enumeration-safe password reset over a pluggable mail-transport contract (smtp baseline; extensions carry passwordless provider APIs). Phase 2 shipped too — ADR-0032 is accepted: review-requested and published notifications, localized per recipient. TOTP 2FA shipped (ADR-0035). Milestone 7 is closed: pluggable email with enumeration-safe reset and notifications (ADR-0032), TOTP two-factor with per-role enforcement (ADR-0035), signed on-publish webhooks (ADR-0036) and cms doctor. v0.2.0 is on PyPI. ADR-0034 phase 1a is in: the locale type opened — validated tags behind the old enum surface, with Language.register as the pack entry point. Phase 1b is in: language packs work end to end — an extension's pack makes its tag a full content language (config, build, labels, dates, RTL direction on the markup). The multilingual bar is explicit now — every language is a pack, the bundled five included, and no admin surface may grow horizontally per language (content lists show a constant-width coverage summary). The bundled five now live entirely in their packs (no language data outside packs). The source language is configurable now (any pack tag at the URL root). RTL is end to end now: both themes and the panel chrome use flow-relative CSS only, conformance-tested so no physical property can return. The panel's languages come from packs now too — catalogs live in the packs, the switcher lists every activated pack with a catalog, and the editors follow the project's configured language set. ADR-0034 is fully executed now — the pack authoring guide is published (Language Packs), sardine-lang-<tag> naming is granted, and CI drives an RTL build through the accessibility gate on every push. ADR-0037 is accepted: sections gain unbounded translatable items, Markdown fields and long-form page bodies — the block-soup editor model is rejected in favor of structure the validator can see. The 2026-07-21 product review reset the direction: the queue now lives in the issue tracker (one issue per capability, acceptance criteria included), prioritized P0 — usable by a non-technical editor (page-editor UX, onboarding wizard, search, bulk actions, translation queue, calendar, audit log) — through P3. A capability is done only when it is usable in the admin, tested end to end, themed, localized, documented and on the demo; a contract without a usable implementation never counts. ADR-0037 closed vertically (#126): items, Markdown fields and long-form pages are usable in the admin, rendered by both themes, exercised by the seed and the public demo, and proven by a behavioral end-to-end test — the first feature shipped under the new definition of done. The page editor now speaks editor, not framework (#127): block gallery, auto keys, duplicate, hide/show, delete with undo, drag reorder. The #127 evidence classified the dominant friction as start/understand/complete — onboarding (#128) went first: the browser now sets up an empty instance end to end. The deployment slice landed too: publishing is a guided choice with persisted target and clear go-live feedback. Global admin search shipped (#129, ADR-0038): one box on every screen, grouped results in every language, measured far under the 300 ms budget. Bulk actions shipped (#130): multi-select on every content list with per-entry rules and a per-entry outcome report. The translation queue shipped (#131). The editorial calendar shipped (#132). The P0 queue continues (scheduled unpublish #133, audit log #134, dashboard #135); #127/#128 stay open for human confirmation sessions — the full map lives in the repository's docs/ROADMAP.md. Milestone 8 opens with ADR-0034 (written): tag-based locales, contributable language packs and RTL/LTR text direction — languages are data, never schema; execution is phased (core, builder/themes, admin, ecosystem).

Beyond M7 the scope is now written down as two further horizons. Milestone 8 — editorial power and content depth: bulk actions, admin-wide search, scheduled unpublish, an editorial calendar, an audit log, custom taxonomies, content relations, media crop/focal point and WebP/AVIF derivatives, an embeds contract, a forms contract and per-entry SEO controls. Milestone 9 — platform and ecosystem: a privacy-first analytics contract, external review links, incremental builds and a published ecosystem catalog. Arbitrary locale sets and SSO/OIDC are recorded as post-1.0 architectural decisions. The full capability map with per-item status lives in the repository's docs/ROADMAP.md; ADR-first items start with their decision record, as always.

M7 — Operations

Email/notifications (password reset, review requests), TOTP two-factor, on-publish webhooks, cms doctor, documented backup/restore and scheduled-build recipes.

1.0

M5–M7 shipped, admin stable, two production deployments beyond the original site, a deprecation policy on PyPI, and every conformance suite documented as a public contract.

Clone this wiki locally