Skip to content
Morlabs

Engineering · Dec 18, 2025 · 4 min read

Why our blog ships from TypeScript and not a CMS

Yes, this blog. Why we keep posts in TypeScript, what it costs us, and what we'll switch to (and when).

Mushfique Raiyan

Lead Full Stack Engineer

This blog you are reading lives in a TypeScript file. Each post is an object in an array, with a slug and a title and a body string. There is no CMS, no Markdown loader, no MDX pipeline, no headless contentful sanity datocms strapi.

This is intentional, for now. We post about once a month. Adding a CMS would mean adding a dependency, a build step, an editor login, a content review flow, and a place where things go stale. For ten posts a year, none of that earns its keep.

The line we will cross when this changes: when more than one person is writing weekly. At that point we will add Supabase as the backend, build a thin admin, and migrate the array. The blog post you are reading will be the last one shipped from a TypeScript file. Probably.

Like what you're reading?

Get one studio dispatch a month, no tracking pixels, unsubscribe in one click.

Subscribe
Chat with our AI AgentChat with our AI AgentChat with our AI AgentChat with our AI AgentChat with our AI AgentChat with our AI Agent