Files
moonlight-drive-in/.claude-context/00-overview.md
T

31 lines
1.9 KiB
Markdown

# Moonlight Drive-In
NFC-triggered video player for a home "drive-in" theatre: scanning a tag plays the mapped movie on a seamless dual-MPV player, with a web remote, network NFC clients and relay-controlled effects.
**Repository:** https://gitea.hideawaygaming.com.au/jessikitty/moonlight-drive-in
## Architecture
- **Player:** `mpv_seamless_player.py` / `web_mpv_main.py` — two MPV instances for gapless transitions; anti-repeat logic; manual and auto-cycle modes
- **Web:** `web_interface.py` — Flask + SocketIO remote/gallery on port 8547; API `POST /api/video/play` `{"nfc_id": ...}`, `POST /api/video/skip`, `GET /api/stats`
- **Mappings:** `key_mapping.txt` (tag → video), `folder_mapping.txt` (tag → folder sequence), `gallery_config.json` (web UI)
- **Clients:** `clients/` — GUI/CLI/auto-connect network NFC clients with global input capture (`pynput`)
- **Effects:** `esp32_relay_controller.py` + `theatre_automation.py` — ESP32 Bluetooth relay
- **Deploy:** Windows host, runs from `E:\DriveIn\`, batch launchers
## Related Repos
- `lego-dimensions-reader` — LEGO Dimensions portal as a multi-pad NFC reader with LED effects (planned replacement for the ACR122)
- `video-player-log-analyzer` — HTML log analysis/report tool
- `esp32-bluetooth-relay` — relay firmware
## Conventions
- Tkinter updates from threads go through `root.after(0, ...)`
- Console output is ASCII-only (`[WEB]`, `[VIDEO]`) — no emoji
- Don't commit IPs beyond the LAN default; VPN addresses are `<redacted>`
## Session Log
- 2025-12-15 — ESP32 Bluetooth Relay Theatre Automation — Added relay driver and theatre automation layer over Bluetooth serial
- 2025-12-24 — NFC Network Client, Global Input Capture and Smart Connect — Remote NFC clients, focus-independent scanning, verified smart connect and 5-second CLI auto-start
---
*Created by: Jess Rogerson (yelling commands at Claude.AI)*