Skip to content

← Blog

This Blog Is Server-Rendered Markdown, Not a Headless CMS Bolt-On

Jun 4, 2026 · 2 min read

The blog you're reading is part of the same app

There's no separate CMS behind this post, no third-party service being called to fetch content. Posts are written in Markdown, stored alongside every other model in the same database, and rendered through the same backend that runs the rest of the product.

Rendered once, not on every request

Markdown gets converted to HTML a single time — when a post is saved — and the resulting HTML is cached on the row itself. Every visitor after that reads pre-rendered HTML directly, with no markdown parsing happening on their request, and no client-side JavaScript needed to turn Markdown into something readable.

Defensive by default

The renderer treats every post's Markdown as content that has to survive being slightly wrong without breaking the page around it — a missing closing tag or an unusual character shouldn't be able to take down a post, let alone the page it's embedded in. Reading time is calculated from the same rendered HTML at the same time, so it's never a stale, hand-typed estimate.

Why not just use a headless CMS

A separate CMS means a separate system to keep available, a separate API to fetch from, and a separate set of credentials to manage — for content that changes far less often than the product itself does. Keeping posts as rows in the same database, rendered by the same backend, means one less service that has to be up for the blog you're reading right now to load.