Content Model
Pages, collections, and taxonomy.
Dune's content model has three moving parts:
- Pages — one file per page, addressed by its directory path
- Collections — declarative queries (
@self.children,@page.children,@taxonomy.*) resolved at request time, not a separate content type - Taxonomy — free-form tag/category values in frontmatter, queryable via collections
A collection block looks like this:
collection:
items:
"@self.children": true
order:
by: date
dir: desc
filter:
taxonomy:
tag: [tutorial]
Themes read the resolved result from props.collection (single) or
props.collections (a named map, for pages that need several independent
lists — a landing page showing both "Recent posts" and "Recent talks",
for example).
Taxonomy values are indexed automatically, but HTML term pages are
authored content: a page with termPageFor: <term> (and usually a
@taxonomy.tag collection) becomes the listing for that term. Demo sites
generate these under /tags/{name}/ during demo:link.