# Database (MySQL 8.0 — migrated from PostgreSQL in Phase 7, see # docs/phase-7-summary.md; the production host only supports MySQL). DATABASE_URL="mysql://user:password@localhost:3306/nextchair" # Optional: cap the connection pool (see src/lib/db/prisma.ts). Lower this # for a hosting provider with a small max-connections limit. DATABASE_CONNECTION_LIMIT="5" # Auth.js (NextAuth v5). Generate with: npx auth secret AUTH_SECRET="replace-me-with-a-32-byte-random-string" # Google OAuth — https://console.cloud.google.com/apis/credentials AUTH_GOOGLE_ID="" AUTH_GOOGLE_SECRET="" # Base URL of the app (used for callback URLs, email links, etc.) NEXT_PUBLIC_APP_URL="http://localhost:3000" # Email (Phase 7) — see src/services/notifications/providers. # "console" logs would-be emails to the server console instead of sending # (safe default — never send real email from an unconfigured environment). # "brevo" sends for real over Brevo's SMTP relay via nodemailer (see # brevo-email-provider.ts for why SMTP rather than Brevo's REST API). EMAIL_PROVIDER="console" EMAIL_SMTP_HOST="smtp-relay.brevo.com" EMAIL_SMTP_PORT="587" EMAIL_SMTP_USERNAME="" EMAIL_SMTP_PASSWORD="" EMAIL_FROM_ADDRESS="" EMAIL_FROM_NAME="NextChair" # Web Push (Phase 7) — generate with: npx web-push generate-vapid-keys # NEXT_PUBLIC_VAPID_PUBLIC_KEY must be the same value as VAPID_PUBLIC_KEY — # it's duplicated because the browser needs it for pushManager.subscribe. # PUSH_PROVIDER="web-push" to actually send; defaults to "console" (logs only). PUSH_PROVIDER="console" VAPID_PUBLIC_KEY="" NEXT_PUBLIC_VAPID_PUBLIC_KEY="" VAPID_PRIVATE_KEY="" VAPID_SUBJECT="mailto:owner@example.com" # Background notification processing (Phase 7) — shared secret an external # scheduler presents as `Authorization: Bearer ` to # /api/cron/process-notifications. Generate with: openssl rand -hex 32 CRON_SECRET=""