Files
mta-sign/README.md
2026-01-20 22:55:20 -05:00

84 lines
2.8 KiB
Markdown

# 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](attachments/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](attachments/swagger.png)
## Features
- **Real-time MTA Data**: Live train arrival times for NYC subway
stations - [available for free here](https://api.mta.info/#/subwayRealTimeFeeds)
- **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:
```bash
docker pull ghcr.io/lucasoskorep/pi-mta-sign:latest
```
Run the container:
```bash
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:
```bash
# 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:
- [just](https://github.com/casey/just)
- [uv](https://github.com/astral-sh/uv)
- [fnm](https://github.com/Schniz/fnm)
Once you have all the required tooling all you need to do is
```bash
just init # downloads python
just dev # this will spin up the nextjs frontend and fastapi backend in hot reload mode
```