notes to self

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.