Understory
A Rust-based static site generator that I built for Obsidian-flavoured digital gardens, after a couple of years of wrestling with Quartz's plugin ecosystem. This site is built with it.
TL;DR
- Single Rust binary
- Wikilinks, backlinks, callouts, marginalia, graph view as first-class features, not plugins
- pagefind linked in as a Rust library, not shelled out as a subprocess
- Frontmatter
date:is the canonical date; git is a fallback - Pre-1.0; works on my ~1000-page vault, but has rough edges
Why a new SSG?
I'd been on Quartz user for several years, but it was getting slooooow to rebuild my notes, and updates with my customizations were a pain. I wanted something with a slightly different philosophy:
- Clean separation of tools from the content it works on
- Nix-friendly
- Fast to live-rebuild for local edits1
- Features I was missing baked in (e.g. dialogues)
Status
Pre-1.0. Works well enough that I run my own ~1000-page vault through it (the one you're reading right now). Bugs and missing features land on me — which is the point. When the vault wants something the renderer can't do, I change the renderer.
Obsidian's broader callout vocabulary is currently a thin layer — only GFM-recognized kinds ([!NOTE], [!TIP], [!IMPORTANT], [!WARNING], [!CAUTION]) get full styling. [!QUOTE], [!INFO], [!ABSTRACT], etc. fall back to plain blockquotes for now. On the list.
Note
Naming: "Understory" is both the SSG and this site. Context usually disambiguates; when it doesn't, I'll say "the SSG" or "the site". I've considered making a sharper distinction in naming, but I don't know that it matters that much at this stage and if anything the site name will change not the SSG