We’ll use Vercel - it’s free, fast, and built for Next.js. One-click deploy.
Push to GitHub
Create a new repo on github.com, then:
Terminal
Connect to Vercel
Time to deploy:
- Go to vercel.com
- Sign up with GitHub
- Click Add New → Project
- Import your repository
- Vercel auto-detects Next.js settings:
- Framework: Next.js ✓
- Build Command:
npm run build✓ - Output Directory:
.next✓
Add Environment Variables
Before deploying, add your secrets:Click Environment Variables and your your envs from .env.local.
Where do I find these keys?
Where do I find these keys?
- Auth0: Dashboard → Applications → Your App
- Supabase: Dashboard → Settings → API
- Stripe: Dashboard → Developers → API keys (toggle to Live mode)
- Resend: Dashboard → API Keys
Deploy
Hit the Deploy button.Done? Your app is live at
Takes ~1 minutes. Grab a coffee ☕
https://your-app.vercel.app 🎉Update Auth0 URLs
Tell Auth0 about your production URL:
- Go to Auth0 Dashboard → Applications → Your App
- Add to Allowed Callback URLs:
- Add to Allowed Logout URLs:
- Click Save
Using a custom domain? Add that URL too.
Set Up Production Webhook
Stripe needs to know where to send events:
- In Stripe (Live mode), go to Developers → Webhooks
- Click Add endpoint
- Endpoint URL:
https://your-app.vercel.app/api/stripe/webhook - Events to send:
checkout.session.completedcheckout.session.expiredcustomer.subscription.updatedcustomer.subscription.deletedinvoice.paidinvoice.payment_failed
- Click Add endpoint
- Copy the Signing secret (starts with
whsec_) - Update
STRIPE_WEBHOOK_SECRETin Vercel - Redeploy: Vercel → Deployments → ⋯ → Redeploy
Test Everything
Your app is live. Now test:- Authentication
- Payments
- Email
- Database
- Sign up with new account
- Log in
- Log out
- Check dashboard access
Everything working? Congrats, you’re live! 🚀
Auto-Deployments
Every push tomain auto-deploys. No manual work.
Terminal
Monitoring
Keep an eye on your app: Enable Analytics:- Vercel Dashboard → Your Project
- Click Analytics tab
- Click Enable Analytics
- Go to Deployments
- Click any deployment
- Check Logs tab for errors
- Vercel → Project Settings → Notifications
- Enable error notifications
- Add Slack/Discord webhook (optional)
Troubleshooting
App loads but features broken?
App loads but features broken?
Check these:
- All environment variables set in Vercel?
- Using production keys (not test)?
- Auth0 URLs updated with production domain?
- Browser console showing errors?
Payments not working?
Payments not working?
Common issues:
- Using test keys instead of live keys
- Webhook URL incorrect
- Webhook secret doesn’t match
- Stripe in test mode instead of live mode
Emails not sending?
Emails not sending?
Verify:
RESEND_API_KEYin Vercel env vars- Domain verified in Resend
- Check Resend dashboard for errors
- Not hitting rate limits
Database queries failing?
Database queries failing?
Check:
- Supabase keys correct in Vercel
- Row Level Security policies allow access
- Tables exist in production database
- Connection not timing out
Build failing?
Build failing?
Common causes:
- TypeScript errors
- Missing dependencies
- Environment variables needed at build time
Performance Tips
Images
Use Next.js
<Image> component. Vercel optimizes automatically.Caching
Vercel caches static assets globally. No config needed.
Edge Functions
Your API routes run on the edge. Fast everywhere.
Analytics
Monitor performance in Vercel Analytics tab.
Going Live Checklist
Before announcing your launch:- All features tested in production
- Custom domain set up (optional)
- SSL certificate active (auto-generated)
- Analytics enabled
- Error monitoring set up
- Stripe in live mode
- Auth0 production URLs configured
- Webhooks working
- Email sending tested
- Database queries working
- Mobile responsive tested
- SEO metadata set (
/lib/config.ts) - Privacy policy live
- Terms of service live
