01 — stories · entry 02
inside the story system.
how we built a content system with no CMS — just git, mdx files, and seven components.
a CMS is a bad trade. you get WYSIWYG editing but you pay with: another login, a hosted database, a separate permissions model, version control that isn’t git, and — over time — vendor lock-in that makes migrations brutal.
for a studio that writes maybe three posts a week, this trade is laughably bad.
so our content system has no CMS. it has three parts:
- mdx files in
content/stories/— markdown with jsx components mixed in. - seven section components — video, photo, photoGrid, textBlock, headline, quote, gallery.
- git — commits are the publish button. vercel deploys them.
seven components. no more.
writers asked for more components. we kept saying no. every new component is a decision writers have to make. the goal is for the content to be the interesting part, not the layout knob-twiddling.
here’s what you can do with seven:


side-by-side photos, for a before/after or a set of related frames. the
PhotoGrid takes an array — you can pass two images or twenty, the layout
adapts.
for a single image, use Photo. for a scrollable set, use Gallery. for a
motion moment, use Video.
just give me three more components and i’ll be happy.
we never gave them the extra components. they never came back to ask again. turns out the discipline helps.
end of entry 02.