GG.

Building My Portfolio with Claude

7 April 2026

I've been meaning to rebuild my personal site for a while. The old one was a single HTML file — clean, fast, but completely static. Adding a blog post meant editing code. Adding a project meant the same. It worked, but it didn't scale with how I wanted to use it.

So I decided to rebuild it properly. And I did the whole thing in one session with Claude.

The stack

The new site is built with:

  • Next.js (App Router) — server components, dynamic routing, clean architecture
  • Notion as a headless CMS — I write in Notion, it shows up on the site
  • Vercel for hosting — deploys automatically on every push to main
  • Cloudflare for DNS, email routing, and domain redirects

How the session went

I started with a rough idea: minimal design, Space Grotesk headings, dark mode by default, and a few pages — projects, writing, hotlist, about. I described what I wanted and Claude started scaffolding.

We hit a few snags along the way. The Notion SDK that installed was the wrong version (the MCP client, not the standard API). Databases weren't connected to the right Notion integration. The preview panel couldn't find npm on PATH. DNS records needed updating from GitHub Pages IPs to Vercel's.

Each time something broke, we debugged it together. Claude would identify the issue, suggest a fix, and we'd verify it worked before moving on.

What surprised me

I expected to write a lot more code myself. Instead, most of my time was spent making decisions — what the bio should say, whether to show pill chips or nav cards on the homepage (we ended up doing both), which sections to include.

The actual implementation — the Notion client, the dynamic routing, the theme toggle, the layout, the per-letter Google logo colours — that was all Claude. My job was to review, approve, and occasionally say "actually, let me rethink that."

What's live now

This post

This post was written and published through Notion — exactly the workflow I was building towards. I write here, it shows up there. No deploys. No code changes. No CMS dashboard to log into.

That's the whole point.