TravStats – self-hosted flight tracker with 3D globe, heatmap & email parser
TravStats – self-hosted flight tracker with 3D globe, heatmap & email parser
Hey r/selfhosted Lemmy crowd,
I built TravStats because I wanted to log my flights without handing my travel history to MyFlightradar24, App in the Air, or whatever SaaS-of-the-month. Started as a weekend project, has grown into something I actually use daily.
What it does
- Booking email parser — drop your Lufthansa / BA / Berge & Meer / whatever confirmation mail in and it auto-fills the flight via local LLM (Ollama, gemma3:12b works great). No manually typing 200 flights.
- 3D globe of all your routes (deck.gl + MapLibre), plus heatmap, hexagon, arc and time-slider modes — watch your flights build up over the years
- Boarding pass scanner as a fallback (OCR) for the cases where you only have the PDF
- Stats, achievements, certificates for the gamification fans
- Cruise tracking with sea-route rendering (because flights aren't the only travel) (Comming Soon)
- DE / EN UI
Stack
- Single Docker image, Postgres sidecar
- Node + TypeScript backend, React + Vite frontend
- AGPL-3.0
- Optional: Ollama on a separate box for the parser (CPU-only is fine, gemma3:12b on a Mac mini works)
Install
- Unraid: in Community Apps, search "TravStats" → one-click
- Anywhere else:
docker compose up -dwith the example compose file in the repo - No external account, no telemetry, JWT in HttpOnly cookies, secrets auto-generated on first boot
Links
- GitHub: https://github.com/Abrechen2/TravStats
- Docker Hub: https://hub.docker.com/r/abrechen2/travstats
- GHCR:
ghcr.io/abrechen2/travstats:latest
Still actively developing — currently on v1.2.1. Happy about feedback, issues, feature requests. If you give it a spin and the parser eats your booking confirmation cleanly, I'd love to hear it; if it doesn't, even more so.