# Docker Compose environment — copy to project root: # cp docker/.env.example .env # --- PostgreSQL --- DB_USER=executive DB_PASSWORD=change_this_to_a_strong_password DB_NAME=executive # --- Django --- SECRET_KEY=change-me-in-production-use-a-long-random-string DEBUG=false ALLOWED_HOSTS=localhost,127.0.0.1,api,frontend,executive.local CSRF_TRUSTED_ORIGINS=http://localhost,http://127.0.0.1,http://executive.local CORS_ALLOWED_ORIGINS=http://localhost,http://127.0.0.1,http://executive.local # Production admin (bootstrap_admin — no demo data) BOOTSTRAP_ADMIN_USER=admin BOOTSTRAP_ADMIN_PASSWORD=Pr04dm1n # Optional production GM (leave BOOTSTRAP_STAFF_USER empty to skip) BOOTSTRAP_STAFF_USER= BOOTSTRAP_STAFF_PASSWORD= # Optional: fixed API key for city-site inbound / scripts (hashed at rest) BOOTSTRAP_API_KEY= # City-edge syncs OFF at HQ — data should arrive via city-site mirror sync. # Enable only if this box also pulls directly from edge services. KARUNG_WEB_ADMIN_SYNC_ENABLED=false IOT_SYNC_ENABLED=false CHICKEN_COUNTING_EDGE_COUNTING_SYNC_ENABLED=false CHICKEN_COUNTING_EDGE_MORTALITY_SYNC_ENABLED=false CHICKEN_COUNTING_EDGE_WEIGHT_SYNC_ENABLED=false # Dashboard publish cutoff (WIB): day D visible from 17:00 on day D DASHBOARD_PUBLISH_HOUR=17 DASHBOARD_PUBLISH_MINUTE=0 # Optional edge endpoints (unused while sync flags are false) KARUNG_WEB_ADMIN_BASE_URL=http://host.docker.internal:5000 KARUNG_WEB_ADMIN_TIMEOUT_SECONDS=30 IOT_API_BASE_URL= IOT_SYNC_LOOKBACK_MINUTES=20 IOT_SYNC_MAX_PAGES=10 IOT_FLOCK_ID_MAP={} CHICKEN_COUNTING_EDGE_BASE_URL= CHICKEN_COUNTING_EDGE_TIMEOUT_SECONDS=30