‹ Home
This site
How this site is built.
The stack, the workflow, and the decisions. The repo holds every experiment in the Lab, including the ones that didn't make it.
- Framework
- Next.js 15 (App Router), React 19, TypeScript. Every page is static at build.
- Styling
- Tailwind 4 with a six-token palette: background, foreground, two greys, a hairline, a fill. One serif (Instrument Serif) for the story, Geist for everything else.
- Motion
- CSS transitions gated on an html.js class set before first paint, so the server-rendered page is complete without JavaScript. Word-stagger headlines. 4–6% scroll drift on cover images. Reduced motion renders final states.
- Images
- The previous site's export (136 files) was cataloged by project, then web-sized by a script with macOS sips into public/img. Captions state only what is known.
- Content
- Typed content modules. Career dates and claims live in one locked file with ground rules in its header: no vanity stats, clients never presented as employers, nothing fabricated.
- The Lab
- The 3D city, the studio, the line, and the room are full experiments kept in the same repo and mounted on their own routes. The agent patterns are React with a scripted model. The live demo is a route handler streaming from the Anthropic SDK, grounded on the same content files that render the pages.
- Workflow
- Designed and built with Claude Code and Codex in the loop: the agent reads the repo, proposes, builds, verifies in a browser, and commits. I direct, judge, and cut. Several whole directions were built and thrown away in a day each.
Source is private for now.
Read the build log