finds.dev← search

// the find

jovandeginste/workout-tracker

★ 1,233 · Go · NOASSERTION · updated Jun 2026

A workout tracking web application for personal use (or family, friends), geared towards running and other GPX-based activities

A self-hosted workout tracker focused on GPX-based activities like running and cycling. Single Go binary, SQLite or Postgres backend, multi-user with admin activation. The target is someone who wants Strava-like features without the subscription or the data harvesting.

The route segment matching is a genuinely useful feature — define a segment once, and the app detects when any future workout crosses it, so you can track your progress on a specific climb or trail without manual effort. The stack choice is sensible: templ for type-safe HTML templates, HTMX for interactivity without a JS framework, Echo for routing — no unnecessary complexity. Multi-format import (GPX, TCX, FIT) plus direct API integration with tools like FitoTrack means you can automate uploads from your phone without touching the web UI. The single-binary deployment with embedded assets is genuinely zero-dependency on the server side.

The test situation is honestly bad — the TODO in the readme literally has five exclamation points after 'write tests'. The existing tests are sparse, mostly covering parsing edge cases, not the application logic. FIT file elevation is broken and has been an open issue for a while, which matters because most Garmin and Apple Watch exports are FIT. Geocoding depends on external services (OSM, Esri) with no fallback and no rate limit handling beyond an offline mode that just returns nil, so a flaky network silently drops location data. The Fitbit sync is a separate CLI binary that requires OAuth dance setup, which is documented but fiddly — not something non-technical family members will configure.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →