BOT_TOKEN=your_bot_token_here DATABASE_URL=sqlite:///data/duty_teller.db MINI_APP_BASE_URL= HTTP_PORT=8080 # Access: roles are assigned in the DB by an admin via /set_role. When a user has no role in DB, # ADMIN_USERNAMES and ADMIN_PHONES act as fallback for admin only. ALLOWED_* are not used for access. ALLOWED_USERNAMES= ADMIN_USERNAMES=admin1,admin2 # Optional: admin fallback by phone (user sets phone via /set_phone). Comma-separated; digits only for comparison. # ALLOWED_PHONES= # ADMIN_PHONES=79001111111 # Dev only: set to 1 to allow calendar without Telegram initData (insecure; do not use in production). # MINI_APP_SKIP_AUTH=1 # Optional: URL of a public ICS calendar (e.g. holidays). Days from this calendar are highlighted on the duty grid; click "i" for summary. # EXTERNAL_CALENDAR_ICS_URL=https://example.com/holidays.ics # Timezone for the pinned duty message in groups (e.g. Europe/Moscow). # DUTY_DISPLAY_TZ=Europe/Moscow # Default UI language when user language is unknown: en or ru (default: en). # DEFAULT_LANGUAGE=en # Reject Telegram initData older than this (seconds). 0 = do not check (default). # INIT_DATA_MAX_AGE_SECONDS=0 # Comma-separated CORS origins; leave unset for *. # CORS_ORIGINS=