DEBUG=True SECRET_KEY=change-me-in-production ALLOWED_HOSTS=localhost,127.0.0.1,api,dashboard.local CSRF_TRUSTED_ORIGINS=http://localhost:8000,http://127.0.0.1:8000,http://localhost:3001,http://127.0.0.1:3001 CORS_ALLOWED_ORIGINS=http://localhost:3000,http://127.0.0.1:3000,http://localhost:3001,http://127.0.0.1:3001 CORS_ALLOW_CREDENTIALS=True # SQLite (local) DB_ENGINE=django.db.backends.sqlite3 DB_NAME=db.sqlite3 # Docker/compose typically overrides to: # DB_NAME=/app/data/db.sqlite3 # PostgreSQL (production / Docker Compose) — set in project root .env.example # DB_ENGINE=django.db.backends.postgresql # DB_NAME=newdashboard # DB_USER=newdashboard # DB_PASSWORD=change-me # DB_HOST=database # DB_PORT=5432 API_PAGE_SIZE=50 SESSION_COOKIE_SECURE=False CSRF_COOKIE_SECURE=False # Optional: create hashed ApiKey on seed/bootstrap (raw shown once in seed output) BOOTSTRAP_API_KEY= # Production bootstrap (bootstrap_admin — no demo data) BOOTSTRAP_ADMIN_USER=admin BOOTSTRAP_ADMIN_PASSWORD= # Optional staff account (leave BOOTSTRAP_STAFF_USER empty to skip) BOOTSTRAP_STAFF_USER= BOOTSTRAP_STAFF_PASSWORD= # karung-web-admin (external) KARUNG_WEB_ADMIN_BASE_URL=http://127.0.0.1:5000 KARUNG_WEB_ADMIN_TIMEOUT_SECONDS=30 KARUNG_WEB_ADMIN_SYNC_ENABLED=false DASHBOARD_PUBLISH_HOUR=17 DASHBOARD_PUBLISH_MINUTE=0 # IoT panel — real-time sync every 10 min (excluded from publish cutoff) IOT_SYNC_ENABLED=true IOT_API_BASE_URL=https://dashboard.cpsp.id/api/iot/flocks IOT_SYNC_LOOKBACK_MINUTES=20 IOT_SYNC_MAX_PAGES=10 IOT_FLOCK_ID_MAP={}