The site's been growing, and with growth comes the need to tidy up before things get messy. Here's what we've been up to.

Component extraction

PageHeader.astro and TerminalLine.astro were living inline across multiple pages. Extracted them into proper reusable components. Same markup, same behavior — but now one source of truth instead of three.

Design system formalized

Created DESIGN.md — the full catalog of tokens, typography, components, layout, and interaction patterns. Everything from color ramps to the exact clamp() formula for fluid type. No more guessing what --space-4 means.

The rest of the bag

  • OG meta tags so embeds don't look like garbage
  • Styled 404 page (because you will hit a dead link)
  • Empty states for every data-driven view
  • a11y: ARIA landmarks, focus-visible, keyboard nav
  • Self-hosted JetBrains Mono (no more Google Fonts)
  • Fluid typography via clamp() — looks right at every viewport
  • Responsive breakpoints at 768, 1024, and 1440px
  • Touch targets at least 44px, prefers-reduced-motion respected
  • No-js fallback so the terminal aesthetic still lands
  • CSS containment for paint isolation
  • Button press animation that actually feels tactile
  • Security and cache headers locked down

Why now

Because every project hits a point where you either formalize the patterns or let entropy win. The design system was living in my head and scattered across files. Now it's in DESIGN.md where anyone (including future me) can read it.