Endurain

A private Strava for your runs, rides and swims, plus sleep, weight and steps.

Health & fitness AGPL-3.0-only

What it does

Endurain keeps a diary of your exercise on your own server. Upload files from your watch or bike computer, or link Garmin Connect or Strava, and see each run, ride or swim with its map, pace and heart rate. A health section tracks sleep, weight, steps, water and more, and you can set weekly goals. Friends can follow you, but everything is private unless you choose to share it.

  • Maps, pace, heart rate and laps for every activity, from .fit, .gpx or .tcx files
  • Automatic sync with Garmin Connect and Strava
  • Health tracking for sleep, weight, steps, water and fasting
  • Private by default, with followers and optional public links

Great for: Runners, cyclists and swimmers who want Strava-style tracking without handing their routes to a big company.

Make it yours: ideas

Pick an idea to start from, or describe your own.

How easy is it to adapt?

A substantial two-part app: a FastAPI backend split into strict modules (backend/app/modules/) with import rules enforced by tests, and a Vue 3 TypeScript frontend organised by feature (frontend/src/features/). The frontend's API types are generated from the backend. Upstream's AGENTS.md and skills are thorough, which helps an AI a lot, but most changes touch both halves. Your AI always tries the gentlest step first, so your version stays easy to update.

  1. Settings 4 options

    No code. Change it in the app or its config.

    • Default visibility for new activities and which details (start time, map, heart rate…) are hidden from others.
    • Metric or imperial units, public share links, who can sign up, password rules, map tiles and the login page picture.
    • Goals per sport for distance, time, elevation, calories or number of activities, and targets for sleep, steps, weight and water.
    • The interface language for each person.
  2. Extend 2 options

    Themes, plugins, webhooks and the API. Still no fork.

    • Connect Garmin Connect, Strava, Gadgetbridge or RunnerUp so activities arrive by themselves.
    • Bulk-import years of .fit/.gpx/.tcx files or a Strava export; upload new files from scripts with an API key.
  3. Code 2 options

    Your AI edits the source for anything else.

    • New or changed screens, such as a different home page or a new chart.
    • New data or behaviour. Regenerate frontend types with `npm run gen:api` afterwards.

Can I trust it?

  • AGPL-3.0-only. Free to use and change. If you run a changed version that other people use over the internet (not just you or your household), you must offer them your source code under the same licence. "Endurain" is a trademark: self-hosting and non-commercial use of the name are fine, but paid hosting under that name needs the author's permission.
  • Your data: stores personal data, on your own device or server. PostgreSQL (LOCAL_PATH/postgres) for activities, health data and users; original activity files and photos in LOCAL_PATH/backend/data.
  • Other services: Garmin Connect (optional, free with a Garmin account); Strava (optional, free (needs your own Strava API app)); Reverse geocoding (Nominatim, Photon or geocode.maps.co) (optional, free public services by default); Email (SMTP) (optional, free with most providers); OIDC single sign-on (Authentik, Authelia, Keycloak, Pocket ID…) (optional, free (self-hosted) or varies)
  • Pinned version 2f33e45. Every handover uses exactly this code, which we've reviewed.
  • Change the default admin/admin password straight after the first start.
  • Serve it only over HTTPS behind a reverse proxy. Production login cookies won't work on plain http.
  • GPS tracks reveal your home and routines. Keep activities private or hide start locations before sharing.
  • By default, start coordinates are sent to the public OpenStreetMap Nominatim service to name the place. Self-host a geocoder if that worries you.
  • Keep SECRET_KEY, FERNET_KEY and database passwords out of AI chats. Losing FERNET_KEY means reconnecting Garmin and Strava.

Did it work for people?

No reports yet

Be the first to tell others how it went.

Tell us how it went

For your AI

The project pack has the pinned version, how to run it, and where to customise it. Your prompt links to it automatically.

https://handoff.bespokeai.software/p/endurain/2f33e45/pack.md

Plan your workouts, log your training and meals, and watch your progress.

Health & fitness

Tick off your daily habits and watch your streaks grow, without goals or nagging.

Health & fitness