# ============================================================================ # Route Commerce — Environment variables # ============================================================================ # Copy to `.env.local` and fill in real values for local development. # Production: set these in your hosting dashboard (Vercel / Netlify / etc.). # ============================================================================ # ── App ───────────────────────────────────────────────────────────────────── NEXT_PUBLIC_BASE_URL=http://localhost:4000 NEXT_PUBLIC_SITE_URL=http://localhost:4000 # ── Database (Neon Postgres, direct pg driver) ───────────────────────────── # Single connection string used by the pg Pool in src/lib/auth.ts and the # admin-permissions / data-service layer. Format: # postgresql://USER:PASS@HOST:PORT/DBNAME?sslmode=require DATABASE_URL=postgresql://postgres:postgres@localhost:5432/route_commerce # ── Neon Auth (Better Auth) ─────────────────────────────────────────────── # Get these from: neonctl neon-auth status # Base URL: "Auth Base URL" field # Cookie secret: openssl rand -base64 32 (min 32 chars) NEON_AUTH_BASE_URL=https://your-branch.neonauth.region.aws.neon.tech/neondb/auth NEON_AUTH_COOKIE_SECRET=replace-me-with-a-32-char-secret # ── Stripe ───────────────────────────────────────────────────────────────── STRIPE_SECRET_KEY= STRIPE_WEBHOOK_SECRET= NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY= STRIPE_PRICE_STARTER= STRIPE_PRICE_FARM= STRIPE_PRICE_ENTERPRISE= STRIPE_PRICE_HARVEST_REACH= STRIPE_PRICE_WHOLESALE_PORTAL= STRIPE_PRICE_WATER_LOG= STRIPE_PRICE_AI_TOOLS= STRIPE_PRICE_SQUARE_SYNC= STRIPE_PRICE_SMS_CAMPAIGNS= # ── Resend (transactional email) ──────────────────────────────────────────── RESEND_API_KEY= RESEND_WEBHOOK_SECRET= # ── AI providers ────────────────────────────────────────────────────────── OPENAI_API_KEY= ANTHROPIC_API_KEY= GOOGLE_API_KEY= XAI_API_KEY= MINIMAX_API_KEY= MINIMAX_BASE_URL=https://api.minimax.io/v1 # ── Square (optional) ───────────────────────────────────────────────────── SQUARE_APP_SECRET= SQUARE_ENVIRONMENT=sandbox # ── MinIO / S3-compatible object storage ───────────────────────────────────── # Endpoint: host:port only (no https://). Use MINIO_PUBLIC_URL for the public base. MINIO_ENDPOINT=s3.crispygoat.com MINIO_REGION=us-east-1 MINIO_USE_SSL=true MINIO_ACCESS_KEY=routecommerce MINIO_SECRET_KEY=miniochangeme123 # Override public URL if different from endpoint (e.g. Cloudflare CDN in front) MINIO_PUBLIC_URL=https://s3.crispygoat.com # Bucket names — create these in MinIO first (mc mb myminio/route-products, etc.) MINIO_BUCKET_PRODUCTS=route-products MINIO_BUCKET_BRAND_LOGOS=route-brand-logos MINIO_BUCKET_WATER_LOGS=route-water-logs # ── Cron / automation ─────────────────────────────────────────────────────── CRON_SECRET=replace-me-with-a-random-string