I've been commuting on the Paris RER for years and got frustrated with the official apps — they tell you "traffic disrupted" but not where, how bad, or for how long.
Live map with actual train positions, updated every 10 seconds via WebSocket
Line status with delay severity levels (normal / disrupted / major / critical)
Stop-level timetables — next 3 departures, with real delays, not scheduled times
Push notifications when a train is approaching your stop
Delay certificate — generates a printable PDF with a per-minute history of delays (useful for justifying lateness to an employer)
Delay leaderboard — ranks all 5 RER lines by average delay over the last hour
Tech stack: React + Vite frontend, Node.js + Express backend, WebSocket for live positions, Redis for caching, PostgreSQL/PostGIS for geo queries. Data from Île-de-France Mobilités SIRI/GTFS APIs (public open data).
Some numbers:
500–800 trains tracked simultaneously at peak hours
45,000+ stop points across the full Île-de-France network
3 SIRI feeds merged per update cycle
~15,000 API calls/hour during peak windows
It's a PWA — no App Store, installs directly from the browser. Works on iOS and Android.
No ads, no data selling, most features work without an account. Auth (Google) is only needed for push notification preferences.
Happy to answer questions about the real-time architecture, the IDFM API quirks, or anything else.
Oh, and BTW: hosted on Railway because... trains :p
So I built o'RER: https://o-rer.com
What it does:
Live map with actual train positions, updated every 10 seconds via WebSocket Line status with delay severity levels (normal / disrupted / major / critical) Stop-level timetables — next 3 departures, with real delays, not scheduled times Push notifications when a train is approaching your stop Delay certificate — generates a printable PDF with a per-minute history of delays (useful for justifying lateness to an employer) Delay leaderboard — ranks all 5 RER lines by average delay over the last hour Tech stack: React + Vite frontend, Node.js + Express backend, WebSocket for live positions, Redis for caching, PostgreSQL/PostGIS for geo queries. Data from Île-de-France Mobilités SIRI/GTFS APIs (public open data).
Some numbers:
500–800 trains tracked simultaneously at peak hours 45,000+ stop points across the full Île-de-France network 3 SIRI feeds merged per update cycle ~15,000 API calls/hour during peak windows It's a PWA — no App Store, installs directly from the browser. Works on iOS and Android.
No ads, no data selling, most features work without an account. Auth (Google) is only needed for push notification preferences.
Happy to answer questions about the real-time architecture, the IDFM API quirks, or anything else. Oh, and BTW: hosted on Railway because... trains :p