Use this reference when you need a precise location. It is a current directory-reading contract, not a claim that every historical site has already migrated to this shape.
Site root
| Path | Purpose |
|---|---|
.route/web | Declares that the blocklet has a Web entry for the local or published runtime |
.web/site.yaml | Site-level scalar configuration: locale, SEO, template/theme values, and related settings |
.web/tokens.json | Light/default design tokens plus optional dark overrides |
.web/redirects | Redirect rules in its own line-oriented file form |
.web/template/logo.svg | Site logo asset |
.web/components/<name>/ | Reusable site presentation component |
.web/themes/ | Local theme material, with separate precedence rules from shared-library fallback |
layouts/<name>.aup | Named object layout, selected by a content record's layout: <name> front matter; it does not create a route |
Pages
| Path | Purpose | ||
|---|---|---|---|
pages/index/ | Home-page entry point | ||
pages/<name>/layout.aup | Default page layout source | ||
pages/<name>/layout.<locale>.aup | Locale-specific layout source when a layout genuinely differs | ||
pages/<name>/seo/title / description | Default page metadata | ||
pages/<name>/seo/title.<locale> / description.<locale> | Locale-specific page metadata | ||
pages/<name>/sources/<source> | Content source path for that page scope | ||
| `pages//sources/ | .limit | .filter` | Optional source selection controls |
The layout lookup order is locale AUP, default AUP, locale JSON, default JSON, then convention/default layout. New source should use the AUP form unless a verified compatibility consumer requires JSON.
Content objects
| Path | Purpose |
|---|---|
content/<type>/<slug>/content.md | Default reader-facing body and front matter |
content/<type>/<slug>/content.<locale>.md | Locale-specific body |
content/<type>/<slug>/layout.aup | Object-specific layout when an object needs one |
content.md wins over compatible index.md naming when both exist. Front matter has higher metadata precedence than sibling field files. A record can select either its own layout.aup or a named layouts/<name>.aup with layout: <name>, not both. Keep body/object identity here rather than copying it into a page layout.
Locale support files
.aup/locales/*.json can provide a compatibility locale fallback. A new multi-locale site should explicitly declare its supported locale and locales in .web/site.yaml, then use locale variants beside the thing they override instead of duplicating the whole tree.
For meaning rather than paths, read Understand a site directory. For route effects, read Routes and locales reference.