ADR 05: Own CMS over Sanity and friends
Why we did not adopt a headless CMS product.
Status: decided (2026-07-17)
Context
Question raised: should we use Sanity or an open-source headless CMS (Strapi, Payload, Directus, Decap) instead of our own?
Decision
Keep the git-based CMS as the fleet standard.
Reasoning
- Headless CMS products store content but do not render sites. Our hard problem is mapping content into existing legacy static markup, which no product ships and our system already solves.
- Per-site or per-seat pricing across 30 client sites reintroduces exactly the recurring cost this project exists to eliminate.
- Our data is portable: items.json plus a schema per collection. Migrating to any product later is an export script, so choosing simple now costs nothing.
- Real weaknesses accepted: no real-time collaboration (mitigated with revision guards), custom code we own, GitHub rate limits at extreme scale.
Revisit when
A greenfield, content-first build appears (hundreds of articles, many concurrent editors, localization). Adopt Sanity or Payload per-project in that case without disturbing the fleet.