NODE_ENV=production
PORT=3000
LOG_LEVEL=info
JSON_BODY_LIMIT=24mb

# Required secrets
JWT_SECRET=
JWT_EXPIRES_IN=7d
ADMIN_TOKEN_SECRET=
ADMIN_TOKEN_TTL_SECONDS=28800

# Enable only for the first deployment, then disable it again.
ADMIN_BOOTSTRAP_ENABLED=false
ADMIN_USERNAME=
ADMIN_PASSWORD=
ADMIN_NICKNAME=

# Persistent storage
USE_MEMORY_STORAGE=false
USE_FILE_REDIS=false
DB_HOST=
DB_PORT=3306
DB_USERNAME=
DB_PASSWORD=
DB_NAME=
REDIS_HOST=
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0

# Email
EMAIL_HOST=
EMAIL_PORT=465
EMAIL_SECURE=true
EMAIL_USER=
EMAIL_PASS=
EMAIL_FROM=
MAIL_PROVIDER=
NOVAMAILIO_MAIL_API_BASE=
NOVAMAILIO_MAIL_CREDENTIAL=
NOVAMAILIO_MAIL_FROM_NAME=
NOVAMAILIO_MAIL_FINGERPRINT=
NOVAMAILIO_MAIL_ORIGIN=
NOVAMAILIO_MAIL_REFERER=
NOVAMAILIO_MAIL_USER_AGENT=

# Zulip
ZULIP_CONFIG_MODE=dynamic
ZULIP_SERVER_URL=
ZULIP_BOT_EMAIL=
ZULIP_BOT_API_KEY=
ZULIP_API_KEY_ENCRYPTION_KEY=
ZULIP_DEGRADED_MODE_ENABLED=true
ZULIP_AUTO_RECONNECT_ENABLED=true

# Realtime and generated assets
# The native WebSocket server listens separately from the REST API.
WEBSOCKET_PORT=3001
WEBSOCKET_NAMESPACE=/game
ACCOUNT_ASSET_DIR=generated/account-assets
SKIN_GENERATION_OUTPUT_DIR=generated/skins
SKIN_GENERATION_SCRIPT_PATH=scripts/skin_generation/generate_skin_from_prompt.py
SKIN_GENERATION_PYTHON=python3
NOVAMAILIO_API_KEY=

# Optional cafe companion defaults
CAFE_COMPANION_DEFAULT_OPENAI_BASE_URL=
CAFE_COMPANION_DEFAULT_OPENAI_API_KEY=
CAFE_COMPANION_DEFAULT_OPENAI_MODEL=
