Deploying a Next.js SaaS app to Vercel should take 5 minutes. Here is the exact checklist.
Prerequisites
- GitHub repo with your Next.js app
- Vercel account (free tier works)
- Environment variables ready
Step 1: Push to GitHub
git add -A && git commit -m "Ready to deploy" && git push
Step 2: Import in Vercel
- Go to vercel.com/new
- Import your GitHub repo
- Framework: Next.js (auto-detected)
- Click Deploy
Step 3: Environment Variables
Add these in Vercel dashboard → Settings → Environment Variables:
DATABASE_URL=postgresql://...
AUTH_SECRET=your-secret
AUTH_URL=https://your-domain.vercel.app
STRIPE_SECRET_KEY=sk_live_...
STRIPE_WEBHOOK_SECRET=whsec_...
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_live_...
OPENAI_API_KEY=sk-...
RESEND_API_KEY=re_...
NEXT_PUBLIC_APP_URL=https://your-domain.vercel.app
Step 4: Database
For PostgreSQL, use one of:
- Supabase (free tier, managed Postgres)
- Neon (free tier, serverless Postgres)
- Railway (free tier, hosted Postgres)
Copy the connection string to DATABASE_URL.
Step 5: Stripe Webhook
- Go to Stripe Dashboard → Developers → Webhooks
- Add endpoint:
https://your-domain.vercel.app/api/stripe/webhook - Select events: checkout.session.completed, invoice.payment_succeeded, customer.subscription.deleted
- Copy the webhook signing secret to STRIPE_WEBHOOK_SECRET
Step 6: OAuth Redirect URIs
Update your Google/GitHub OAuth apps:
- Authorized redirect URI:
https://your-domain.vercel.app/api/auth/callback/google - Same pattern for GitHub
Step 7: Custom Domain (optional)
Vercel dashboard → Settings → Domains → Add your domain.
The 5-minute version
If you use a starter kit like LaunchKit, all the routes, env vars, and configurations are pre-set. You literally just:
- Push to GitHub
- Import in Vercel
- Add env vars
- Done
Top comments (0)