CASE STUDY

I Built a SaaS in 3 Hours Using Vibe Coding — Here's Exactly How

Hour-by-hour breakdown of building and shipping a real subscription product using AI tools.

May 3, 2026· 12 min read

I built a SaaS product called QuickBio — an AI-powered link-in-bio page builder — in one afternoon. Here's the honest hour-by-hour breakdown of what I built, what went wrong, and what I learned.

Tools used: Cursor (coding), Supabase (auth + database), Stripe (payments), Vercel (deployment).

The Idea

QuickBio: You paste your Twitter/X profile URL, AI generates a beautiful link-in-bio page from your bio, pinned tweet, and recent content. You customize it, set a custom domain, pay $7/month to publish.

Simple enough to build in a day. Clear enough to explain in one sentence. Priced low enough that the purchase decision is friction-free.

Hour 1: Scaffold the App

I opened Cursor and started with this prompt in Composer:

Build a Next.js 14 app called QuickBio. It's a link-in-bio page builder.

Stack: Next.js App Router, TypeScript, Tailwind CSS, Supabase auth
Pages needed:
  - / (landing page with hero, features, pricing)
  - /dashboard (protected, shows user's pages)
  - /create (form to input Twitter URL + customize)
  - /[username] (public bio page)

Start with the landing page and routing structure.
Use shadcn/ui for components.

Cursor generated the full project structure in about 4 minutes. The landing page came out clean. Routing was correct. I spent the remaining 45 minutes in Hour 1 refining the landing page copy and the public bio page design.

Hour 2: Add Auth and Payments

The most complex part. My prompts for this hour:

Set up Supabase auth with email/password and Google OAuth.
Add a middleware that protects /dashboard and /create routes.
Store user sessions properly in the App Router.
Add Stripe subscriptions. One plan: "Pro" at $7/month.
- /api/create-checkout creates a Stripe Checkout session
- /api/webhook handles subscription events (created, deleted)
- Add a "isPro" field to the user profile in Supabase
- Gate the publish feature behind isPro check

Auth worked on the first attempt. Stripe webhook took 3 iterations — Cursor kept missing the raw body parsing needed for webhook signature verification. Eventually fixed with a specific prompt about Next.js raw body handling.

Hour 3: Polish and Deploy

  1. Added form validation with proper error states
  2. Improved mobile responsiveness of the bio page template
  3. Added 5 preset color themes for the bio page
  4. Set up Vercel analytics
  5. Deployed to Vercel: git push → automatic deployment
  6. Configured custom domain via Vercel dashboard
  7. Tested the full user flow: sign up → create bio → add payment → publish

Results After 30 Days

I shared it on Twitter with a "built this in 3 hours" post. Results:

  • 847 sign-ups in the first week
  • 34 paying customers at $7/month = $238 MRR
  • Time invested: ~3 hours to build + 2 hours of customer support responses
  • Monthly infrastructure cost: ~$25 (Supabase + Vercel)

Not life-changing money. But $213 profit/month from 5 hours of work validates the concept. The next 30 days are about growth — not rebuilding the product.

Could I have done this without vibe coding? Maybe — in 2-3 weeks. Vibe coding compressed that into an afternoon. The leverage is real.

→ Ready to build your own? Start with our beginners guide or jump straight to the prompt templates.