Launchframe

Environment Variables

Every generated project includes a .env.example file with all required and optional variables.

Setup

cp .env.example .env.local

Required variables

VariableDescription
DATABASE_URLPostgreSQL connection string
BETTER_AUTH_SECRETRandom secret for auth token signing
BETTER_AUTH_URLYour app's base URL (e.g. http://localhost:3000)

Billing (Stripe)

VariableDescription
STRIPE_SECRET_KEYStripe secret key
STRIPE_PUBLISHABLE_KEYStripe publishable key
STRIPE_PRICE_IDDefault subscription price ID
STRIPE_WEBHOOK_SECRETWebhook endpoint secret

Billing (Polar)

VariableDescription
POLAR_ACCESS_TOKENPolar API access token
POLAR_ORGANIZATION_IDYour Polar organization ID
POLAR_WEBHOOK_SECRETWebhook endpoint secret

Email (Resend)

VariableDescription
RESEND_API_KEYResend API key
EMAIL_FROMSender email address

Auth (GitHub OAuth)

VariableDescription
GITHUB_CLIENT_IDGitHub OAuth app client ID
GITHUB_CLIENT_SECRETGitHub OAuth app client secret

Access pattern

All env vars are validated through src/lib/env.ts using the t3-env pattern:

import { env } from '@/lib/env';

// Type-safe, validated at build time
const dbUrl = env.DATABASE_URL;

Never use process.env directly in application code.