Deployment
How to deploy Creator to Vercel with all required environment variables.
Deploying to Vercel
- Push your code to a GitHub repository
- Go to vercel.com and import the repository
- Add all required environment variables (see below)
- Deploy
The build command is npm run build and the framework is automatically detected as Next.js.
Required environment variables
Core (always required)
NEXT_PUBLIC_APP_URL="https://yourdomain.com"
DATABASE_URL="postgresql://..." # Use transaction pooler URL
AUTH_SECRET="your-random-secret"
AUTH_URL="https://yourdomain.com"Email (pick one)
Resend:
NEXT_PUBLIC_EMAIL_SERVICE="resend"
NEXT_RESEND_API_KEY="re_..."
NEXT_RESEND_FROM_EMAIL="noreply@yourdomain.com"Mailgun:
NEXT_PUBLIC_EMAIL_SERVICE="mailgun"
NEXT_MAILGUN_API_KEY=""
NEXT_MAILGUN_DOMAIN="mg.yourdomain.com"
NEXT_MAILGUN_FROM_EMAIL="noreply@yourdomain.com"Payment (pick one)
Stripe:
NEXT_PUBLIC_PAYMENT_GATEWAY="stripe"
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="pk_live_..."
NEXT_STRIPE_SECRET_KEY="sk_live_..."
NEXT_STRIPE_WEBHOOK_SECRET="whsec_..."Lemon Squeezy:
NEXT_PUBLIC_PAYMENT_GATEWAY="lemonsqueezy"
LEMONSQUEEZY_API_KEY=""
LEMONSQUEEZY_STORE_ID=""
LEMONSQUEEZY_WEBHOOK_SECRET=""Storage (pick one, optional)
Cloudflare R2:
NEXT_PUBLIC_STORAGE_SERVICE="r2"
R2_ACCESS_KEY_ID=""
R2_SECRET_ACCESS_KEY=""
R2_ENDPOINT=""
R2_BUCKET=""
R2_PUBLIC_URL=""Supabase Storage:
NEXT_PUBLIC_STORAGE_SERVICE="supabase"
NEXT_PUBLIC_SUPABASE_URL=""
SUPABASE_SERVICE_ROLE_KEY=""
SUPABASE_STORAGE_BUCKET=""OAuth (optional)
NEXT_PUBLIC_AUTH_GOOGLE="true"
AUTH_GOOGLE_ID=""
AUTH_GOOGLE_SECRET=""
NEXT_PUBLIC_AUTH_GITHUB="true"
AUTH_GITHUB_ID=""
AUTH_GITHUB_SECRET=""Monitoring (optional)
NEXT_PUBLIC_SENTRY_DSN=""
SENTRY_DSN=""
SENTRY_AUTH_TOKEN=""
SENTRY_ORG=""
SENTRY_PROJECT=""Rate limiting (optional)
UPSTASH_REDIS_REST_URL=""
UPSTASH_REDIS_REST_TOKEN=""Post-deployment checklist
- Push schema — Run
npm run db:generatethennpm run db:pushagainst your production database - Seed admin user — Run
npm run db:seedagainst the production database - Set up webhooks — Configure Stripe or Lemon Squeezy webhook URLs to point to your production domain
- Update OAuth redirect URIs — Add your production domain to Google and GitHub OAuth app settings
- Verify email sending — Switch from test/sandbox email credentials to production ones
- Update
NEXT_RESEND_FROM_EMAIL— Change fromonboarding@resend.devto your verified domain email - Test the full flow — Register, log in, make a test payment, verify emails are sent
Database hosting
Creator works with any PostgreSQL provider. Popular options:
- Neon — Serverless PostgreSQL with generous free tier
- Supabase — Managed PostgreSQL with additional features
- Railway — Simple managed PostgreSQL
- Vercel Postgres — Integrated with Vercel deployments
Use the transaction pooler connection string for DATABASE_URL. The database client is already configured with prepare: false for compatibility.