A notebook-inspired personal publishing theme built with Astro. Not a blog theme — it draws on commonplace books, field notebooks, literary journals, and printed magazines, favoring typography and whitespace over decoration.
See AGENTS.md for the full design philosophy and current implementation reference.
- Content collections for essays, notes, and standalone pages, plus a
config-as-content
siteConfigcollection. - Obsidian-flavored markdown — wikilinks (
[[Page]],[[Page#Heading]]), image embeds,%%comments%%,==highlights==, and:::aside/:::annotationdirectives, powered by a native Sätteri markdown pipeline (not remark/unified). - Backlinks between notes, computed from wikilinks.
- Inline image galleries with a lightbox (GLightbox) for consecutive images in a post or note.
- A generic browse system (
/browse) driven entirely by an optionalmetaobject in frontmatter and abrowseconfig block — no hardcoded metadata keys. - Search via Pagefind's native Component UI.
- RSS and sitemap out of the box.
pnpm install
pnpm devThen:
- Edit src/content/siteConfig/config.yaml
— set your real domain (
url), author, navigation, and social links. - Set the matching
sitevalue in astro.config.mjs (required for RSS/sitemap to generate correct absolute URLs). - Add your own writing under
src/content/posts/,src/content/notes/, andsrc/content/pages/, replacing the sample entries there.
| Command | Action |
|---|---|
pnpm install |
Install dependencies |
pnpm dev |
Start the dev server at localhost:4321 |
pnpm build |
Build to ./dist/, then build the Pagefind search index and copy it into public/ |
pnpm preview |
Preview the production build locally |
pnpm astro … |
Run any Astro CLI command (astro check, astro add, …) |
- Fonts — the
fontsarray inastro.config.mjs. - Colors and typography —
src/styles/. - Browse dimensions (e.g. places, trips) — the
browsekey inconfig.yaml; each entry turns ameta.<key>frontmatter field into a browsable index at/browse/<slug>.