OVspot – Live public transport map of the Netherlands
I built OVspot, a live map of all public transport in the Netherlands: trains, buses, trams, metro and ferries on one map.
Technical stack:
- Python/Flask backend with SQLite (3GB GTFS database)
- ZeroMQ for KV6 live stream from all operators
- Leaflet with DivIcon labels and smooth movement guards
- International trains fully tracked: ICE, Eurostar, Nightjet, GoVolta, DB, NMBS beyond NL borders
- Shape-distance interpolation for estimated positions without GPS
- PWA with offline fallback
The biggest challenge was KV17 processing blocking the KV6 stream because the JSON file was fully rewritten on every update (18MB). Fixed with a debounce that writes to disk at most once per 5 seconds.
Source code for the KV6 collector and GTFS parser: https://github.com/nickdenboer7-dev/ovspot-collector
Happy to answer questions about the NDOV data infrastructure.
Top comments (0)