Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


This is a React app that relies heavily on's APIs to dynamically generate real-time route maps for the New York City subway with the help of Mapbox, particularly useful when service changes regularly occur on weekends and overnights.

A Mapbox theme was created for this project and has been made public.

See it live at

Running locally

  • Sign up for an account with Mapbox, get a token and add it to an .env file as MAPBOX_TOKEN.

  • Download Stations.csv from the MTA's website and drop it in /src/data/files

  • To have nice looking paths, download the GTFS schedule files from MTA at (agree to the terms, look for "GTFS" then download the data for New York City Transit). You'd need to parse out the shapes.txt file from the GTFS package. I wrote a script that takes .csv files to generate these paths. Each .csv file is expected to be a contiguous path for a train route. I took the first shape path (with some exceptions) for each route in shapes.txt and dumped each into its own .csv file before running it.

ruby src/data/generate_json.rb
ruby src/data/generate_transfers_json.rb
yarn install
yarn start