← back

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.