Self-hosted workout data tracking server.
Multiple users can track their workout data using different accounts.
Record the data of your workout sessions after you have finished them.
Supported workout types:
Distance-based:
- Biking
- Running
- Hiking
Duration-based:
- Fitness Workouts
You can fill in a lot of information for each workout session. If the pre-defined inputs are not enough, it is possible to set custom fields for each type of workout.
You can share your workouts via public links.
Set custom month goals (either distance, duration or number of workouts). The current status of each month goal is visualized via progress bars.
A GPX recoding can be attached to every distance-based workout. The GPX recordings can be viewed on a map.
View a single gpx track on a map, with additional information (e.g. track line is colored according to speed):
SportTracker also supports .fit files in addition to gpx. Those files will be stored in the data
folder as well.
During upload of a .fit file for a workout or planned tour, a gpx file is automatically generated from the .fit file.
NOTE: The converted gpx file will only contain basic data like latitude, longitude, timestamps and altitude information.
Each user can optionally enable tile hunting.
If enabled an additional map is provided that shows all already visited tiles. A tile is considered visited if one or more gpx tracks cross it. By default, the size of a tile is equivalent to the size of an OpenStreetMap tile at zoom level 14 (This can be configured in the SportTracker settings file).
Tile hunting can be useful to discover new areas in your surrounding or gain some motivation to explore new routes.
To plan your next tile hunting route you may want to allow access to your tile hunting map via a share code in your user settings.
This can be useful to add a custom overlay to OpenStreetMap based maps, e.g. https://bikerouter.de.
- Add a custom overlay layer
- Use the url shown on your user settings page (e.g. http://localhost/map/tileOverlay/1df60cca70c340239cfd869673443be4/{z}/{x}/{y}.png)
Tracked data is visualized in charts, e.g.:
- Distance per month
- Average speed
- Duration per workout
- etc.
Every year is summarized for each workout type.
The achievement page shows aggregated information about all your workouts.
Record your maintenance events for each workout type. You can optionally set reminders for each maintenance.
Save your planned tours for each workout type (distance-based types) and view them on a map. Once you actually took a planned tour you can link the corresponding workout to the tour.
Share planned tours with other SportTracker users or create public links.
SporTracker can show a preview image for each planned tour. The images are not generated by SportTracker.
An external service can be used instead.
In order to activate gpx preview images, follow these steps:
1. Set up a georender instance https://github.com/deadlocker8/georender (forked from https://github.com/loskoderos/georender)
- a) Build docker image:
docker build -t georender .
- b) Run docker image with specific settings:
docker run -p 3000:3000 georender -w 800 -h 450 -t osm
2. Enable gpx preview images in your SporTracker settings.json
Update the section gpxPreviewImages
in your settings.json to contain the following values
"gpxPreviewImages": {
"enabled": true,
"geoRenderUrl": "http://localhost:3000"
}
Where http://localhost:3000 is the address and port number of your georender instance started in step 1.
- German
- English
SportTracker offers a basic REST-API for the most common use-cases.
The corresponding swagger-ui is available at /api/docs
- Install dependencies via
poetry install --no-root --without dev
- Copy
settings-example.json
tosettings.json
and adjust to your configuration - Run the server:
<path_to_python_executable_in_poetry_venv> src/SportTracker.py
💡 Or use the docker image.
--debug
,-d
= Enable debug mode--dummy
,-dummy
= Generate dummy workouts and demo user
Updating to the latest SportTracker release may require database migration.
This is only necessary if you already have a running SportTracker instance and a database filled with entries.
Whether a database migration is necessary will be stated in the release notes.
The migration will be performed automatically upon start of SportTracker.
Python dependencies can be found in pyproject.toml
and corresponding poetry.lock
.
- Bootstrap https://getbootstrap.com/
- Leaflet https://leafletjs.com/
- Mousetrap https://craig.is/killing/mice
- plotly.js https://github.com/plotly/plotly.js
- jQuery https://jquery.com/
- Google Material Symbols https://fonts.google.com/icons
- Font Awesome Icons https://fontawesome.com/
- bike icon by Google Material Icons https://fonts.google.com/icons?selected=Material%20Icons%3Adirections_bike%3A
- runner icon by Google Material Icons https://fonts.google.com/icons?selected=Material%20Icons%3Adirections_run%3A
- checklist icon by Freepik - Flaticon https://www.flaticon.com/de/kostenlose-icons/hakchen