# ============================================ # Warmbly Environment Variables Reference # ============================================ # This file documents all environment variables. # # Configuration Priority Order: # 1. Environment variables (direct) # 2. AWS SSM/Secrets Manager (if AWS_CONFIG_ENABLED=true) # # In production with Kubernetes: # - ConfigMaps provide non-sensitive env vars # - External Secrets Operator syncs secrets from AWS # ============================================ # === General === APP_ENV=dev # dev | prod AWS_CONFIG_ENABLED=false # Set to "true" to enable AWS SSM/Secrets fallback # === AWS (only needed when AWS_CONFIG_ENABLED=true or using AWS services) === AWS_REGION=us-east-1 AWS_ACCESS_KEY_ID= # Only for local dev AWS_SECRET_ACCESS_KEY= # Only for local dev # === Database === PRIMARY_DB=postgres://user:pass@localhost:5432/warmbly_dev REDIS=redis://localhost:6379 # === Cassandra/Astra === ASTRA_DB_ID=your-db-id ASTRA_DB_REGION=us-east-1 ASTRA_KEYSPACE_NAME=warmbly ASTRA_APPLICATION_TOKEN=your-token # === Kafka === KAFKA_BOOTSTRAP_SERVERS=localhost:9092 KAFKA_SASL_USERNAME= # Optional - leave empty for local dev KAFKA_SASL_PASSWORD= # Optional - leave empty for local dev KAFKA_CONSUMER_GROUP=consumer-group KAFKA_TRACKING_TOPIC=tracking-events # === Schema Registry === SCHEMA_REGISTRY_URL=http://localhost:8081 SCHEMA_REGISTRY_KEY= # Optional - leave empty for local dev SCHEMA_REGISTRY_SECRET= # Optional - leave empty for local dev # === Backend API === API_HOST=0.0.0.0:8080 API_PORT=8080 GIN_MODE=debug # debug | release WEBSOCKET_URL=ws://localhost:4000/socket GEODB_PATH=/path/to/GeoLite2-City.mmdb # === Auth === AUTH_SECRET=your-auth-secret-minimum-32-characters GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= GOOGLE_REDIRECT_URI=http://localhost:3000/auth/google/callback APPLE_APP_ID= APPLE_TEAM_ID= APPLE_KEY_ID= APPLE_KEY_SECRET= TURNSTILE_SECRET= # === Stripe === STRIPE_SECRET_KEY=sk_test_... STRIPE_WEBHOOK_SECRET=whsec_... STRIPE_PUBLISHABLE_KEY=pk_test_... # === Email === EMAIL_NAME=Warmbly EMAIL_ADDRESS=notifications@warmbly.com TRACKING_DOMAIN=track.warmbly.com # === Tracking Service === TRACKING_HOST=0.0.0.0 TRACKING_PORT=3000 # === Realtime Service (Elixir/Phoenix) === PHX_HOST=localhost PORT=4000 JWT_SECRET=your-64-char-minimum-jwt-secret-for-websocket-authentication SECRET_KEY_BASE=your-64-char-minimum-phoenix-secret-key-base DATABASE_URL=postgres://user:pass@localhost:5432/warmbly_dev DATABASE_POOL_SIZE=10 REDIS_URL=redis://localhost:6379 PUBSUB_ENABLED=false CHECK_ORIGIN=false MAX_CONNECTIONS_PER_USER=10 MAX_CONNECTIONS_PER_IP=50 MAX_CONNECTIONS_GLOBAL=100000 RATE_LIMIT_WS_MESSAGE=120 RATE_LIMIT_WS_JOIN=30 RATE_LIMIT_WS_EVENT=60 # === GCP === GCP_PROJECT_ID=your-gcp-project # Optional - for Pub/Sub GOOGLE_APPLICATION_CREDENTIALS_JSON= # JSON string - for GCP auth # === Observability === SENTRY_DSN= # Optional SENTRY_DSN_API= # Optional - separate DSN for API LOG_DISCORD_WEBHOOK_URL= # Optional