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.

