All builds

Planning Beats Syntax: How I Built This Site

5 January 2026·4 min read
Next.jsTypeScriptTailwind CSSClaude CodeAI Tools

How I built a production portfolio site with Next.js, TypeScript, and Tailwind CSS using AI coding tools. No formal software engineering background.

Screenshot of Planning Beats Syntax: How I Built This Site
The build

A few weeks ago I decided I needed a portfolio site. Something that showed what I've actually built, not just a LinkedIn profile. Yesterday it went live on a custom domain. Total build time: somewhere between five and ten hours across short bursts of work.

The stack is Next.js, TypeScript, Tailwind CSS, and shadcn/ui components. I couldn't write any of that from scratch. I have no formal software engineering background. But I'm an analytical thinker who breaks problems down until they make sense.

Tech Stack

Framework

Next.jsReactTypeScript

Styling

Tailwind CSSshadcn/uiRadix UI

AI Tools

Claude CodeCursor IDE

Deployment

VercelGitHub

What I built

A single-page portfolio site. Smooth scroll navigation with active section tracking, hover-animated cards, impact metrics with before/after comparisons, a career timeline, and a contact section. Responsive across devices. Deployed on Vercel with a custom domain.

I built it using Cursor IDE and Claude Code. Claude Opus 4.5 handled most of the implementation, which burned through my monthly Cursor limit fast. Worth it.

The commit history tells the story. An initial scaffold, then dozens of iterative refinements. Component tweaks, content restructuring, performance passes. Normal for an experienced developer. Entirely new territory for me.

What went well

  • Rapid prototyping: I had a working site within the first session. That meant I could iterate on something real, not theoretical
  • AI as teacher: when I hit unfamiliar concepts, I asked questions. Why structure components this way? What are the tradeoffs? The models helped me get technical enough to make real decisions
  • Structured plans: writing markdown specs for each change (what's wrong, what it needs to do, what "done" looks like) made the AI output dramatically better

What didn't

  • Vague prompts produce vague results: whenever I was unclear about what I wanted, the output missed the mark. Precision in the brief was everything
  • Visual polish is slow: getting UI elements to look exactly right required many back-and-forth cycles over small details
  • Domain setup: linking the custom domain to Vercel was a frustrating detour unrelated to the actual build

Build Process

Idea

Define what the site needs to do

Markdown Plan

Structure requirements in detail

AI Builds

Claude Code implements the plan

Review & Refine

Check output, adjust, iterate

Deploy

Ship to Vercel

How the build actually worked

Planning mattered more than coding ability. That was the key insight.

Before handing anything to an AI agent, I needed to know what I wanted. Not vaguely. Specifically. What each section should contain, how components should behave, what constraints to respect. The clearer the plan, the better the output.

The pattern that worked

Create a markdown file for each change. Specify the component, what's wrong with the current state, what the new version needs to accomplish, constraints to respect, and what "done" looks like. Then hand that to the AI to implement.

I also used AI during the planning stage itself, not just for execution. I'd talk through every aspect of the build with Claude to pressure-test my thinking before committing to an approach. Ask it to poke holes in my ideas. Refine, then repeat.

Planning Workflow

The structured approach that made AI-assisted building work.

1

Define the problem

What does this need to do? Who is it for?

2

Structure requirements

Components, sections, content, interactions

3

Write constraints

Responsive, accessible, match animation style

4

AI implements

Hand the structured plan to Claude Code

5

Review & iterate

Check output, refine, repeat

Key takeaways

The biggest lesson from this build: for projects like this, the barrier has shifted.

The Inversion

Before

Hard

Writing code, configuring servers

Easy

Having ideas

Now

Easy

Implementation via AI

Hard

Planning, structuring, articulating

The hard part used to be technical execution. Writing the code, knowing the frameworks. For a portfolio site, that barrier is dramatically lower now. Programming becomes thinking at an abstraction level above syntax writing. It becomes system thinking, logic, analytical problem solving. Focusing on the problem to be solved, instead of the deep syntactic details of your chosen language.

That said, scope matters.

Know the boundaries

A portfolio site is not a payments system. It's not authentication infrastructure. The execution barrier lowers for certain categories of work. It doesn't eliminate the need for deep expertise where correctness and resilience matter.

My goal isn't to ship once and move on. It's to become technical enough to own what I build. Maintain it, debug it, and know when I'm out of my depth. This is a starting point. The next things I build will be more complex: automations, AI tools, eventually agents.

What I'd do differently

  • Start with content, not design: I spent time on component styling before the copy was final, then had to redo layout work when content changed
  • Commit more often: smaller, more frequent commits would have made it easier to roll back when something broke
  • Set up the domain first: getting deployment and DNS sorted before building would have avoided the mid-build detour
  • Write the brief before opening the IDE: every session where I started with a clear written plan went better than sessions where I improvised