Badi Monitor live
Real-time occupancy for two Zürich indoor pools, with quietest-time predictions.
what it is
Monitors Hallenbad Oerlikon and Hallenbad City through the CrowdMonitor WebSocket feed. Surfaces a mobile-first dashboard with 'best time today' and 'quietest in the next 7 days' recommendations driven by historical patterns.
stack
- Python
- FastAPI
- TimescaleDB
- Docker
- Cloudflare Tunnel
notes
Started on Azure (ACI collector, Function App API, Table Storage). Migrated to a self-hosted Raspberry Pi stack running PostgreSQL with TimescaleDB to cut the monthly Azure bill and consolidate everything under a single host. Continuous aggregates drive the dashboard reads; a nightly job rebuilds the per-weekday slot averages that feed the recommendation cards.