PROCESS· 2 min read
The folder is the table of contents
There are two ways to express a content hierarchy. One is to tag every post with a category field and assemble a virtual tree. The other is to use real directories. We picked the second.
The convention
content/devlog/
engineering/
_folder.yml
read-only-on-purpose/
meta.yml
ko.md en.md ja.md zh.md es.md
pipeline/
_folder.yml
content-as-files/
meta.yml
ko.md
A directory holding at least one {locale}.md is a post; anything else is a folder. A folder's display name and ordering live in _folder.yml. There is no depth limit.
What it buys
- Edit by dragging — move a folder in the file explorer and the sidebar outline follows.
- Reviewable moves — a structural change shows up as one
git mvin the diff. - Nothing to sync — metadata and actual location cannot drift apart, because they are the same thing.
What it asks in return
Slugs must be unique within a section. URLs stay in the /ko/devlog/{slug} shape, so moving a post between folders never breaks a link. Folders are a map for the reader, not an addressing scheme.
This post is available in 5 languages. Switch from the header.