# WiFi-DensePose API Environment Configuration Template
# Copy this file to .env and modify the values according to your setup

# =============================================================================
# APPLICATION SETTINGS
# =============================================================================

# Application metadata
APP_NAME=WiFi-DensePose API
VERSION=1.0.0
ENVIRONMENT=development  # Options: development, staging, production
DEBUG=true

# =============================================================================
# SERVER SETTINGS
# =============================================================================

# Server configuration
HOST=0.0.0.0
PORT=8000
RELOAD=true  # Auto-reload on code changes (development only)
WORKERS=1    # Number of worker processes

# =============================================================================
# SECURITY SETTINGS
# =============================================================================

# IMPORTANT: Change these values for production!
SECRET_KEY=your-secret-key-here-change-for-production
JWT_ALGORITHM=HS256
JWT_EXPIRE_HOURS=24

# Allowed hosts (restrict in production)
ALLOWED_HOSTS=*  # Use specific domains in production: example.com,api.example.com

# CORS settings (restrict in production)
CORS_ORIGINS=*  # Use specific origins in production: https://example.com,https://app.example.com

# =============================================================================
# DATABASE SETTINGS
# =============================================================================

# Database connection (optional - defaults to SQLite in development)
# For PostgreSQL (recommended for production):
DATABASE_URL=postgresql://wifi_user:wifi_password@localhost:5432/wifi_densepose
DATABASE_POOL_SIZE=10
DATABASE_MAX_OVERFLOW=20

# Alternative: Individual database connection parameters
# DB_HOST=localhost
# DB_PORT=5432
# DB_NAME=wifi_densepose
# DB_USER=wifi_user
# DB_PASSWORD=wifi_password

# Database failsafe settings
ENABLE_DATABASE_FAILSAFE=true
SQLITE_FALLBACK_PATH=./data/wifi_densepose_fallback.db

# =============================================================================
# REDIS SETTINGS (Optional - for caching and rate limiting)
# =============================================================================

# Redis connection (optional - defaults to localhost in development)
REDIS_URL=redis://localhost:6379/0
# REDIS_PASSWORD=your-redis-password
REDIS_DB=0
REDIS_ENABLED=true
REDIS_REQUIRED=false
ENABLE_REDIS_FAILSAFE=true

# Redis connection settings
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_MAX_CONNECTIONS=10
REDIS_SOCKET_TIMEOUT=5
REDIS_CONNECT_TIMEOUT=5

# =============================================================================
# HARDWARE SETTINGS
# =============================================================================

# WiFi interface configuration
WIFI_INTERFACE=wlan0
CSI_BUFFER_SIZE=1000
HARDWARE_POLLING_INTERVAL=0.1

# Hardware mock settings (for development/testing)
MOCK_HARDWARE=true
MOCK_POSE_DATA=true

# =============================================================================
# POSE ESTIMATION SETTINGS
# =============================================================================

# Model configuration
# POSE_MODEL_PATH=/path/to/your/pose/model.pth
POSE_CONFIDENCE_THRESHOLD=0.5
POSE_PROCESSING_BATCH_SIZE=32
POSE_MAX_PERSONS=10

# =============================================================================
# STREAMING SETTINGS
# =============================================================================

# Real-time streaming configuration
STREAM_FPS=30
STREAM_BUFFER_SIZE=100
WEBSOCKET_PING_INTERVAL=60
WEBSOCKET_TIMEOUT=300

# =============================================================================
# FEATURE FLAGS
# =============================================================================

# Enable/disable features
ENABLE_AUTHENTICATION=false  # Set to true for production
ENABLE_RATE_LIMITING=false   # Set to true for production
ENABLE_WEBSOCKETS=true
ENABLE_REAL_TIME_PROCESSING=true
ENABLE_HISTORICAL_DATA=true

# Development features
ENABLE_TEST_ENDPOINTS=true   # Set to false for production

# =============================================================================
# RATE LIMITING SETTINGS
# =============================================================================

# Rate limiting configuration
RATE_LIMIT_REQUESTS=100
RATE_LIMIT_AUTHENTICATED_REQUESTS=1000
RATE_LIMIT_WINDOW=3600  # Window in seconds

# =============================================================================
# LOGGING SETTINGS
# =============================================================================

# Logging configuration
LOG_LEVEL=INFO  # Options: DEBUG, INFO, WARNING, ERROR, CRITICAL
LOG_FORMAT=%(asctime)s - %(name)s - %(levelname)s - %(message)s
# LOG_FILE=/path/to/logfile.log  # Optional: specify log file path
LOG_MAX_SIZE=10485760  # 10MB
LOG_BACKUP_COUNT=5

# =============================================================================
# STORAGE SETTINGS
# =============================================================================

# Storage directories
DATA_STORAGE_PATH=./data
MODEL_STORAGE_PATH=./models
TEMP_STORAGE_PATH=./temp
MAX_STORAGE_SIZE_GB=100

# =============================================================================
# MONITORING SETTINGS
# =============================================================================

# Monitoring and metrics
METRICS_ENABLED=true
HEALTH_CHECK_INTERVAL=30
PERFORMANCE_MONITORING=true

# =============================================================================
# API SETTINGS
# =============================================================================

# API configuration
API_PREFIX=/api/v1
DOCS_URL=/docs      # Set to null to disable in production
REDOC_URL=/redoc    # Set to null to disable in production
OPENAPI_URL=/openapi.json  # Set to null to disable in production

# =============================================================================
# PRODUCTION SETTINGS
# =============================================================================

# For production deployment, ensure you:
# 1. Set ENVIRONMENT=production
# 2. Set DEBUG=false
# 3. Use a strong SECRET_KEY
# 4. Configure proper DATABASE_URL
# 5. Restrict ALLOWED_HOSTS and CORS_ORIGINS
# 6. Enable ENABLE_AUTHENTICATION=true
# 7. Enable ENABLE_RATE_LIMITING=true
# 8. Set ENABLE_TEST_ENDPOINTS=false
# 9. Disable API documentation URLs (set to null)
# 10. Configure proper logging with LOG_FILE

# Example production settings:
# ENVIRONMENT=production
# DEBUG=false
# SECRET_KEY=your-very-secure-secret-key-here
# DATABASE_URL=postgresql://user:password@db-host:5432/wifi_densepose
# REDIS_URL=redis://redis-host:6379/0
# ALLOWED_HOSTS=yourdomain.com,api.yourdomain.com
# CORS_ORIGINS=https://yourdomain.com,https://app.yourdomain.com
# ENABLE_AUTHENTICATION=true
# ENABLE_RATE_LIMITING=true
# ENABLE_TEST_ENDPOINTS=false
# DOCS_URL=null
# REDOC_URL=null
# OPENAPI_URL=null
# LOG_FILE=/var/log/wifi-densepose/app.log