2026-05-07

I shipped a Next.js 16 site to production in a day

One day, one repo, one production deploy. Here's what was on the plate and what actually went live.

#nextjs#vercel#neon#sd-ai-studio#stack-reveal

The brief

Old sandiegoaistudio.com was a stale Cloudflare Pages site — flooded studio photos, dead Claw Fest banner, no manifesto, no calendar bridge. Deadline was Wednesday May 7. I started Wednesday morning.

What shipped

  • / — manifesto landing. Hero, 5 beliefs, event family cards, calendar bridge, newsletter, hosts.
  • /meetups — 29 hand-picked SD AI events with public submission form.
  • Newsletter wired to Neon subscribers table, unique on (city_slug, email).
  • Favicon, OG image, Twitter card, Apple touch icon — all generated programmatically from one SVG script.
  • Deployed to Vercel preview at sd-ai-studio.vercel.app.

Time: about 8 hours of focus work, broken across the day.

The stack

  • Next.js 16.2.4
  • React 19.2.4
  • Tailwind v4
  • Drizzle ORM 0.45.2 + Neon HTTP serverless
  • Bun lock, no npm/yarn/pnpm
  • Vercel bluebarn team, Neon misty-pine-50271096 project

Cost so far: $0. Both Vercel and Neon are on free tiers that will hold for a long time at this traffic level.

What I cut

  • Member tiers, paid subscriptions, Discord auth — premature. No audience yet.
  • AdSense, sponsorships — kills the "owned hub" thesis the moment you turn it on.
  • Search — 29 events don't need Algolia.
  • Comments — X replies will do.

What broke

The Vercel CLI git-link step failed silently — preview deploys fine, but auto-deploy on push needs a one-click in the dashboard. Logged it as a runbook item, didn't block the launch.

Resend domain verification not done yet — newsletter form persists to DB but no welcome email fires. Same call: ship the persistence layer, defer the email.

What's next

DNS cutover at Cloudflare. Root A → 76.76.21.21, www CNAME → cname.vercel-dns.com. Old wrangler graveyard keeps serving until DNS propagates — graceful failover.

What you can steal

If you're trying to ship a brand site fast:

  1. Use a Next.js + Drizzle + Neon HTTP starter. The HTTP driver doesn't need a connection pool — works in serverless cold starts without setup.
  2. Generate web assets programmatically. Sharp + a SVG template = favicon, OG, Twitter card, Apple touch icon in 200 lines of code. No Figma round-trips.
  3. Defer email until you have an audience. DB persist first, welcome email second.
  4. Don't build comments. Don't build search. Don't build login. The bar for adding any of these is "the site fails without it."

Cost discipline at this scale isn't about saving money — it's about not building things that haven't earned their slot.