Environment Variables

All environment variables are validated at build time using @t3-oss/env-nextjs. Never use process.env directly — import from @/lib/env instead.

Setup

cp .env.example .env.local

Required Variables

VariableDescription
NEXT_PUBLIC_APP_URLYour app URL (http://localhost:3000 for dev)
NEXT_PUBLIC_APP_NAMEApp display name
DATABASE_URLPostgreSQL connection string
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEYClerk publishable key
CLERK_SECRET_KEYClerk secret key
CLERK_WEBHOOK_SIGNING_SECRETClerk webhook signing secret
STRIPE_SECRET_KEYStripe secret key
STRIPE_WEBHOOK_SECRETStripe webhook signing secret
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEYStripe publishable key
STRIPE_PRO_MONTHLY_PRICE_IDStripe Price ID for Pro monthly
STRIPE_PRO_ANNUAL_PRICE_IDStripe Price ID for Pro annual
STRIPE_BUSINESS_MONTHLY_PRICE_IDStripe Price ID for Business monthly
STRIPE_BUSINESS_ANNUAL_PRICE_IDStripe Price ID for Business annual
RESEND_API_KEYResend API key
EMAIL_FROMSender email address

Optional Variables

VariableDescription
NEXT_PUBLIC_SENTRY_DSNSentry DSN for error tracking
SENTRY_AUTH_TOKENSentry auth token for source maps

Usage in Code

// ✅ Correct — validated and typed
import { env } from "@/lib/env"
const url = env.NEXT_PUBLIC_APP_URL

// ❌ Wrong — bypasses validation
const url = process.env.NEXT_PUBLIC_APP_URL