Blog post
Content Modeling Decisions
How we picked which content lives in code versus the local CMS, and what each decision optimizes for.
Content modeling is mostly about deciding what should repeat. The shapes that recur become schemas; everything else stays hand-written.
The repeating shapes
Four collections earned their own schema:
blog/— short editorial pieces with a fixed publish cadence.case-studies/— structured customer write-ups withclient,sector, andservicesfields.announcements/— timely posts gated byaudience.docs/— ordered reference material with optionalorderfor sidebar placement.
Each one is a Zod schema in src/lib/content-source.ts. Adding a new field is a one-line change and an
edit to the Markdown frontmatter.
What stayed in code
Landing pages, the home, and any page where the layout is the content. Forcing those into a CMS would mean inventing a block system, and a block system always grows teeth.
The trade
Authors lose the ability to redesign marketing pages from Keystatic. In exchange, the editorial surface stays
predictable and the marketing pages stay fast to iterate on in code.