Installation
############
**FitTrackee** can be installed:
- via a single Python package from `PyPI `__,
- from sources,
- with a `Docker `__ image.
Thanks to contributors, packages are also available on `Yunohost `__ and `NixOS `__.
Main dependencies
*****************
This application is written in Python (API) and Typescript (client):
- API:
- Flask
- `SQLAlchemy `_ and `geoalchemy2 `_ to interact with the database
- `gpxpy `_ to parse gpx files
- `fitdecode `_ to parse fit files
- `GeoPandas `_ to work with geospatial data
- `Static Map 3 `_, a fork of `Static Map `_ to generate a static map image from file coordinates
- `Dramatiq `_ and `Flask-Dramatiq `_ for task queue
- `Authlib `_ for OAuth 2.0 Authorization support
- `Flask-Limiter `_ for API rate limits
- `gunicorn `_ to serve application
- Client:
- Vue3/Vuex
- `Leaflet `__ to display map
- `Chart.js `__ to display charts
- `heatmap.js `__ (`fork `__) and `leaflet-heatmap `__ to display heatmap for rackets sports
- `zxcvbn-ts `_ for password strength estimation
| Logo, most of sports icons and weather icons are made by `Freepik `__ from `Flaticon `__.
| FitTrackee also uses icons from `Fork Awesome `__.
| Sports icons for Canoeing, Kayaking and Rowing are made by `@Von-Birne `__.
| Sport icon for Halfbike is made by `@astridx `__.
Instance types
**************
Single-user instance
====================
| For a single-user instance, `registration <../features/administration.html#configuration>`__ can be disabled.
| So all you need is Python and PostgreSQL/PostGIS database if you want to keep the setup simple. A `CLI <../cli.html#users>`__ is available to manage user account.
Multiple-users instance
=======================
| Registration can en enabled and maximum number of accounts can be set in the `Administration <../features/administration.html#configuration>`__.
| It is recommended to set Redis and a SMTP provider for email sending and tasks processing. Alternatively, a `CLI <../cli.html#users>`__ is available to manage users account.
Prerequisites
*************
- mandatory
- installation from sources or package:
- `Python `__ 3.10+
- `PostgreSQL `__ 14+
- `PostGIS `__ 3.4+
- `GDAL `__ on the server running the application, if different from the server running the database (GDAL is installed with PostGIS)
- installation with Docker:
- `Docker `__ and `Docker Compose `__ v2.30+
- optional
- `Redis `__ for `task queue `__ (for `email `__ sending if enable, for data export requests, and asynchronous archive uploads if enabled) and `API rate limits `__ (for installation from sources or package)
- SMTP provider (if `email `__ sending is enabled)
- API key from a `weather data provider `__
- `elevation data provider `__
- `Poetry `__ 1.2+ (for installation from sources only)
- `Node `__ 20+ and `Yarn `__ (for development only)
.. note::
| If registration is enabled, it is recommended to set Redis and a SMTP provider for email sending and data export requests.
.. note::
Depending on the operating system and the version of Python installed, additional dependencies may be required, such as **gcc** or **libgdal-dev**.
.. important::
This documentation does not detail how to secure a server. Please refer to the documentation and best practices corresponding to your installation and operating system.
.. toctree::
:maxdepth: 2
environments_variables.rst
installation
upgrade
deployment
map_tile_server
weather
elevation
emails
api_rate_limits
tasks_processing