Ask yourself what a CMS actually does for you: logins, a database, a text editor that fights you, and a "publishing" button that takes three seconds. Now ask what a plain markdown file does: it sits in a folder, waits to be written, and never gets in the way.
We chose the folder.
How the pipeline works
Every post starts life as a .md file in the markdown/ folder. A small script reads it with gray-matter, walks the frontmatter, and writes a compiled version into blogs/ — ready for Next.js to render.
# One-shot conversion of every source file
npm run blog:convert
# Watch mode — edit, save, it converts itself
npm run blog:watch
The script does the boring work so writers never have to think about it:
- Slugs — derived from the title, deterministic and URL-safe
- Excerpts — stripped from the first 160 characters if you don't write one
- Reading time — computed from word count (220 wpm, the honest number)
- Timestamps — from frontmatter, falling back to the file's mtime
Why markdown wins
A CMS is a walled garden with a login screen. Markdown is a plain-text file that outlives every platform it's ever written on. It diff reviews in Git, moves with the repo, and renders through react-markdown before it ever touches a browser.
Writers don't need approval workflows. They need zero friction between thought and publication.
The extra mile it pays for
Because posts are just files, they're first-class citizens of the site — not a third-party collection we poll. The sitemap picks them up automatically. Drafts are a frontmatter flag (published: false), not a hidden database row. Reviews happen in pull requests, in plain diff view.
If a website reflects how a studio actually works, this blog is our truest page yet. The pipeline isn't a tool — it's a philosophy: everything expensive about publishing, automated; everything valuable, owned.
Drop a file in markdown/. Watch it become a post. That's the whole demo.







