• Switch to Warm
  • Switch to Cool
  • Workspace
  • Projects
  • Notes

Workspace

This site, describing itself — a documentation-first personal engineering site with recorded architectural decisions, three primary surfaces, and a build-time content model.

Problem

Most personal engineering sites are built once and left static — a resume rendered as HTML, updated rarely, with no real process behind the pages beyond “add a project, ship it.” I wanted something that behaved like an actual engineering product: planned before it was built, with every architectural decision recorded and justified, not just implemented and forgotten.

Approach

Workspace follows a strict documentation-first workflow: vision and roadmap first, then Architectural Decision Records for anything foundational (rendering stack, theming model, navigation architecture), then per-surface specifications derived from those decisions, and only then implementation. Nothing gets built before it’s been decided and written down — and every decision that changes later gets a new, superseding record rather than a silently edited one. As of this writing, that’s 5 accepted ADRs and 10 specifications governing a site with three primary surfaces.

The site itself is Astro-based with Svelte islands for the handful of things that need real interactivity (a command palette, a theme switcher, search), content modeled as typed Markdown/MDX collections validated by Zod schemas, and a build-time content linter enforcing structural rules schemas can’t express — mandatory narrative sections, singleton content caps, architecture-diagram requirements. Development was AI-assisted throughout, but every non-trivial architectural choice was proposed, reviewed, and only then written into a decision record before any code followed it.

Tradeoffs

Documentation-first has a real cost: every new surface or feature (a command palette, a color scheme system, pagination) started with a planning session before a line of code was written, which is slower than just building. The payoff came on the second and third pass — retrofitting a color-scheme system onto tokens that were designed for exactly that swap, or adding search without touching either surface’s content model, cost far less than it would have on a codebase built ad hoc.

The other tradeoff is scope discipline: several ideas (a fourth base palette, an OS-window aesthetic, a public activity feed) were deliberately rejected or reversed once built, specifically because the site’s own guiding principle is that the development-environment metaphor is an accent, never the backbone. Saying no to those ideas, in writing, mattered as much as saying yes to the ones that shipped.

Architecture

The Application Shell owns navigation and layout for three primary surfaces, each built on the same content foundation and sharing a common infrastructure layer beneath them.

Flowchart: Application Shell sits above three primary surfaces — Hub, Projects, and Notes — reached via the destination switcher. Hub holds a singleton Framing Statement, Projects holds Narrative/Index tiers, Notes holds five content types; all three rest on a shared Content Foundation of Content Collections (MDX + Zod schemas) validated by content-lint.mjs. A separate Shared Infrastructure cluster — Pagefind Search, Build-time GitHub Data Fetch, and Color Scheme Tokens — connects to the Shell and to Projects and Notes.Flowchart: Application Shell sits above three primary surfaces — Hub, Projects, and Notes — reached via the destination switcher. Hub holds a singleton Framing Statement, Projects holds Narrative/Index tiers, Notes holds five content types; all three rest on a shared Content Foundation of Content Collections (MDX + Zod schemas) validated by content-lint.mjs. A separate Shared Infrastructure cluster — Pagefind Search, Build-time GitHub Data Fetch, and Color Scheme Tokens — connects to the Shell and to Projects and Notes.

Outcome

A statically-built, content-driven site with three primary surfaces, build-time search and GitHub data fetching, a working theme system, and a documentation trail — vision, roadmap, decisions, and specs — that explains every structural choice on its own, without needing this write-up to make sense of it. The repository is public as a template: the same structure, stripped of personal content, that anyone can clone and fill in with their own identity.