# Server APP_ENV=development PORT=8080 # MongoDB (content) MONGO_URI=mongodb://user:pass@localhost:27017/spsays?authSource=admin MONGO_DB=spsays # PostgreSQL (users, relations) POSTGRES_URI=postgres://user:pass@localhost:5432/spsays?sslmode=disable # Typesense TYPESENSE_URL=https://search.prabhupadasays.org TYPESENSE_API_KEY= # DragonflyDB / Redis REDIS_URI=redis://localhost:6379 # Cloudflare R2 (avatar uploads via presigned URLs) # R2 endpoint is auto-built as https://.r2.cloudflarestorage.com R2_ACCOUNT_ID= R2_ACCESS_KEY_ID= R2_SECRET_ACCESS_KEY= R2_BUCKET= # Public base URL where bucket objects are served (custom domain or pub-XXX.r2.dev) R2_PUBLIC_URL= # Separate bucket for private media (DM attachments), read only via short-lived # presigned GETs. It must have NO public access and no custom domain: R2 public # access is per-bucket, so a prefix inside R2_BUCKET would still be world-readable. # Empty disables private-media endpoints (they return 503). R2_PRIVATE_BUCKET= # SMTP (password-reset + email-verification + /feedback admin notifications) SMTP_HOST= SMTP_PORT=587 SMTP_USERNAME= SMTP_PASSWORD= SMTP_FROM="Prabhupāda Says " # Comma-separated recipients for /feedback admin notifications. Empty # disables the email fan-out (feedback rows still persist and show on # the /stats page either way). FEEDBACK_ADMIN_EMAILS= # Push Notifications FCM_CREDENTIALS_FILE= APNS_KEY_FILE= APNS_KEY_ID= APNS_TEAM_ID= APNS_BUNDLE_ID= # JWT JWT_SECRET=change-me-in-production JWT_EXPIRATION=168h # Cookie domain — empty in dev (uses request host), ".prabhupadasays.org" in prod COOKIE_DOMAIN= COOKIE_SECURE=false # Frontend (CORS + email link base) FRONTEND_URL=http://localhost:3000 # Admin panel origin (CORS). Defaults to http://localhost:3001 when APP_ENV=development. ADMIN_URL= GOOGLE_OAUTH_CLIENT_ID= GOOGLE_OAUTH_CLIENT_SECRET= FACEBOOK_OAUTH_CLIENT_ID= FACEBOOK_OAUTH_CLIENT_SECRET= # SOKETI SOKETI_APP_ID= SOKETI_APP_KEY= SOKETI_APP_SECRET= SOKETI_HOST=ws.prabhupadasays.org SOKETI_PORT=443 SOKETI_USE_TLS=true # Web Push VAPID_PUBLIC_KEY= VAPID_PRIVATE_KEY= VAPID_SUBJECT=