This is the third version of my portfolio. Version one was designed in Figma and built on Wix. Beautiful in concept, completely constrained by the platform, and a portfolio for a designer who is artistic — not one who also builds. Version two was made in bolt.new, quickly, before I knew how to direct AI tools properly. It looked fine. It still told the wrong story.
The core claim is this: the handoff between design and engineering is where details go to die. I skip it. Not because teams can't make great things, but because my practice runs on the same brain making both calls. The portfolio needed to prove that, not just say it. So I designed, built, and shipped it myself.
I started with Claude Chat: research, positioning, a full PRD with every visual and copy decision made before a line of code was written. Then Claude Code to build it, testing in the browser as I went. Not a developer who can design. Not a designer who dabbles in code. A designer who ships.
PRD-first meant the build was execution, not exploration. Design decisions were already made before I opened any code. That separation kept everything clean.
Writing the physics iteratively in the browser let the behaviour emerge rather than be prescribed. The spinning-top connection wasn't planned. It was discovered. The best details on the site came from following what happened, not forcing what was intended.
The specificity test for copy. Any line that could have appeared on another designer's site got rewritten until it couldn't. Slow and uncomfortable. Worth it.
A password-protected admin dashboard built with Supabase Auth and Postgres. Every project, case study, quote, and Currently Into card editable from a single interface, no code required.
Project images through Supabase Storage with drag-and-drop upload. Gallery order controlled per-project. No more mapping image URLs by hand.
Contact form submissions in a Supabase inbox: searchable, filterable, CV requests flagged. Someone reaches out, I see it in one place.