Files
mvg-departures/README.md
T
2026-08-01 20:18:33 +02:00

96 lines
2.6 KiB
Markdown

# mvg-departures
Kompakter Abfahrtsmonitor fuer MVG U-Bahn und S-Bahn (Muenchen), primaer fuer mobile Nutzung optimiert.
## Features
- Konfigurierbare Stationsliste (`config.yaml`) mit Typ (UBAHN/SBAHN/TRAM/BUS)
- Ausschluss-Filter pro Station: nur unerwuenschte Zielrichtungen werden ausgeblendet,
neue/unbekannte Ziele werden automatisch weiter angezeigt
- Zwei Endpunkte:
- `/` — mobile-optimierte HTML-Ansicht mit Auto-Refresh (alle 60s per Meta-Refresh)
- `/api/departures` — JSON-Ausgabe derselben Daten
- Anzeige von Linie, Ziel, Abfahrtszeit, Verspaetung und Stoerungsmeldungen
- Visuelle Unterscheidung von U-Bahn (blau) und S-Bahn (gruen) per Icon
## Konfiguration
Siehe `config.yaml`:
```yaml
refresh_seconds: 60
cache_seconds: 20
departures_limit: 10
stations:
- name: "Josephsburg, München"
type: "UBAHN"
exclude_destinations:
- "Messestadt Ost"
- "Messestadt West"
- name: "Berg am Laim, München"
type: "SBAHN"
exclude_destinations:
- "Erding"
- "Markt Schwaben"
```
`exclude_destinations` filtert per exaktem `destination`-Stringvergleich. Alles was
NICHT in der Liste steht, wird angezeigt — so fallen Linienaenderungen/Umleitungen
sofort auf, statt lautlos verschwunden zu sein.
## Lokal starten
```bash
pip install -r requirements.txt
uvicorn app.main:app --reload
```
## Docker
```bash
docker build -t mvg-departures .
docker run -p 8000:8000 -v $(pwd)/config.yaml:/app/config.yaml mvg-departures
```
## Deployment (Beispiel docker-compose, nicht im Repo)
```yaml
services:
mvg-departures:
image: ghcr.io/<github-user>/mvg-departures:latest
container_name: mvg-departures
ports:
- "8090:8000"
volumes:
- ./config.yaml:/app/config.yaml:ro
environment:
- TZ=Europe/Berlin
restart: unless-stopped
labels:
- "com.centurylinklabs.watchtower.enable=true"
```
## CI/CD
`.github/workflows/build.yml`:
- Baut bei jedem Push auf `main` das Docker-Image und pusht es nach
`ghcr.io/<owner>/<repo>:latest` sowie mit Short-SHA-Tag
- Anschliessender Cleanup-Job loescht alte Image-Versionen in der GHCR-Package-Registry
und behaelt nur die letzten 4 Versionen (`min-versions-to-keep: 4`)
### Voraussetzung
Repo-Settings → Actions → General → Workflow permissions auf
"Read and write permissions" stellen, sonst schlaegt der Push nach GHCR fehl.
## Endpunkte
| Route | Beschreibung |
|---|---|
| `/` | HTML-Ansicht, mobile-optimiert, Auto-Refresh alle 60s |
| `/api/departures` | JSON-Liste aller gefilterten Abfahrten |
| `/healthz` | Healthcheck fuer Docker/Watchtower |