Installation

This application is written in Python (API) and Javascript (client):

Sports and weather icons are made by Freepik from www.flaticon.com.

Prerequisites

  • PostgreSQL database (10+)

  • Redis for task queue

  • Python 3.7+

  • Poetry

  • Yarn and serve

  • API key from Dark Sky [not mandatory]

  • SMTP provider

Installation

The following steps describe an installation on Linux systems (tested on Debian and Arch).
On other OS, some issues can be encountered and adaptations may be necessary.

Warning

Since FitTrackee 0.2.1, Python packages installation needs Poetry. To install it on ArchLinux:

$ yay poetry
$ poetry --version
Poetry 1.0.5

# optional
$ poetry config virtualenvs.in-project true

For other OS, see Poetry Documentation

Dev environment

  • Clone this repo:

$ git clone https://github.com/SamR1/FitTrackee.git
$ cd FitTrackee
  • Update Makefile.config file if needed and copy/paste the ThunderForest and Dark Sky API keys value in Makefile.custom.config file (see Environment variables).

  • Install Python virtualenv, React and all related packages and initialize the database:

$ make install-dev
$ make install-db
  • Start the server and the client:

$ make serve
  • Run dramatiq workers:

$ make run-workers

Open http://localhost:3000 and login (the email is admin@example.com and the password mpwoadmin) or register

Prod environment

Warning

Note that FitTrackee is not production-ready yet

  • Download the last release (for now, it is the beta release v0.3.0):

$ wget https://github.com/SamR1/FitTrackee/archive/v0.3.0-beta.tar.gz
$ tar -xzf v0.3.0-beta.tar.gz
$ mv FitTrackee-0.3.0-beta FitTrackee
$ cd FitTrackee
  • Update Makefile.config file if needed and copy/paste the ThunderForest and Dark Sky API keys value in Makefile.custom.config file (see Environment variables).

  • Install Python virtualenv, React and all related packages and initialize the database:

$ make install
$ make install-db
  • Build the client:

$ make build-client
  • Start the server and the client:

$ make run
  • Run dramatiq workers:

$ make run-workers

Open http://localhost:3000, log in as admin (the email is admin@example.com and the password mpwoadmin) and change the password

Upgrade

Warning

Before upgrading, make a backup of all data:
- database (with pg_dump for instance)
- upload directory: FitTrackee/fittrackee_api/fittrackee_api/uploads/

Dev environment

  • Stop the application and pull the repository:

$ git pull
  • Update Makefile.config and Makefile.custom.config file if needed

  • Upgrade packages and database:

$ make install-dev
$ make upgrade-db
  • Restart the server and the client:

$ make serve

Prod environment

TODO

Environment variables

The following environment variables must be defined in Makefile.custom.config:

variable

description

app default value

REACT_APP_API_URL

Fittrackee API URL

no default value, must be initialized

REACT_APP_GPX_LIMIT_IMPORT

max. number of gpx file in zip archive

10 (deprecated in 0.3.0)

REACT_APP_MAX_SINGLE_FILE_SIZE

max. size of a gpx or picture file

1MB (deprecated in 0.3.0)

REACT_APP_MAX_ZIP_FILE_SIZE

max. size of a zip archive

10MB (deprecated in 0.3.0)

REACT_APP_ALLOW_REGISTRATION

allows users to register

true (deprecated in 0.3.0)

REACT_APP_THUNDERFOREST_API_KEY

ThunderForest API key

(deprecated, use TILE_SERVER_URL instead)

TILE_SERVER_URL

Tile server URL (with api key if needed)

https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png

UI_URL

application URL

no default value, must be initialized

EMAIL_URL

email URL with credentials

no default value, must be initialized (see below)

SENDER_EMAIL

application sender email address

no default value, must be initialized

REDIS_URL

Redis instance used by Dramatiq

local Redis instance

WORKERS_PROCESSES

number of process used by Dramatiq

no default value, must be initialized

Warning

Since FitTrackee 0.3.0, some applications parameters are now stored in database. Related environment variables are needed to initialize database.

Emails

To send emails, a valid EMAIL_URL must be provided:

  • with an unencrypted SMTP server: smtp://username:password@smtp.example.com:25

  • with SSL: smtp://username:password@smtp.example.com:465/?ssl=True

  • with STARTTLS: smtp://username:password@smtp.example.com:587/?tls=True