A site
config.lima what the site is and how it is built (config.md)
AGENTS.md notes for a coding agent, which CLAUDE.md imports (init.md)
content/
articles/ the folders of the content, each a root: articles, essays, pages, notes
[first-steps]/ a bundle: one page, its files, its languages
first-steps.md the page in the site's default language
desk.jpg a file the page names
de/erste-schritte.md the page in German
@travel/ a collection: bundles that belong together, such as a series
[lisbon]/lisbon.md
pages/
[about]/about.md
@errors/[404]/404.md the error pages, at /errors/404/
meta/
persons/ada.lima a person (themes.md, "Persons"), and other Lima the pages refer to
theme/ the site's theme (themes.md)
.hadley/ what hadley builds and caches; not part of the site
Bundles
A bundle is a folder named by its id in brackets, [first-steps]. It holds its page in the site’s default language, <id>.md; the same page in another language in a folder named after the language, de/<slug>.md;
and the files its pages name, pictures and downloads. A file of the bundle that no page names is not published.
A file whose name is all capitals, such as
README.md or NOTES.md,
is no page. An id names one bundle across all roots and languages; a second bundle with that id stops the build.
A file _<name>.md beside the page, or in a language’s folder, is a variant: another page of the same piece, at /<name>/ (/de/<name>/ in German), with the id <id>_<name>. It shares the comments of its bundle’s page, needs no publishFrom, and templates read its bundle’s page as mainArticle (themes.md).
A page is linked by its id, [about this site]($about), in whatever language it is read: the link leads to the version of its language.
Bundles can also come from another git repository, at a commit config.lima names (sources.md).
Roots and types
The folders of content/ are its roots. A root gives its pages their type, its name without the plural s:
| Root | Type | |
|---|---|---|
articles/ |
article | dated; in the home page’s list, the feed and the search; an og image when the site makes them |
essays/ |
essay | as an article |
pages/ |
page | a page of its own, listed only where a navigation or a template names it |
notes/ |
note | dated, a short page of its own; in templates’ noteList, not in the home page’s list or the feed; a note may also stand alone as a .md file, in a collection too, and names no file then |
The front matter’s type gives a page another type, template another template; templates of config.lima gives a whole root one (config.md). Without either, a page’s template is its root’s type: templates/article.chase.
Collections
A folder named @name
in a root holds bundles that belong together. Two or more listed articles or essays of a collection are a
series: their templates read them as
seriesData, in the order of their dates. @errors holds the error pages, which no list, sitemap or search shows: [404] for a page that is not there, and [503] for a site under maintenance (config.md, maintenance). An error page’s address is hadley’s, /errors/404/ and /de/errors/404/, as a server finds it by its number (deploy.md); its front matter takes no urlPath.
A server shows it at whatever address failed, so its images and files stay in its bundle, but its HTML names
them from its own URL path (/errors/503/loft-960w.webp), never beside it.
Languages
The site’s languages are the blocks of site: in config.lima, its default language site.default.language.
A page in the default language lies in the bundle, in another language in the bundle’s folder of that language.
Its URL path is its file’s name,
/first-steps/, and /de/erste-schritte/ in German; a note’s lies under notes/, /notes/first-issue/ and /de/notes/erstes-issue/. The front matter’s urlPath sets another one.
The states of a page
status |
Dev build | Publish build |
|---|---|---|
published (default) |
written, listed | written, listed, linked |
with a publishFrom still to come |
marked as scheduled | not written until that day |
draft |
written, marked | not written; a link to it is left out |
seed |
written, marked | not written; an idea, not yet a draft |
archived |
written, marked | written under its URL, linked and listed nowhere, not indexed |
Categories and tags
A page’s category is one word; the theme names it in each language (categories in its i18n files), and config.lima may name the words a page may use (metadata.category.allowed). tags is a list. Templates read the pages of each as site.taxonomy.