Lucas Oskorep c7f1e6ab2d
All checks were successful
Build and Push Docker Image / build (push) Successful in 3m3s
nit: update comment
2026-01-20 23:20:26 -05:00
2026-01-20 22:55:20 -05:00
2026-01-20 22:55:20 -05:00
2026-01-20 22:25:25 -05:00
2023-05-02 01:18:10 -04:00
2026-01-20 22:50:05 -05:00
2024-03-26 02:21:16 -04:00
2026-01-20 23:20:26 -05:00
2023-05-02 01:18:10 -04:00

Pi MTA Sign!

This project gives you a docker image that you can run locally to pull MTA data and self-host a webpage that looks very similar to the classic MTA Signs found in the metro.

ui-example.png

Initially designed to run directly on a raspberry pi, it has been containerized and now runs anywhere you can install podman or docker!

Additionally, this can be run without the frontend in case you just wanted a slightly more sane way to query MTA's data sources compared to their stock APIs. Swagger is hosted at /swagger swagger.png

Features

  • Real-time MTA Data: Live train arrival times for NYC subway stations - available for free here
  • Configurable Stations: Monitor multiple stations simultaneously with separate cards
  • Line Filtering: Show/hide specific transit lines for each station
  • Direction Selection: Toggle between North/South bound trains independently
  • Responsive Design: Works on desktop, tablet, and mobile displays
  • Configuration Persistence: Save your selected stations and preferences to localStorage or export/import them via JSON
  • Docker Ready: Easy deployment with Docker or Docker Compose

Running via Docker

Quick Start with Docker

Pull the latest image from GitHub Container Registry:

docker pull ghcr.io/lucasoskorep/pi-mta-sign:latest

Run the container:

docker run -d \
  -p 8000:8000 \
  --name pi-mta-sign \
  ghcr.io/lucasoskorep/pi-mta-sign:latest

The application will be available at http://localhost:8000

Environment Variables

Variable Description Default Required
FRONTEND_ENABLE Enable/disable the web frontend true No
SHOW_SWAGGER Enable/disable Swagger API documentation at /swagger false No

Running with Docker Compose

For a more convenient setup, use the provided docker-compose configuration:


# Run with docker-compose
docker-compose up -d

See docker/docker-compose.example.yaml for a complete example configuration.

Local Development

To develop on this app locally you can clone the repo and then in the repo root run the following

Tools needed:

Once you have all the required tooling all you need to do is

just init # uses uv and fnm/pnpm to download and setup all python and node depencencies
just dev # this will spin up the nextjs frontend and fastapi backend in hot reload mode
Description
Service to provide a webpage that acts as an MTA sign that you can display in your home!
Readme MIT 926 KiB
Languages
TypeScript 72.6%
Python 20.1%
Just 2.2%
Shell 2.2%
Dockerfile 1.5%
Other 1.4%