Some checks failed
CI / Tests / 🧪 Test (push) Has been cancelled
- PRODUCT_NAME default: TurboStarter → claudemesh (.env.example, .env.local) - SEED_EMAIL default: me@turbostarter.dev → dev@example.com - README dev accounts table: reflect new seed email format - DEPLOY.md: fix stale SEED_EMAIL reference Keeps DB user as turbostarter per docker-compose.yml default; retains TurboStarter attribution link in README Contributing section (legit credit for the template this repo is built on). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
137 lines
4.7 KiB
Plaintext
137 lines
4.7 KiB
Plaintext
# ============================================================
|
|
# PRODUCTION ENVIRONMENT VARIABLES
|
|
# ============================================================
|
|
# Copy this file and fill in your values:
|
|
# cp .env.production.example .env.production
|
|
#
|
|
# Legend:
|
|
# [REQUIRED] — App will NOT start without this
|
|
# [FEATURE] — Required only when the feature is enabled
|
|
# [OPTIONAL] — Has a sensible default, override if needed
|
|
# ============================================================
|
|
|
|
# ── CORE (REQUIRED) ──────────────────────────────────────────
|
|
|
|
# PostgreSQL connection string
|
|
# [REQUIRED] App crashes immediately without this
|
|
DATABASE_URL="postgresql://user:password@host:5432/dbname"
|
|
|
|
# Secret for signing auth sessions/tokens
|
|
# [REQUIRED] Generate with: openssl rand -base64 32
|
|
BETTER_AUTH_SECRET=""
|
|
|
|
# Public URL of the app (used for OAuth callbacks, email links, OG meta)
|
|
# [REQUIRED] Set at BUILD TIME via --build-arg NEXT_PUBLIC_URL=...
|
|
NEXT_PUBLIC_URL="https://your-app.example.com"
|
|
|
|
# Comma-separated list of allowed origins for CSRF protection
|
|
# [REQUIRED] Must include your public URL
|
|
BETTER_AUTH_TRUSTED_ORIGINS="https://your-app.example.com"
|
|
|
|
# ── PRODUCT ──────────────────────────────────────────────────
|
|
|
|
# [OPTIONAL] App display name (default: "claudemesh")
|
|
NEXT_PUBLIC_PRODUCT_NAME="MyApp"
|
|
|
|
# [OPTIONAL] Contact email shown in the app
|
|
CONTACT_EMAIL="hello@example.com"
|
|
|
|
# [OPTIONAL] Default locale (default: "en")
|
|
NEXT_PUBLIC_DEFAULT_LOCALE="en"
|
|
|
|
# [OPTIONAL] Theme mode: "light" | "dark" | "system" (default: "system")
|
|
NEXT_PUBLIC_THEME_MODE="system"
|
|
|
|
# [OPTIONAL] Theme color (default: "orange")
|
|
NEXT_PUBLIC_THEME_COLOR="orange"
|
|
|
|
# ── AUTH METHODS ─────────────────────────────────────────────
|
|
|
|
# [OPTIONAL] Toggle auth methods (default shown)
|
|
NEXT_PUBLIC_AUTH_PASSWORD=true
|
|
NEXT_PUBLIC_AUTH_MAGIC_LINK=false
|
|
NEXT_PUBLIC_AUTH_PASSKEY=true
|
|
NEXT_PUBLIC_AUTH_ANONYMOUS=true
|
|
|
|
# [OPTIONAL] Signup credits (default: 100 in production)
|
|
FREE_TIER_CREDITS=100
|
|
|
|
# Seed user for initial setup
|
|
SEED_EMAIL="admin@example.com"
|
|
SEED_PASSWORD="ChangeThisPassword!"
|
|
|
|
# ── OAUTH PROVIDERS ──────────────────────────────────────────
|
|
# Leave empty to disable the provider (login button won't show)
|
|
|
|
# [FEATURE] Google OAuth
|
|
GOOGLE_CLIENT_ID=""
|
|
GOOGLE_CLIENT_SECRET=""
|
|
|
|
# [FEATURE] GitHub OAuth
|
|
GITHUB_CLIENT_ID=""
|
|
GITHUB_CLIENT_SECRET=""
|
|
|
|
# [FEATURE] Apple OAuth
|
|
APPLE_CLIENT_ID=""
|
|
APPLE_CLIENT_SECRET=""
|
|
APPLE_APP_BUNDLE_IDENTIFIER=""
|
|
|
|
# ── S3 STORAGE ───────────────────────────────────────────────
|
|
# Set S3_BUCKET to enable. All other S3 vars become required.
|
|
|
|
# [FEATURE] S3-compatible storage (MinIO, AWS S3, R2, etc.)
|
|
S3_BUCKET=""
|
|
S3_REGION="us-east-1"
|
|
S3_ENDPOINT="http://minio:9000"
|
|
S3_ACCESS_KEY_ID=""
|
|
S3_SECRET_ACCESS_KEY=""
|
|
|
|
# ── BILLING (STRIPE) ────────────────────────────────────────
|
|
# Set STRIPE_SECRET_KEY to enable. Webhook secret becomes required.
|
|
|
|
# [FEATURE] Stripe payments
|
|
STRIPE_SECRET_KEY=""
|
|
STRIPE_WEBHOOK_SECRET=""
|
|
|
|
# [OPTIONAL] Billing model: "recurring" | "one_time" | "credits"
|
|
BILLING_MODEL="recurring"
|
|
|
|
# ── EMAIL ────────────────────────────────────────────────────
|
|
# Configure ONE email provider. Set the API key to enable.
|
|
|
|
# [FEATURE] Resend (recommended)
|
|
RESEND_API_KEY=""
|
|
|
|
# [FEATURE] OR Nodemailer (self-hosted SMTP)
|
|
# NODEMAILER_HOST=""
|
|
# NODEMAILER_PORT="465"
|
|
# NODEMAILER_USER=""
|
|
# NODEMAILER_PASSWORD=""
|
|
|
|
# [FEATURE] Sender address (required when any email provider is configured)
|
|
EMAIL_FROM="noreply@yourdomain.com"
|
|
|
|
# ── MONITORING ───────────────────────────────────────────────
|
|
# All monitoring is optional. App works fine without it.
|
|
|
|
# [OPTIONAL] Sentry error tracking
|
|
NEXT_PUBLIC_SENTRY_DSN=""
|
|
|
|
# [OPTIONAL] PostHog analytics
|
|
NEXT_PUBLIC_POSTHOG_KEY=""
|
|
NEXT_PUBLIC_POSTHOG_HOST="https://us.i.posthog.com"
|
|
|
|
# ── AI (if using AI features) ───────────────────────────────
|
|
|
|
# [FEATURE] OpenAI
|
|
# OPENAI_API_KEY=""
|
|
|
|
# [FEATURE] Anthropic
|
|
# ANTHROPIC_API_KEY=""
|
|
|
|
# [FEATURE] ElevenLabs TTS
|
|
# ELEVENLABS_API_KEY=""
|
|
|
|
# [FEATURE] Tavily search
|
|
# TAVILY_API_KEY=""
|