Interactive map of NJ Transit bus routes, NJ Transit rail lines, and local shuttle routes with route-level filtering, area-based selection, and stop-level schedule popups.
Live app: https://nj-transit.vercel.app
uv- Python 3.10+
- Build data (refresh feeds + regenerate route/schedule JSON):
uv run scripts/build_njt_data.py --refresh- Start a local static server:
uv run python -m http.server 8000- Open:
http://localhost:8000
Default (recommended): route/line geometry in data/routes/ plus schedule payloads in data/schedules/.
uv run scripts/build_njt_data.py --refreshInline schedules (larger route files, fewer hover fetches):
uv run scripts/build_njt_data.py --inline-schedules --refreshNo stop schedules (smallest payload):
uv run scripts/build_njt_data.py --no-stop-schedules --refreshsrc/
app/
routes/
config/
data/
map/
ui/
utils/
scripts/
build_njt_data.py
data/
manifest.json
routes/
schedules/
index.html
styles.css
sw.js
- Route/line files are lazy-loaded when selected.
- Schedule files are prefetched after route load so stop hover popups render quickly.
- GTFS archives are cached under
data/for reproducible rebuilds.