FuelMind ist eine lokal betreibbare Benzinpreis-App fuer private Nutzung. Die Anwendung kombiniert aktuelle Tankerkoenig-Abfragen mit lokaler Historisierung, Favoriten, Preisalarmen, Analysefunktionen und einer Docker-faehigen Architektur fuer NAS-Systeme und Linux-Server.
Private fuel price app for NAS systems with local history, alerts, analytics and Docker deployment.
FuelMind richtet sich an Menschen, die Tankpreise lokal beobachten wollen, ohne ihre Daten oder ihren Workflow an einen fremden Cloud-Dienst abzugeben. Die App laeuft im eigenen Netzwerk, speichert Historie lokal und ist auf self-hosted Setups mit NAS oder Home-Server ausgelegt.
Highlights
- self-hosted und Docker-basiert
- lokale Preis-Historie statt reiner Live-Abfrage
- Favoriten, Preisalarme und Analyse in einer Anwendung
- optimiert fuer NAS-Systeme und private Netzwerke
- aktuelle Preise fuer E5, E10 und Diesel abrufen
- Tankstellen im Umkreis nach Preis oder Distanz suchen
- Favoriten lokal speichern und regelmaessig aktualisieren
- Preisalarme fuer einen Standort und Suchradius anlegen
- Preis-Snapshots historisieren und spaeter auswerten
- lokale Empfehlungen und guenstige Zeitfenster ableiten
- auf UGREEN, Synology, QNAP oder generischen Linux-Servern laufen
frontend: React, Vite, TypeScriptbackend: FastAPI, SQLAlchemy, APSchedulerpostgres: PostgreSQL 16 mit PostGISredis: Cache fuer API-Abfragen
Mehr Details:
- Docker Engine mit Docker Compose Plugin
- gueltiger Tankerkoenig-API-Key
- lokales oder privates Netzwerk fuer den Betrieb
- Projekt kopieren oder klonen.
.env.examplenach.envkopieren.TANKERKOENIG_API_KEYundPOSTGRES_PASSWORDsetzen.- Stack starten:
docker compose up -dDanach ist die Anwendung typischerweise unter diesen Adressen erreichbar:
- Frontend:
http://localhost:3000 - Backend/OpenAPI:
http://localhost:8000/docs - Healthcheck:
http://localhost:8000/api/health
Pflicht:
TANKERKOENIG_API_KEYPOSTGRES_PASSWORD
Haeufig angepasst:
DEFAULT_LATDEFAULT_LNGDEFAULT_RADIUS_KM=10DEFAULT_FUEL_TYPE=e10ENABLE_SCHEDULER=trueFRONTEND_API_BASE_URL=http://localhost:8000/apiALLOW_PUBLIC_API=false
Optional:
APP_INTERNAL_TOKENNOTIFICATION_MODESMTP_*NTFY_TOPICTELEGRAM_*
docker compose up -d
docker compose logs -f backend
docker compose down
docker compose down -vOptional:
docker compose --profile tools up -d adminerdocker compose --profile observability up -d grafana
Auf dem NAS kannst du das Hilfsskript fuelmind.sh nutzen:
bash fuelmind.sh
bash fuelmind.sh status
bash fuelmind.sh logs
bash fuelmind.sh stopWenn du auf dem NAS lieber direkt nur fuelmind tippen willst:
bash install-fuelmind-command.sh
export PATH="$HOME/.local/bin:$PATH"
fuelmind
fuelmind statusDas Skript sync-to-nas.ps1 kopiert den Projektordner nach Z:\docker\fuelmind:
cd C:\Users\dietm\Documents\Codex\2026-04-21-du-bist-codex-und-arbeitest-als\fuelmind
powershell -ExecutionPolicy Bypass -File .\sync-to-nas.ps1Standardverhalten:
.envwird aus Sicherheitsgruenden nicht automatisch auf das NAS kopiert- wenn du sie bewusst mitsynchronisieren willst:
powershell -ExecutionPolicy Bypass -File .\sync-to-nas.ps1 -IncludeEnvFileDanach auf dem NAS bei Bedarf:
fuelmind rebuild- Dashboard: guenstige Tankstellen, Empfehlung und schneller Ueberblick
- Stationssuche: Umkreissuche, Standortwahl, Favoritenanlage
- Favoriten: lokal gespeicherte Tankstellen und letzte Snapshots
- Preisalarme: Regeln nach Standort, Radius und Preisgrenze
- Analyse: Stundenprofile, Historie und guenstige Zeitfenster
- Einstellungen: Standardstandort, Standardfilter und Scheduler-Status
GET /api/healthGET /api/stations/nearbyGET /api/stations/{station_id}POST /api/stations/sync-nearbyGET /api/prices/currentGET /api/prices/history/{station_id}GET /api/prices/cheapestGET /api/favoritesPOST /api/favoritesDELETE /api/favorites/{id}GET /api/alertsPOST /api/alertsPUT /api/alerts/{id}DELETE /api/alerts/{id}POST /api/alerts/check-nowGET /api/analytics/station/{station_id}GET /api/analytics/best-timeGET /api/prediction/recommendationGET /api/settingsPUT /api/settings/defaults
Beispiele stehen in docs/api.md und scripts/example_requests.http.
Die wichtigsten Tabellen:
stationsprice_snapshotsprice_changesfavorite_stationsalert_rulesalert_eventsapp_settings
Mehr dazu in docs/data_model.md.
sync_favorites_prices: alle 10 Minutencheck_alerts: alle 5 Minutencleanup_old_cache: taeglich
Der Scheduler kann ueber ENABLE_SCHEDULER=false deaktiviert werden.
Wichtig: FuelMind fuehrt keine deutschlandweite Massenabfrage durch. Automatische Jobs arbeiten nur auf Favoriten und expliziten Alert-Radien.
FuelMind arbeitet lokal mit historischen Preis-Snapshots und leitet daraus einfache Empfehlungen ab.
Aktuell vorbereitet:
- Stundenprofile pro Tankstelle
- Min/Max/Durchschnittswerte
- guenstige Zeitfenster per Stundenaggregation
- heuristische Empfehlung
tank_now,waitoderneutral
Beispiel:
tank_now, wenn der aktuelle Preis unter dem 25%-Quantil der letzten 7 Tage liegtwait, wenn spaeter historisch guenstigere Zeitfenster auftretenneutral, wenn die Datenlage uneindeutig ist
Das Skript scripts/import_historical_prices.py ist als Adapterstruktur fuer spaetere historische Datenquellen vorbereitet.
Enthalten sind u. a.:
detect_format()validate_columns()parse_row()insert_batch()
- FuelMind ist fuer private, lokale Nutzung vorgesehen.
- Die Tankerkoenig-AGB und die Bedingungen der MTS-K sind einzuhalten.
- Die Daten duerfen nicht automatisiert massenhaft abgefragt werden.
- Die Daten duerfen nicht an Mineraloelunternehmen, Tankstellenbetreiber oder fuer diese taetige IT-Dienstleister weitergegeben werden.
- Die bezogenen Datensaetze duerfen nicht als eigene API an Dritte weitergereicht werden.
- Die App ist kein Preissteuerungs- oder Preisoptimierungssystem fuer Tankstellen.
- Nutzerinnen und Nutzer sind selbst fuer die Einhaltung der Nutzungsbedingungen verantwortlich.
Der Quellcode dieses Repositories steht unter der MIT-Lizenz.
Wichtig:
- Die MIT-Lizenz gilt fuer den Code in diesem Repository.
- Externe APIs, Datenquellen, Marken, Kartenkacheln und Inhalte von Drittanbietern behalten ihre eigenen Nutzungsbedingungen.
- Fuer die Nutzung der Tankerkoenig-Daten gelten weiterhin die jeweiligen API- und Datenbedingungen.
healthzeigtdatabase=error: PostgreSQL-Container, Zugangsdaten und Volumes pruefenredis=erroroderunavailable: FuelMind laeuft weiter, aber ohne zentralen Cache503bei Stationssuche: API-Key, Internetzugang und Tankerkoenig-Verfuegbarkeit pruefen- Frontend erreicht Backend nicht:
FRONTEND_API_BASE_URLund Port-Mappings pruefen - Keine Empfehlungen: zuerst lokale Historie ueber Suche, Favoriten oder Scheduler aufbauen
Backend-Tests laufen mit pytest und verwenden nur gemockte externe API-Daten:
cd backend
pytestFuer eine bessere GitHub-Startseite findest du hier vorbereitete Inhalte:







