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 -d with the example compose file in the
repo
- No external account, no telemetry, JWT in HttpOnly cookies, secrets
auto-generated on first boot
Links
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.
No worrys , I didn’t understand it in a negative way. Just realized that tracking might be the wrong word to describe the use case of TravStats.