How I built this
I had hundreds of photos from a decade of travel sitting in folders doing nothing — semesters in London and Shanghai, a spring break backpacking through Italy and Spain, years of shooting street photography in New York. I wanted a portfolio that felt like a gallery, not a template. Something minimal where the photos could breathe.
I built the whole site with Claude Code in a series of conversations. I'd describe what I wanted — a masonry grid, a lightbox with keyboard nav, filtering by location — and iterate on the output live. The most fun piece was the location map: instead of pulling in Google Maps, Claude built a custom SVG visualization with dots sized by photo count across 16 cities. It's not geographically precise, but it tells the story at a glance.
The hardest part wasn't the code — it was figuring out where each photo was actually taken. Most had no location metadata, so I dug through years of Gmail flight confirmations and hotel bookings to reconstruct my travel history. Then I cross-referenced camera file numbers to place each shot: IMG_3560 through IMG_9568 were my London semester camera, IMG_0270 through IMG_2821 were Shanghai. Claude even caught two photos tagged as "Shanghai" that had European IMG numbers — one had a bag reading "Konica Minolta Business Solutions Spain" in the frame, confirming it was from Barcelona.
The stack is deliberately simple: Next.js, Tailwind, Cloudinary, deployed on Vercel. No UI libraries, no external map dependencies. What I learned is that the hard part of a portfolio isn't engineering — it's curation. Claude handled the code; I had to handle the taste.