How this site is built
Each note on this site is a markdown file in a git repo. A small Node script turns them into HTML pages. GitHub Actions runs the script when I push, and GitHub Pages serves the result.
The script does a few useful things beyond converting markdown. It builds
the index page from each note's front matter, gives every heading a stable
anchor, and writes the feed and sitemap. Notes marked draft: true are
built but unlisted, so I can read a draft at its real URL before anyone
else can find it.
A note starts like this:
---
title: How this site is built
date: 2026-06-11
topics: [meta, css]
---
Styling comes from modest-ui, a small CSS library I maintain.
Custom elements drop straight into the markdown. This one is a
<terminal-window>:
$ git grep -ci 'flavour' repositories/FlavourRepository.ts:9 services/menu/MenuService.ts:14 apps/sundae.shop/components/flavour-card.tsx:6
The component ships no JavaScript of its own. The build treats the text inside the tag as literal, escapes it, and a few lines of CSS draw the window. The only scripts on the site are analytics and a small dark-mode toggle. When a component needs real behaviour, a small script comes with it, and the page keeps working if that script never loads.
I wanted something I could write from my phone. Commit a markdown file, and a minute later it's published. That constraint shaped most of the decisions above, and so far it has held.