Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Project Sites

plinth-project builds static project landing sites from a plinth-project.toml file. Each [[pages]] page renders to {slug}/index.html (index.html for the home page), plus style.css and any [[assets]].

plinth-project build --config website/plinth-project.toml --out public

Site metadata

FieldTypeDefaultDescription
titlestringrequiredSite title, shown in the nav bar and tab
descriptionstringrequiredFallback <meta name="description">
base_urlstring"/"Base URL used for absolute links
canonical_domainstring—Canonical domain (e.g. "example.com"). Used for absolute sitemap URLs and the GitHub Pages CNAME file
footer_notestring""Text displayed in the site footer
primary_personstring—ID of a [[people]] entry shown as the site author

Machine-readable output

Every build also emits companions for search engines and LLM traversal:

FileContents
sitemap.xmlOne <loc> per page; absolute when canonical_domain (or an absolute base_url) is set, path-only otherwise
robots.txtAllow: /, plus a Sitemap: line when the origin is known
llms.txtSite title/description, every page (title, URL, description), and every [[projects]] entry with its source/demo/links
projects.jsonThe [[projects]] table verbatim as JSON
CNAMEThe canonical domain, only when canonical_domain is set

Set canonical_domain for any site published to GitHub Pages: the CNAME file flows through the Pages artifact automatically, so the custom domain survives redeploys with no workflow changes.