This site looked like a Figma file but behaved like one page, so I rebuilt it with real routes, a typed content model, per-page metadata and events, and shipped it with Claude Code.
Role
Founding Product Designer
Dates
2026
Team
Solo

The site is a Next.js 16 app on the App Router, written in TypeScript with Tailwind 4, a small zustand store for the canvas tools, framer-motion for the panels, and Redis behind the comment pins. It runs on Vercel.
The shell mimics Figma on purpose. The Pages panel is the navigation, the Layers panel is the table of contents for the case study you are reading, the Details panel shows the role, dates and team from the same content file the page renders from. Comments and drawings work on the canvas.
Underneath, every page is a real route. Case studies are typed content files with the role, dates and impact stated once, so nothing repeats. Each route has its own title, description and a generated OG image on the Figma-styled frame, plus a sitemap and robots file. Pageviews and events (case study opened, section reached, CV exported, outside link clicked) go to Contentsquare.
It was built with Claude Code from a written plan that lives in the repository, one pull request per phase, reviewed on Vercel previews. A content lint script fails the build on em dashes, filler phrases, a banned word list and any role string other than the one in the profile config.