Skip to content
FM Journal
ArticlePublished: 1 min readSample

Typed local content before a CMS

Starting a journal with typed data files and a small repository interface, so a database or CMS can arrive later without rewriting the pages.

A CMS answers questions a new journal doesn't have yet: who edits, how drafts are reviewed, how images are stored. Typed data files answer the questions it does have: what an entry is, and how pages read it.

The model first

Each entry has a stable id, a slug, a type, a status, categories, tags, dates and a translation per language. A translation is all or nothing: title, summary and body together, so a page never mixes an Indonesian title with an English body.

A seam, not a framework

Pages call content.list() and content.get(). Those two methods return published entries only, so drafts can't leak into a list, a feed or a sitemap by accident. Swapping the local implementation for a remote one changes one file.

Illustration: a document at the centre of three orbits, with dashed lines reaching out to small bodies.
ArticlePublished: 2 min readSample

Reading shared configuration at build time

Why every app in the ecosystem fetches one registry before it builds, and why a failed fetch should fail the build instead of falling back.