The Zola theme behind this site and behind auxdev.net. Editorial or monospace-accented depending on the persona, keyboard-friendly, light and dark, small enough to serve from a potato. No framework. With JavaScript off, everything still works except the command palette and the comment embeds.
Live demo at ttsigg.codeberg.page/basalt — screenshots, asciinema, KaTeX, and the comment embeds all run there.
What you get
- btop-inspired homepage panes with a live uptime clock and a
/nowpage driven by a singledata/now.json. - Command palette on
/, backed by Zola's built-in search index. ~3 KB, lazy-loaded on first keypress. Ctrl+K works. - Light and dark with no flash of wrong theme. Press t to toggle.
- Eleven shortcodes with full no-JS fallbacks: alert, collapsible, em, toc, image (float + lightbox), carousel, asciinema, katex, mermaid, project, pullquote, epigraph.
- Asciinema, KaTeX, and comment embeds lazy-load only on pages that use them.
- Mastodon and Bluesky comments, opt-in per post.
- Responsive images via Zola's
resize_image()with WebPsrcset. - MPA View Transitions in browsers that support them, gated on
prefers-reduced-motion. - Under 40 KB per page on almost every route, fonts included.
Two personas, one engine
The thing that took six rewrites is the persona system. Both consumer sites import basalt's SCSS aggregator once, then layer their own token table:
| Token | auxdev | timsiggins.com (this site) |
|---|---|---|
--font-text | Inter | Public Sans |
--font-display | Space Grotesk | Newsreader |
--ornament | ▍ ▍ ▍ | ⁂ |
--anchor-glyph | ❯ | § |
| Accent | terminal green | editorial indigo |
| Pullquote chrome | mono italic, centered | serif italic, large |
Same templates, same bundle, two identities. Adding a third consumer site is a config.toml away.
Tech
- Zola 0.22.1 for the static generator and built-in Sass.
- Tera for templates, because Zola ships Tera.
- Sass with CSS custom properties for theming.
- Vite + Rollup for the JS bundle. Output ships as a committed artifact so consumer sites do not need npm.
- Playwright for the cross-site visual-consistency suite.
Using it
Clone the repo, drop content into content/, point config.toml at yourself, run just setup then just serve. Production builds go to public/ via just build. File a Codeberg issue if you hit something weird.