Departure Board
Sign in to view live arrival times
How It Works
Four integrated layers register locations, collect data, serve it via API, and display real-time transit departures in your browser.
Scheduled Feed Processor
A background Python process polls the GTFS Realtime feed on a fixed schedule. Each run parses live vehicle positions and trip updates, then writes current ETAs and delay data into a MySQL database — keeping the data fresh without any user interaction.
Station Mapping & Walk Time
Users register named locations (e.g. home or office) which are resolved to their nearest transit station by finding the closest stop in the GTFS dataset. Walk time from the registered location to that station is then calculated via the OpenRouteService (ORS) routing API, so departure countdowns account for the actual time needed to reach the platform.
Authenticated REST API
A FastAPI server handles authentication and data access. Clients POST credentials to /token and receive a short-lived JWT. All requests to /eta/{stop} require that Bearer token — returning arrivals within the next 90 minutes, ordered by ETA.
LED Ticker Renderer
After login the browser fetches ETA data and encodes each departure as a bitmap panel using a 5×7 dot-matrix font. Panels scroll continuously and the display refreshes every 60 seconds. An expired token returns the user to the login screen automatically.