# Copy to .env and fill in. Lines marked REQUIRED must be set. # === REQUIRED === NAVIDROME_URL=http://navidrome.local:4533 # your Navidrome server NAVIDROME_USER=quiz # dedicated NON-admin Navidrome user NAVIDROME_PASSWORD=change-me # its password LASTFM_API_KEY=change-me # free key from https://www.last.fm/api # === AUDIO OUTPUT — at least ONE of these two blocks is required === # (no cast display AND no Home Assistant = a silent, unplayable game) # Option A: cast display / Android TV (scoreboard + audio on the big screen) DISPLAYS=Living Room TV=192.168.1.50 # Name=ip pairs, comma-separated BOARD_URL=https://quiz.example.com/board # MUST be https:// — cast devices refuse http # Option B: Home Assistant + Music Assistant (speaker-only mode / fallback) #HA_URL=http://homeassistant.local:8123 #HA_TOKEN=your-long-lived-access-token #MEDIA_PLAYER=media_player.living_room_speaker #APP_BASE_URL=http://192.168.1.10:8000 # this host, reachable by HA CAST_ENABLED=true # === OPTIONAL === #HA_NOTIFY_SERVICE=notify.mobile_app_myphone # push a heads-up when new tracks look mis-tagged #MAX_DURATION_S=720 # tracks longer than this (seconds) never enter the quiz #QUALITY_LISTENER_FLOOR=25 # suspect = scores <= this while the artist is popular #QUALITY_ARTIST_CEILING=50000 # ...popular = artist's best track clears this #KNOWN_PLAYERS=Alice=192.168.1.20,Bob=192.168.1.21 # fixed-IP phones get names prefilled #JOIN_URL=https://quiz.example.com # address in the board's "scan to join" QR; unset = inferred from the board/BOARD_URL #GUEST_WIFI_SSID=MyGuestNetwork # adds a join-the-WiFi QR beside the join QR — GUEST network only, never your main one #GUEST_WIFI_PASSWORD=change-me # (anyone who can reach the app can read this QR) #GUEST_WIFI_AUTH=WPA # WPA (default) | WEP | nopass for an open network #CLIP_SWEEP_ON_START=true # first install: bulk-cut all clips at startup #CLIP_SWEEP_MAX_HOURS=8 # cap that session (0/unset = run until done) #CLIP_START_S=30 # start clips this far into each song, for music with long # instrumental intros; applies at CUT time, so setting it on # an existing library re-cuts it (see docs/setup.md) #TRIVIA_BUILTIN_PACK=true # false = skip the Irish/UK half-time pack #ADMIN_PASSWORD=change-me # gate /admin + maintenance API; unset = open on your LAN #CLIPS_HOST_DIR=./clips # host folder for clips (~2 MB/track; use an absolute path or drive letter as needed)