Most sites hide how they were made. This one tells you.
I keep a written record of how each thing was built: the documentation is part of the deliverable, not an afterthought. This page is that habit turned on the portfolio itself.
The stack
Most of this site is static. Next.js builds the public pages to plain HTML at compile time, so the portfolio itself runs no server, keeps no database, and asks nobody to sign in. There is one deliberate exception: a private, unlisted catalogue I keep for my own art, which signs in through Supabase and stores its records and photos there behind row-level security. It is not part of the public portfolio, and the rest of the site does not use it. React and TypeScript hold the structure; Tailwind handles the styling; Framer Motion and GSAP carry the motion. The words and the projects live in small JSON and Markdown files, checked by Zod every time the site builds: if the content is malformed, the build fails instead of shipping something broken. It is hosted on GitHub Pages, and once the checks pass, a change is live within a couple of minutes.
The type
Three typefaces, each with one job. Cormorant Garamond sets the serif crowns: the large titles that open each page. DM Sans, kept light, carries the body for calm reading. DM Mono handles the small uppercase labels and the metadata. All three are self-hosted at build time, so reading this page makes no outside font requests.
The world
The part you feel before you can name it: one continuous golden-hour desert that the whole site travels through. It opens at warm daylight and eases toward night as you scroll, cresting exactly as the footer arrives. Light mode is the daylight half of that world; dark mode is the night half: the same journey, told in each. It is decorative, hidden from screen readers, and it holds perfectly still the moment your system asks for reduced motion. The desert itself is generated: each vista begins in Midjourney, then I separate it by hand into the depth planes the scene travels through.
The quiet systems
A few details that repeat on purpose. The page titles wear an ember gradient: a warm rust-to-gold wash, with cool teal and moss variants so the warmth has something to lean on. Each project signs its own name with a signature hue from the same golden-hour family (terracotta for Flagstone, phantom cyan for Ghost Code, gold for the Prompt Library) and sits in a frame true to its medium: a phone, a browser window, a clean plate. Even the numerals are deliberate: lined up while they count, old-style once they settle into prose.
How it was made
The same way everything here gets made. I describe the problem to Claude Code and build in the open, reading the output and correcting it when it goes wrong. For the larger work, a team of agents does the heavy lifting, each with a defined role and all of them working from a written constitution, so nothing is decided by accident. Nothing ships until I have used it. Then I write down what broke, and what the next person will need to know.