Mobile-friendly CTA arrival data. Browse nearby stations, jump back to recents and favorites, and follow a specific train as it moves down the line.
Arrival and run data via slow-zone, which wraps the CTA's Train Tracker API.
Station data (names, locations, lines, accessibility) are sourced from the Chicago Data Portal. The app's cache of station information is updated weekly by a scheduled GitHub Action when something changes in the physical world.
Install Node 24, cp .env.example .env, and set at least CTA_API_KEY. Then:
pnpm run devSee .env.example for the full list. Of those:
CTA_API_KEY— key for the CTA Train Tracker API. Required at runtime. Passed through toslow-zone.GOOGLE_MAPS_STATIC_API_KEY— key for the Google Maps Static API. Used to render station map thumbnails. The maps won't show up without it, but the rest of the app works.CHICAGO_DATA_PORTAL_APP_TOKEN— app token for the Chicago Data Portal. Only needed if you runpnpm run update-stationslocally.
Automatically deployed via Vercel's Git Integration. Errors are reported to Sentry.