Metadata-Version: 2.4
Name: fittrackee
Version: 1.0.2
Summary: Self-hosted outdoor workout/activity tracker
License: AGPL-3.0-only
License-File: LICENSE
Author: SamR1
Requires-Python: >=3.10,<4.0
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: Flask
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: JavaScript
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: authlib (==1.6.5)
Requires-Dist: babel (>=2.11.0,<3.0.0)
Requires-Dist: click (>=8.3.0,<9.0.0)
Requires-Dist: dramatiq-abort[redis] (>=1.2.1,<2.0.0)
Requires-Dist: dramatiq[redis] (>=1.15.0,<2.0.0)
Requires-Dist: feedgenerator (>=2.2.1,<3.0.0)
Requires-Dist: fitdecode (==0.11.0)
Requires-Dist: flask (>=3.1.2,<4.0.0)
Requires-Dist: flask-babel (>=4.0.0,<5.0.0)
Requires-Dist: flask-bcrypt (>=1.0.1,<2.0.0)
Requires-Dist: flask-dramatiq (>=0.6.0,<0.7.0)
Requires-Dist: flask-limiter[redis] (>=4.0.0,<5.0.0)
Requires-Dist: flask-migrate (==4.1.0)
Requires-Dist: flask-sqlalchemy (==3.1.1)
Requires-Dist: geoalchemy2[shapely] (>=0.18.0,<0.19.0)
Requires-Dist: geopandas (==1.1.1)
Requires-Dist: gpxpy (==1.6.2)
Requires-Dist: gunicorn (>=23.0.0,<24.0.0)
Requires-Dist: humanize (>=4.14.0,<5.0.0)
Requires-Dist: jsonschema (>=4.25.1,<5.0.0)
Requires-Dist: lxml (>=6.0.2,<7.0.0)
Requires-Dist: mistune (>=3.1.4,<4.0.0)
Requires-Dist: nh3 (>=0.3.2,<0.4.0)
Requires-Dist: numpy (==2.2.6)
Requires-Dist: pandas (==2.3.3)
Requires-Dist: psycopg2-binary (>=2.9.11,<3.0.0)
Requires-Dist: pyjwt (>=2.10.1,<3.0.0)
Requires-Dist: pyopenssl (>=25.3.0,<26.0.0)
Requires-Dist: pytz (>=2025.2,<2026.0)
Requires-Dist: shortuuid (>=1.0.13,<2.0.0)
Requires-Dist: sqlalchemy (==2.0.44)
Requires-Dist: staticmap3[filecache] (>=0.1.0,<0.2.0)
Requires-Dist: ua-parser (>=1.0.0,<2.0.0)
Requires-Dist: xmltodict (>=1.0.2,<2.0.0)
Project-URL: Changelog, https://docs.fittrackee.org/en/changelog.html
Project-URL: Documentation, https://docs.fittrackee.org
Project-URL: Homepage, https://github.com/SamR1/FitTrackee
Project-URL: Issues, https://github.com/SamR1/FitTrackee/issues
Project-URL: Release Notes, https://github.com/SamR1/FitTrackee/releases
Description-Content-Type: text/markdown

# FitTrackee
**A simple self-hosted workout/activity tracker.**  


[![Python Version](https://img.shields.io/pypi/pyversions/fittrackee.svg)](https://python.org)
[![Flask Version](https://img.shields.io/badge/flask-3.1-brightgreen.svg)](http://flask.pocoo.org/) 
[![code formatter: ruff](https://img.shields.io/badge/code%20formatter-ruff-d7ff64)](https://docs.astral.sh/ruff/) 
[![type check: mypy](https://img.shields.io/badge/type%20check-mypy-blue)](http://mypy-lang.org/)  
[![Vue Version](https://img.shields.io/badge/vue-3.5-brightgreen.svg)](https://v3.vuejs.org/) 
[![code formatter: prettier](https://img.shields.io/badge/code%20formatter-prettier-ff69b4.svg)](https://github.com/prettier/prettier) 
[![Typescript Version](https://img.shields.io/npm/types/typescript)](https://www.typescriptlang.org/)  
[![PostgreSQL version](https://img.shields.io/badge/PostgreSQL-13_|_14_|_15_|_16_|_17_|_18-336791)](https://www.postgresql.org/) [![PostgreSQL version](https://img.shields.io/badge/PostGIS-3.4_|_3.5_|_3.6-5b7b9f)](https://postgis.net/)  
[![PyPI version](https://img.shields.io/pypi/v/fittrackee?logo=pypi)](https://pypi.org/project/fittrackee/) [![docker image version](https://img.shields.io/docker/v/fittrackee/fittrackee?logo=docker)](https://hub.docker.com/r/fittrackee/fittrackee)  
[![Coverage Status](https://coveralls.io/repos/github/SamR1/FitTrackee/badge.svg?branch=main)](https://coveralls.io/github/SamR1/FitTrackee?branch=main)<sup><sup>1</sup></sup> [![pipeline status](https://github.com/SamR1/FitTrackee/actions/workflows/.tests-and-publish-python.yml/badge.svg)](https://github.com/SamR1/FitTrackee/actions/workflows/.tests-and-publish-python.yml)
[![pipeline status](https://github.com/SamR1/FitTrackee/actions/workflows/.tests-javascript.yml/badge.svg)](https://github.com/SamR1/FitTrackee/actions/workflows/.tests-javascript.yml)  
[![translation status](https://hosted.weblate.org/widgets/fittrackee/-/svg-badge.svg)](https://hosted.weblate.org/engage/fittrackee/)
[![translation languages](https://hosted.weblate.org/widget/fittrackee/language-badge.svg)](https://hosted.weblate.org/engage/fittrackee/)   
[![Matrix](https://img.shields.io/matrix/fittrackee%3Amatrix.org?logo=matrix)](https://matrix.to/#/#fittrackee:matrix.org)
[![Mastodon Follow](https://img.shields.io/mastodon/follow/109270806934115805?domain=fosstodon.org)](https://fosstodon.org/@FitTrackee)  
---

Web application allowing tracking of outdoor activities (workouts) from files, \
with data on your own server.  

Several mobile apps or devices can store workouts data locally and export them into a file.  
Examples for Android (non-exhaustive list):  
* [Runner Up](https://github.com/jonasoreland/runnerup) (GPLv3)  
* [OpenTracks](https://github.com/OpenTracksApp/OpenTracks) (Apache License)  
* [FitoTrack](https://codeberg.org/jannis/FitoTrack) (GPLv3)  

It is also possible to add a workout without a file.

Map data from [OpenStreetMap](https://www.openstreetmap.org).  

## Documentation

- [Features](https://docs.fittrackee.org/en/features.html)
- [Installation instructions](https://docs.fittrackee.org/en/installation.html)
- [Changelog](https://docs.fittrackee.org/en/changelog.html)
- [Troubleshooting](https://docs.fittrackee.org/en/troubleshooting/index.html)
- [Contributing](https://docs.fittrackee.org/en/contributing.html)

**Under heavy development (some features may be unstable).**  
(see [issues](https://github.com/SamR1/FitTrackee/issues) and [documentation](https://docs.fittrackee.org) for more info.)  

![FitTrackee Dashboard Screenshot](https://docs.fittrackee.org/en/_images/dashboard.png)

## Translations

FitTrackee uses [Weblate](https://hosted.weblate.org/engage/fittrackee/) for translation management.

Status (on development branch, may differ from the released version):

[![Translation status](https://hosted.weblate.org/widget/fittrackee/multi-auto.svg)](https://hosted.weblate.org/engage/fittrackee/)

---

1: _test coverage: only for Python API and CLI_ 

