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.
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
subscriberstable, 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
bluebarnteam, Neonmisty-pine-50271096project
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:
- Use a Next.js + Drizzle + Neon HTTP starter. The HTTP driver doesn't need a connection pool — works in serverless cold starts without setup.
- Generate web assets programmatically. Sharp + a SVG template = favicon, OG, Twitter card, Apple touch icon in 200 lines of code. No Figma round-trips.
- Defer email until you have an audience. DB persist first, welcome email second.
- 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.