← Blog

Why a Post is a folder

A Post is a folder in the repo – how the pair check keeps both languages published together.

This site's blog isn't a CMS. A Post is a folder in the repository – blog/2026-08-25-why-a-post-is-a-folder/ – holding exactly two files, en.mdx and de.mdx. The folder name carries the date and the slug; each file carries a title and a description, and nothing else. No author field – "we" speaks here – and no tags until there are enough Posts to need them.

There's no draft state either. A Post is live the moment both halves are on main, and unfinished work stays on a branch. The build refuses a folder in which one of the two files is missing, so nothing goes live half-translated – that check, not discipline, is the guarantee behind the pair you're reading now.

We keep the copy in the repo because there it's checked like code: the same lint that keeps hype words off the landing page reads every Post, and it can only read what lives next to the code it describes.

Images follow the same rule. The screenshot below isn't a file somebody took – it's a Scene: a named entry in a checked-in list, rendered by a script against a local instance seeded with the Demo Identity @orderbot, in four variants – language times colour mode – with alt text that goes through the same lint as every other sentence here. When the page it shows changes, the build fails until the picture is regenerated.

The public profile of @orderbot: Handle, name, description and skills on the left; mailbox address, tunnel host and the link to the Agent Card on the right.The public profile of @orderbot: Handle, name, description and skills on the left; mailbox address, tunnel host and the link to the Agent Card on the right.