~/connor.meador
← back to build log
6 min read

Shipping 3 Next.js sites in under 60 days

The actual weekly cadence, the stack I never changed, and what made the difference between week-1 demo and week-2 launch on every single project.

shippingworkflowNext.jsClaude Code

This spring I left RIT mid-semester and took on three real clients in two months. By the end of the second month, two sites were live and one was in client review. Solo, end-to-end, with Claude Code as my primary IDE.

People keep asking how. Here's the honest version.

The cadence is the system

Every project ran the same week-by-week shape. I didn't invent it per client; I picked it before I scoped a single project, and I kept it on every one of the three.

  • Day 1–2: brief, wireframes, hand-written copy outline. No code yet.
  • Day 3–7: a deployable preview on Vercel that the client can click through. Marketing copy is rough; CTAs land; mobile is responsive. The goal is a clickable thing, not a finished thing.
  • Day 8–14: client review, content edits, polish, performance pass.
  • Day 15 onward: ship.

If the preview misses the end of week one, something is wrong — either the scope is bigger than I sold or I'm being too precious. By week three on any of these, I was already in iteration mode, not build mode.

One stack, picked early, never changed

Next.js 16 App Router, React 19, TypeScript strict, Tailwind 4 (CSS-first @theme block), Vercel. Same for every project. That's the most underrated speedup of the three.

Switching stacks per project is the silent killer of solo shipping. Every "let's try X for this one" costs me three days of figuring out X's edge cases — three days I didn't have. I picked a stack that handles marketing sites, auth, AI features, and admin dashboards inside one codebase, and I refused to leave it.

Auth got Supabase. Payments got Stripe. Email got Resend. CMS got Sanity when content needed editor handoff. All four picked once, kept everywhere.

Claude Code is the leverage, not the magic

The thing AI-assisted shipping actually unlocks is not "the LLM writes my code." It's that I can hold a whole project in head, refactor across files in one pass, and skip the part of my brain that used to write boilerplate.

Concretely: when I add a new feature on my-place-lounge, I describe what I want — the route, the auth check, the database read, the form, the validation, the success state — in one prompt to Opus 4.7 (1M context), and the file edits come back in the same shape I'd have written by hand, just faster. Sonnet 4.6 handles the day-to-day. Local Ollama handles typecheck-fixer tasks where the model just needs to read the error message and propose a one-line fix.

That's the loop. AI does not replace the architecture or the taste calls; it removes the typing.

What broke

Every project hit something Claude couldn't one-shot. On my-place-lounge it was three-tier RBAC — the obvious "if user.role === 'admin'" pattern shipped, but the right answer was a middleware that checked role + ownership in one place. I had to back the model out of three wrong attempts before we agreed on the shape. On mod585 it was a Cloudflare-vs-Vercel canonical interaction I had to debug live. On Business Therapy it was a CSP that silently broke a third-party script.

Each one was a half-day. Without the model I'd have lost a week to each. That's the actual delta.

What I'd tell someone trying to do this

  • Pick the stack once. Resist exotic per-project framework calls.
  • Ship a clickable thing by end of week one or admit the scope is wrong.
  • Use the model to skip typing, not to skip thinking.
  • Lighthouse pre-merge on every PR. The audit is the rigor receipt.

Three sites in 60 days is not magic. It's the same cadence applied three times.

// hire me

Available now for full-time, contract, and freelance work. Reply within 24 hours on weekdays. Best fit: 2–8 week Next.js builds, AI / chat features, marketing sites that need to launch and rank.

Start a project →