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.

  • northendtrooper@lemmy.ca
    link
    fedilink
    English
    arrow-up
    6
    ·
    18 hours ago

    Love seeing projects like this! Having it in docker compose is nice when flights are coming up to show my kids. Then I can tear it down.