← Project Register

Acc.

2026.05

This Register

This site — a register-themed personal site and portfolio, built plain-first — routes and schema before content, content before layout craft.

Role
Sole developer
Medium
Astro · TypeScript · Tailwind CSS · MDX
Acquired
Status
ACTIVE
Extent
44 commits · 2 months
Condition
Active, mid-build. The register, record pages, colophon, contact, OG image generation and the schema guards are live, and the site is now indexable — the blanket robots disallow and the noindex tag came off on 2026-10-14, once the last placeholder field was gone. Still unbuilt: the writing section, a /now page, and an RSS feed.
History
  • — Repository initialized from the Astro starter.
  • — Phase 0 shipped: tokens, Tailwind theme wipe, content schemas, font pipeline.
  • — Phase 2a shipped: routes, register, record and accrual pages, before any real content existed.
Links

The site cataloguing itself, which is recursive and unavoidable — a register of works has to include the register. The build ran deliberately out of the usual order: routes, schema and a document shell before any real content existed, on the theory that a layout designed against placeholder text produces the same section shape everywhere, because there’s nothing particular to respond to.

The token system came first. Tailwind’s default scales are wiped to initial, which makes bg-slate-800 a build error rather than a convenient shortcut; two self-hosted faces and no third; no gradients and no box-shadow token in any of the four shadow namespaces, so a shadow is not discouraged but inexpressible. Six spacing values named by intent instead of by number.

The content layer checks itself rather than trusting the author. The record loader throws on a reused accession number or on a directory name that disagrees with its own frontmatter — either one means there are two answers to “which record is this.” The article loader injects each note’s parent accession before validation, so it arrives as a typed field instead of a path re-parsed in a template. Almost everything ships static: OG images render at build through Satori and resvg, the sitemap is generated, and no route serves client JavaScript. The exception is the register itself, which renders on demand so the GitHub panel can be fetched server-side — one function in an otherwise static site, cached five minutes at the edge.