papyrus

Back

Feature config

Grouped feature toggles for Papyrus layouts.

Use one typed config object to disable optional layout and post features without copying theme components.

Base layout

Post layout

SEO and social metadata

Papyrus layouts emit the metadata a small public site normally needs: titles, descriptions, canonical URLs, Open Graph, Twitter cards, RSS discovery, and post JSON-LD. Hidden posts stay out of public discovery surfaces. Use explicit robots frontmatter when a direct page should emit directives such as noindex, follow.

Base path deploys

Internal URLs in shared layouts and list components go through withBase() and related helpers such as stripBase(), stripLocale(), getAssetPath(), and getRelativeLocaleUrl(). This keeps navigation, post links, RSS links, favicon assets, covers, tags, collection links, adjacent posts, project cards, and 404 suggestions working when Astro is deployed under a subdirectory.

Search, tags, sitemap, and robots

Public posts can be found through Pagefind search, tag pages, and optional per-tag RSS feeds. Regenerate the sitemap during every build so new posts, tag pages, profile pages, project pages, and collection routes are included automatically. Papyrus also includes a dynamic robots.txt route that reads the site URL, keeps crawl rules near site config, and points crawlers to the sitemap index.

Plugin contract

Community plugins stay small: they declare capabilities, optional feature defaults, and site-owned integration points. They do not mutate Papyrus internals. Routes stay native Astro pages in the consuming app unless a plugin explicitly documents a route capability.