train-tracker/README.md

96 lines
2.9 KiB
Markdown
Raw Normal View History

2024-09-28 14:13:32 +02:00
# DB Departure Tracker
## Beschreibung
Dieses Projekt ist ein Go-basierter Service, der Abfahrtsinformationen von verschiedenen Bahnhöfen der Deutschen Bahn abruft und in einer MariaDB-Datenbank speichert. Es verwendet die DB REST API, um Echtzeit-Abfahrtsdaten zu erhalten und aktualisiert die Positionen der Züge in regelmäßigen Abständen.
## Funktionen
- Abruf von Abfahrtsinformationen für mehrere Bahnhöfe
- Konfigurierbare Einstellungen für verschiedene Verkehrsmittel (Bus, Fähre, Straßenbahn, Taxi)
- Speicherung und Aktualisierung von Zugpositionen in einer MariaDB-Datenbank
- Verwendung von UUIDs für eindeutige Datenbankeinträge
- Konfiguration über Umgebungsvariablen
## Voraussetzungen
- Go 1.17 oder höher
- Docker und Docker Compose
- Zugang zur DB REST API
## Installation
1. Klonen Sie das Repository:
```
git clone https://github.com/yourusername/db-departure-tracker.git
cd db-departure-tracker
```
2. Erstellen Sie eine `.env` Datei im Projektverzeichnis und füllen Sie sie mit den erforderlichen Umgebungsvariablen (siehe Konfiguration).
3. Bauen und starten Sie die Docker-Container:
```
docker-compose up --build
```
## Konfiguration
Konfigurieren Sie die Anwendung durch Setzen der folgenden Umgebungsvariablen:
- `DB_DSN`: Datenbankverbindungsstring (z.B. "root:password@tcp(mariadb:3306)/traindb")
- `API_BASE_URL`: Basis-URL der DB REST API
- `MAX_RESULTS`: Maximale Anzahl der abzurufenden Ergebnisse pro Anfrage
- `DURATION`: Zeitspanne in Minuten für die Abfrage der Abfahrten
- `BUS`: Einbeziehung von Busabfahrten (true/false)
- `FERRY`: Einbeziehung von Fährabfahrten (true/false)
- `TRAM`: Einbeziehung von Straßenbahnabfahrten (true/false)
- `TAXI`: Einbeziehung von Taxiabfahrten (true/false)
- `STATION_IDS`: Komma-separierte Liste der Bahnhofs-IDs
Beispiel für eine `.env` Datei:
```
DB_DSN=root:password@tcp(mariadb:3306)/traindb
API_BASE_URL=http://db-rest:3000
MAX_RESULTS=10
DURATION=240
BUS=false
FERRY=false
TRAM=false
TAXI=false
STATION_IDS=8000226,8000234
```
## Verwendung
Nach dem Start läuft der Service kontinuierlich und ruft in regelmäßigen Abständen Abfahrtsinformationen ab. Die Daten werden in der konfigurierten MariaDB-Datenbank gespeichert.
## Datenbankschema
Die Anwendung verwendet folgendes Datenbankschema:
```sql
CREATE TABLE IF NOT EXISTS trips (
id VARCHAR(36) PRIMARY KEY,
latitude DOUBLE,
longitude DOUBLE,
timestamp DATETIME,
train_name VARCHAR(50),
fahrt_nr VARCHAR(20)
);
```
## Entwicklung
Um an diesem Projekt mitzuarbeiten:
1. Forken Sie das Repository
2. Erstellen Sie einen Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Committen Sie Ihre Änderungen (`git commit -m 'Add some AmazingFeature'`)
4. Pushen Sie den Branch (`git push origin feature/AmazingFeature`)
5. Öffnen Sie einen Pull Request
## Lizenz
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Siehe `LICENSE` Datei für Details.