← knowledge.oriz.in

Markdown-in-repo only — no headless CMS, anywhere

decision cmscontentmarkdownmdxno-vendor-lock-inmonorepo

Markdown-in-repo only — no headless CMS, anywhere

Decision

Every site in the family stores all of its content as .md / .mdx files committed to that site's own GitHub repository. The build (Astro / Vite) reads the markdown at build time, renders to static HTML, and ships to Cloudflare Pages. No headless CMS sits between the writer and the repo. Decap CMS, TinaCMS, Strapi, Sanity, Contentful, Storyblok, Hygraph, Payload, Directus, Keystatic, Outstatic, Pages CMS, Front Matter CMS — all explicitly REJECTED.

User direction 2026-06-20: "Markdown-in-repo only (RECOMMENDED)" — locked.

Why

Why not the rejected options

Tool Why rejected
Decap CMS (formerly Netlify CMS) Adds a JS-heavy admin UI on top of git that does what git commit already does for free; abandoned-feel since the Netlify rebrand
TinaCMS Free tier caps at 2 editors / 1K Tina Cloud documents — fights never-hit-quotas; paid tier requires card
Strapi (Cloud) Hosted Strapi requires card; self-host fights [no-self-host] (we use only managed serverless)
Sanity / Contentful / Storyblok / Hygraph Hosted SaaS with free tiers that cap; require credit card upgrade path; introduce a content-API runtime dependency the static site doesn't need
Payload / Directus / Keystone Self-host or paid cloud; add a Postgres dependency we'd otherwise avoid for content
Keystatic / Outstatic / Pages CMS / Front Matter CMS All git-backed CMSes that wrap git commit in a UI — solving a problem we don't have (we like writing markdown in our editor)

Implications

Cross-refs