Treintracker
Een real-time dashboard voor Nederlandse treininformatie, gebouwd als persoonlijk project. Data komt uit de officiële NS-APIs én een zelf gebouwde NDOV-backend.
Stack
Pagina's
| URL | Beschrijving |
|---|---|
| / | Alle rijdende treinen op een interactieve kaart met richtingspijlen, type-kleurcodering en snelheidstooltips; stations met vertrektijdenpaneel bij klik |
| /departures/{station} | Realtime vertrektijden, HTMX auto-refresh elke 30s |
| /arrivals/{station} | Realtime aankomsttijden |
| /services | Ritdetails: stops, snelheidsgrafiek, materieel, drukte |
| /planner | Reisplanner van/naar met autocomplete en eerder/later |
| /disruptions | Actuele storingen en werkzaamheden op kaart met spoorgeometrie |
| /disruptions/{station} | Station-specifieke storingen en werkzaamheden |
| /series/{nummer} | 2D-matrix van alle treinen in een treinserie |
| /rolling-stock | Overzicht van alle materieeldelen met live GPS-posities |
| /station/{station} | Station: aftrappen en bijplaatsingen, spoorbezetting en drukte per station |
| /stations | Stationsverkenner: filter op land, type, faciliteiten |
| /afwijkingen | Afwijkingsdetectie: harde remmingen en afwijkend remgedrag bij stations op basis van GPS-acceleratie |
| /stats | Prestatiestatistieken (NDOV): punctualiteit per station, treinserie en baanvak met KPI-tegels en grafiek |
Architectuur
De backend is opgebouwd in lagen. Route handlers in api/routes/ delegeren businesslogica naar een aparte servicelaag in src/nsapi/services/.
HTML-fragmenten worden server-side gebouwd en via HTMX in de pagina gezet — geen JavaScript-framework nodig.
Een achtergrondpoller verzamelt elke 15 seconden live treinposities via de Virtual Train API en slaat snapshots op in SQLite. Caching per endpoint (7–300 seconden in-memory) voorkomt overbelasting van externe APIs.
NDOV API backend
Naast de officiële NS-APIs is er een eigen NDOV-backend gebouwd die draait op
ndov.yingkidcheung.nl.
Deze backend ontsluit NS-databronnen die niet via de publieke API beschikbaar zijn,
zoals de RIT-feed en realtime GPS-posities.
Databronnen
Endpoints (selectie)
De materieel- en treinseriepagina's zijn volledig gebaseerd op NDOV-data. Op de kaart- en vertrektijdenpagina's is de NDOV-bron selecteerbaar naast de standaard NS API.