Every page is a document

The tree is the site. Routing, feeds and search fall out of it.

model

Every page is a document

A page is a document. A section is a document with children. The site root is a document too — this one is typed jun-home, which is why / renders as a composed front page instead of a list.

Slugs come from labels

Rename a page and its URL follows. The old URL keeps working, because renaming appends the vacated slug to the page's aliases and answers a 301 from then on. That is one write, not two, so nobody ever sees a half-renamed page.

Children are content

An empty body does not mean an empty page. A Journal renders its children as cards; a Links page renders them as rows; a Library groups them by reading status. Same documents, different view.

Nothing is dropped

Every renderer tolerates children created under another type. An uncategorised item shows under "Other", an undated one sorts last — never first, so it cannot displace real content at the top of a feed. That tolerance is what makes changing a page's type safe.