diff --git a/CHANGELOG.md b/CHANGELOG.md index 61b8b1fa..25eaec0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Change log +## Version 0.3.0 - Administration (2020/07/xx) + +This version introduces some major changes: +- FitTrackee administration is now available (see [documentation](https://samr1.github.io/FitTrackee/features.html#administration)) +Note: some application parameters move from environment variables to database (see [installation](https://samr1.github.io/FitTrackee/installation.html#environment-variables)). +- in order to send emails, Redis is now a mandatory dependency + +### Issues Closed + +#### New Features + +* [#50](https://github.com/SamR1/Fittrackee/issues/50) - A user can reset his password +* [#17](https://github.com/SamR1/Fittrackee/issues/17) - A user can delete his account +* [#15](https://github.com/SamR1/Fittrackee/issues/15) - Complete the administration + +In this release 3 issues were closed. + + ## Version 0.2.5 - Fix and improvements (2020/01/31) ### Misc @@ -139,7 +157,7 @@ In this release 7 issues were closed. - only activity owner can see his activity - no administration for now -➡️ more informations: see [wiki](https://github.com/SamR1/mpwo/wiki) and [current issues](https://github.com/SamR1/mpwo/issues) +➡️ more informations: see [documentation](https://samr1.github.io/FitTrackee/) and [current issues](https://github.com/SamR1/FitTrackee/issues) ### Issues Closed diff --git a/Makefile b/Makefile index 96286c07..e4259214 100644 --- a/Makefile +++ b/Makefile @@ -85,10 +85,10 @@ run-client: serve -s fittrackee_client/build -l 3000 >> serve.log 2>&1 run-server: - cd fittrackee_api && $(GUNICORN) -b 127.0.0.1:5000 "fittrackee_api:create_app()" --error-logfile ../gunicorn-error.log + cd fittrackee_api && $(GUNICORN) -b 127.0.0.1:5000 "fittrackee_api:create_app()" --error-logfile ../gunicorn.log run-workers: - $(FLASK) worker --processes=$(WORKERS_PROCESSES) >> workers.log 2>&1 + $(FLASK) worker --processes=$(WORKERS_PROCESSES) >> dramatiq.log 2>&1 serve-python: $(FLASK) run --with-threads -h $(HOST) -p $(API_PORT) diff --git a/VERSION b/VERSION index 387d516e..f2b3082f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.2.5-beta +0.3.0-beta diff --git a/docs/.buildinfo b/docs/.buildinfo index 2fe9b99f..0f8507ef 100644 --- a/docs/.buildinfo +++ b/docs/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: e282ec0ee22254d2da5f1887ad2213c6 +config: 57cf94c97f6ec96dcc19fd72f77a5fec tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/_images/fittrackee_screenshot-01.png b/docs/_images/fittrackee_screenshot-01.png index 3d97a078..9a6f4e7f 100644 Binary files a/docs/_images/fittrackee_screenshot-01.png and b/docs/_images/fittrackee_screenshot-01.png differ diff --git a/docs/_images/fittrackee_screenshot-02.png b/docs/_images/fittrackee_screenshot-02.png index 6bf9abac..16df2a1a 100644 Binary files a/docs/_images/fittrackee_screenshot-02.png and b/docs/_images/fittrackee_screenshot-02.png differ diff --git a/docs/_images/fittrackee_screenshot-03.png b/docs/_images/fittrackee_screenshot-03.png index 10aaff60..80a31501 100644 Binary files a/docs/_images/fittrackee_screenshot-03.png and b/docs/_images/fittrackee_screenshot-03.png differ diff --git a/docs/_images/fittrackee_screenshot-04.png b/docs/_images/fittrackee_screenshot-04.png index b0a1ce26..a5bd089b 100644 Binary files a/docs/_images/fittrackee_screenshot-04.png and b/docs/_images/fittrackee_screenshot-04.png differ diff --git a/docs/_images/fittrackee_screenshot-05.png b/docs/_images/fittrackee_screenshot-05.png new file mode 100644 index 00000000..fe63fe7e Binary files /dev/null and b/docs/_images/fittrackee_screenshot-05.png differ diff --git a/docs/_sources/changelog.md.txt b/docs/_sources/changelog.md.txt index 61b8b1fa..25eaec0a 100644 --- a/docs/_sources/changelog.md.txt +++ b/docs/_sources/changelog.md.txt @@ -1,5 +1,23 @@ # Change log +## Version 0.3.0 - Administration (2020/07/xx) + +This version introduces some major changes: +- FitTrackee administration is now available (see [documentation](https://samr1.github.io/FitTrackee/features.html#administration)) +Note: some application parameters move from environment variables to database (see [installation](https://samr1.github.io/FitTrackee/installation.html#environment-variables)). +- in order to send emails, Redis is now a mandatory dependency + +### Issues Closed + +#### New Features + +* [#50](https://github.com/SamR1/Fittrackee/issues/50) - A user can reset his password +* [#17](https://github.com/SamR1/Fittrackee/issues/17) - A user can delete his account +* [#15](https://github.com/SamR1/Fittrackee/issues/15) - Complete the administration + +In this release 3 issues were closed. + + ## Version 0.2.5 - Fix and improvements (2020/01/31) ### Misc @@ -139,7 +157,7 @@ In this release 7 issues were closed. - only activity owner can see his activity - no administration for now -➡️ more informations: see [wiki](https://github.com/SamR1/mpwo/wiki) and [current issues](https://github.com/SamR1/mpwo/issues) +➡️ more informations: see [documentation](https://samr1.github.io/FitTrackee/) and [current issues](https://github.com/SamR1/FitTrackee/issues) ### Issues Closed diff --git a/docs/_sources/features.rst.txt b/docs/_sources/features.rst.txt index 4785bba1..0be2d9d3 100644 --- a/docs/_sources/features.rst.txt +++ b/docs/_sources/features.rst.txt @@ -4,10 +4,29 @@ Features List ~~~~ -Users -^^^^^ -- Account creation (only standard user, not admin) -- User registration can be disabled +Account +^^^^^^^ +- A user can create, update and deleted his account +- Password reset is now available + +Administration +^^^^^^^^^^^^^^ +- Application + + - active users limit (if 0, registration is enabled (no limit defined)) + - maximum size of uploaded files + - maximum size of zip archive + - maximum number of files in the zip archive + +- Users + + - display users list and details + - edit a user to add/remove administration rights + - delete a user + +- Sports + + - enable or disable a sport (a sport can be disabled even if activity with this sport exists) Activities/Workouts ^^^^^^^^^^^^^^^^^^^ @@ -32,8 +51,7 @@ Activities/Workouts **Notes:** -- only activity owner can see his activity -- **no administration for now** +- for now, only activity owner can see his activities Translations ^^^^^^^^^^^^ @@ -63,3 +81,8 @@ Statistics ~~~~~~~~~~ .. figure:: _images/fittrackee_screenshot-04.png :alt: FitTrackee Statistics + +Administration +~~~~~~~~~~~~~~ +.. figure:: _images/fittrackee_screenshot-05.png + :alt: FitTrackee Administration diff --git a/docs/_sources/index.rst.txt b/docs/_sources/index.rst.txt index d163648a..e6cb1b16 100644 --- a/docs/_sources/index.rst.txt +++ b/docs/_sources/index.rst.txt @@ -10,11 +10,11 @@ FitTrackee | No mobile app is developed yet, but several existing mobile apps can store workouts data locally and export them into a gpx file. | Examples (for Android): -| \* `Runner Up `__ (GPL v3) -| \* `ForRunners `__ (GPL v3) -| \* `AlpineQuest `__ (Proprietary, no +| \* `Runner Up `_ (GPL v3) +| \* `ForRunners `_ (GPL v3) +| \* `AlpineQuest `_ (Proprietary, no trackers according to `exodus privay - report `__) + report `_) | Maps are displayed using `Open Street Map `__. diff --git a/docs/_sources/installation.rst.txt b/docs/_sources/installation.rst.txt index 729bacc1..50d495a7 100644 --- a/docs/_sources/installation.rst.txt +++ b/docs/_sources/installation.rst.txt @@ -5,9 +5,10 @@ This application is written in Python (API) and Javascript (client): - API: - Flask - - `gpxpy `__ to parse gpx files - - `staticmap `__ to generate a static map image from gpx coordinates - - `python-forecast.io `__ to fetch weather data from `Dark Sky `__ (former forecast.io) + - `gpxpy `_ to parse gpx files + - `staticmap `_ to generate a static map image from gpx coordinates + - `python-forecast.io `_ to fetch weather data from `Dark Sky `__ (former forecast.io) + - `dramatiq `_ for task queue - Client: - React/Redux - `Leaflet `__ to display map @@ -19,12 +20,14 @@ Prerequisites ~~~~~~~~~~~~~ - PostgreSQL database (10+) +- Redis for task queue - Python 3.7+ - `Poetry `__ - `Yarn `__ and `serve `__ - API key from `ThunderForest `__ - API key from `Dark Sky `__ [not mandatory] +- SMTP provider Installation @@ -40,14 +43,14 @@ Installation .. code-block:: bash - $ yaourt poetry + $ yay poetry $ poetry --version - Poetry 0.12.17 + Poetry 1.0.5 # optional - $ poetry config settings.virtualenvs.in-project true + $ poetry config virtualenvs.in-project true - For other OS, see `Poetry Documentation `__ + For other OS, see `Poetry Documentation `__ Dev environment @@ -78,6 +81,12 @@ Dev environment $ make serve +- Run dramatiq workers: + +.. code:: bash + + $ make run-workers + Open http://localhost:3000 and login (the email is ``admin@example.com`` and the password ``mpwoadmin``) or register @@ -87,13 +96,13 @@ Prod environment .. warning:: Note that FitTrackee is not production-ready yet -- Download the last release (for now, it is the beta release v0.2.5): +- Download the last release (for now, it is the beta release v0.3.0): .. code:: bash - $ wget https://github.com/SamR1/FitTrackee/archive/v0.2.5-beta.tar.gz - $ tar -xzf v0.2.5-beta.tar.gz - $ mv FitTrackee-0.2.3-beta FitTrackee + $ 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 @@ -120,6 +129,12 @@ Prod environment $ make run +- Run dramatiq workers: + +.. code:: bash + + $ 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 @@ -174,10 +189,28 @@ The following environment variables must be defined in **Makefile.custom.config* ===================================== ======================================= ==================================== variable description app default value ===================================== ======================================= ==================================== -``REACT_APP_GPX_LIMIT_IMPORT`` max. number of gpx file in zip archive 10 -``REACT_APP_MAX_SINGLE_FILE_SIZE`` max. size of a gpx or picture file 1MB -``REACT_APP_MAX_ZIP_FILE_SIZE`` max. size of a zip archive 10MB -``REACT_APP_ALLOW_REGISTRATION`` allows users to register true -``REACT_APP_THUNDERFOREST_API_KEY`` ThunderForest API key no defaut value, must be initialized -``WEATHER_API`` DarkSky API key no defaut value, not mandatory +``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 no default value, must be initialized +``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 environement 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`` \ No newline at end of file diff --git a/docs/_static/documentation_options.js b/docs/_static/documentation_options.js index 7bfb82ef..0ef529cd 100644 --- a/docs/_static/documentation_options.js +++ b/docs/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '0.2.5-beta', + VERSION: '0.3.0-beta', LANGUAGE: 'None', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/api/activities.html b/docs/api/activities.html index aa5f81ad..36db42a0 100644 --- a/docs/api/activities.html +++ b/docs/api/activities.html @@ -4,7 +4,7 @@ - Activities — FitTrackee 0.2.5-beta + <title>Activities — FitTrackee 0.3.0-beta documentation @@ -40,7 +40,7 @@ FitTrackee - 0.2.5 + 0.3.0 diff --git a/docs/api/auth.html b/docs/api/auth.html index 904b9e4e..b1d3851d 100644 --- a/docs/api/auth.html +++ b/docs/api/auth.html @@ -4,7 +4,7 @@ - Authentication — FitTrackee 0.2.5-beta + <title>Authentication — FitTrackee 0.3.0-beta documentation @@ -40,7 +40,7 @@ FitTrackee - 0.2.5 + 0.3.0 diff --git a/docs/api/configuration.html b/docs/api/configuration.html index 7c452438..24a29e5f 100644 --- a/docs/api/configuration.html +++ b/docs/api/configuration.html @@ -4,7 +4,7 @@ - Configuration — FitTrackee 0.2.5-beta + <title>Configuration — FitTrackee 0.3.0-beta documentation @@ -40,7 +40,7 @@ FitTrackee - 0.2.5 + 0.3.0 diff --git a/docs/api/index.html b/docs/api/index.html index 10170279..457ec73c 100644 --- a/docs/api/index.html +++ b/docs/api/index.html @@ -4,7 +4,7 @@ - API documentation — FitTrackee 0.2.5-beta + <title>API documentation — FitTrackee 0.3.0-beta documentation @@ -40,7 +40,7 @@ FitTrackee - 0.2.5 + 0.3.0 diff --git a/docs/api/records.html b/docs/api/records.html index bbb427dc..d780e9e8 100644 --- a/docs/api/records.html +++ b/docs/api/records.html @@ -4,7 +4,7 @@ - Records — FitTrackee 0.2.5-beta + <title>Records — FitTrackee 0.3.0-beta documentation @@ -40,7 +40,7 @@ FitTrackee - 0.2.5 + 0.3.0 diff --git a/docs/api/sports.html b/docs/api/sports.html index d9ea65c1..d054bae0 100644 --- a/docs/api/sports.html +++ b/docs/api/sports.html @@ -4,7 +4,7 @@ - Sports — FitTrackee 0.2.5-beta + <title>Sports — FitTrackee 0.3.0-beta documentation @@ -40,7 +40,7 @@ FitTrackee - 0.2.5 + 0.3.0 diff --git a/docs/api/stats.html b/docs/api/stats.html index 2438ab8f..f7fbdb1d 100644 --- a/docs/api/stats.html +++ b/docs/api/stats.html @@ -4,7 +4,7 @@ - Statistics — FitTrackee 0.2.5-beta + <title>Statistics — FitTrackee 0.3.0-beta documentation @@ -40,7 +40,7 @@ FitTrackee - 0.2.5 + 0.3.0 diff --git a/docs/api/users.html b/docs/api/users.html index 05013005..d828047f 100644 --- a/docs/api/users.html +++ b/docs/api/users.html @@ -4,7 +4,7 @@ - Users — FitTrackee 0.2.5-beta + <title>Users — FitTrackee 0.3.0-beta documentation @@ -40,7 +40,7 @@ FitTrackee - 0.2.5 + 0.3.0 diff --git a/docs/changelog.html b/docs/changelog.html index 0de4f166..44e3d556 100644 --- a/docs/changelog.html +++ b/docs/changelog.html @@ -4,7 +4,7 @@ - Change log — FitTrackee 0.2.5-beta + <title>Change log — FitTrackee 0.3.0-beta documentation @@ -39,7 +39,7 @@ FitTrackee - 0.2.5 + 0.3.0

Version 0.2.4 - Minor fix (2020/01/30)

-
-

Issues Closed

+
+

Issues Closed

Bugs Fixed

    @@ -211,17 +238,17 @@ add URL interceptors to simplify routes definition

Version 0.2.3 - FitTrackee available in French (2019/12/29)

-
-

Issues Closed

-
-

New Features

+
+

Issues Closed

+
+

New Features

  • #43 - Display weekend days with a different background color on calendar

  • #40 - Localize FitTrackee (i18n)

-
-

Bugs Fixed

+
+

Bugs Fixed

  • #44 - Cannot edit an activity that does not have a gpx file

@@ -231,10 +258,10 @@ add URL interceptors to simplify routes definition

Version 0.2.2 - Statistics fix (2019/09/23)

-
-

Issues Closed

-
-

Bugs Fixed

+
+

Issues Closed

+
+

Bugs Fixed

  • #41 - User statistics are incorrect

@@ -244,10 +271,10 @@ add URL interceptors to simplify routes definition

Version 0.2.1 - Fix and improvements (2019/09/01)

-
-

Issues Closed

-
-

New Features

+
+

Issues Closed

+
+

New Features

  • #4 - Show points on the map when mouse over the chart

  • #14 - Display segments informations

  • @@ -258,15 +285,15 @@ add URL interceptors to simplify routes definition

  • #37 - Display map on activities list

-
-

Bugs Fixed

+
+

Bugs Fixed

  • #34 - Weather is not displayed anymore

-
-

Misc

+
+

Misc

@@ -275,17 +302,17 @@ add URL interceptors to simplify routes definition

Version 0.2.0 - Statistics (2019/07/07)

-
-

Issues Closed

-
-

New Features

+
+

Issues Closed

+
+

New Features

  • #13 - Detailed statistics

-
-

Misc

+
+

Misc

  • Update dependencies

@@ -294,17 +321,17 @@ add URL interceptors to simplify routes definition

Version 0.1.1 - Fix and improvements (2019/02/07)

-
-

Issues Closed

-
-

New Features

+
+

Issues Closed

+
+

New Features

  • #25 - Display records on calendar

  • #22 - Add a total on current month statistics

-
-

Bugs Fixed

+
+

Bugs Fixed

  • #31 - Use moving duration for stats

  • #29 - Pause duration calculation with segments

  • @@ -352,11 +379,11 @@ add URL interceptors to simplify routes definition

  • only activity owner can see his activity

  • no administration for now

-

➡️ more informations: see wiki and current issues

-
-

Issues Closed

-
-

New Features

+

➡️ more informations: see documentation and current issues

+
+

Issues Closed

+
+

New Features

  • #11 - Timezone support

  • #10 - Add a note to an activity

  • @@ -383,7 +410,7 @@ add URL interceptors to simplify routes definition

    - © Copyright 2018 - 2019, SamR1.
    + © Copyright 2018 - 2020, SamR1.
    Created using Sphinx 3.1.2.

diff --git a/docs/features.html b/docs/features.html index 1c7d5dc0..3bf34972 100644 --- a/docs/features.html +++ b/docs/features.html @@ -4,7 +4,7 @@ - Features — FitTrackee 0.2.5-beta + <title>Features — FitTrackee 0.3.0-beta documentation @@ -40,7 +40,7 @@ FitTrackee - 0.2.5 + 0.3.0
diff --git a/docs/genindex.html b/docs/genindex.html index 41034fe9..e708f84a 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -4,7 +4,7 @@ - Index — FitTrackee 0.2.5-beta + <title>Index — FitTrackee 0.3.0-beta documentation @@ -38,7 +38,7 @@ FitTrackee - 0.2.5 + 0.3.0
diff --git a/docs/http-routingtable.html b/docs/http-routingtable.html index fe1a73eb..4ed60229 100644 --- a/docs/http-routingtable.html +++ b/docs/http-routingtable.html @@ -4,7 +4,7 @@ - HTTP Routing Table — FitTrackee 0.2.5-beta + <title>HTTP Routing Table — FitTrackee 0.3.0-beta documentation @@ -45,7 +45,7 @@ FitTrackee - 0.2.5 + 0.3.0
diff --git a/docs/index.html b/docs/index.html index d7dcb7c5..72deaaf6 100644 --- a/docs/index.html +++ b/docs/index.html @@ -4,7 +4,7 @@ - FitTrackee — FitTrackee 0.2.5-beta + <title>FitTrackee — FitTrackee 0.3.0-beta documentation @@ -39,7 +39,7 @@ FitTrackee - 0.2.5 + 0.3.0
* Runner Up (GPL v3)
* ForRunners (GPL v3)
@@ -164,6 +164,7 @@ Map.
  • Activity/workout detail
  • Activities/workouts list
  • Statistics
  • +
  • Administration
  • API documentation
      @@ -182,6 +183,7 @@ Map.
  • Change log
  • - © Copyright 2018 - 2019, SamR1.
    + © Copyright 2018 - 2020, SamR1.
    Created using Sphinx 3.1.2.

    diff --git a/docs/installation.html b/docs/installation.html index 1ba6277a..878dcf29 100644 --- a/docs/installation.html +++ b/docs/installation.html @@ -4,7 +4,7 @@ - Installation — FitTrackee 0.2.5-beta + <title>Installation — FitTrackee 0.3.0-beta documentation @@ -40,7 +40,7 @@ FitTrackee - 0.2.5 + 0.3.0
    @@ -186,15 +192,15 @@ necessary.

    Warning

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

    -
    $ yaourt poetry
    +
    $ yay poetry
     $ poetry --version
    -Poetry 0.12.17
    +Poetry 1.0.5
     
     # optional
    -$ poetry config settings.virtualenvs.in-project true
    +$ poetry config virtualenvs.in-project true
     
    -

    For other OS, see Poetry Documentation

    +

    For other OS, see Poetry Documentation

    Dev environment

    @@ -222,6 +228,12 @@ $ make install-db
    $ 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

    @@ -232,11 +244,11 @@ and the password mp

    Note that FitTrackee is not production-ready yet

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

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

    -
    $ wget https://github.com/SamR1/FitTrackee/archive/v0.2.5-beta.tar.gz
    -$ tar -xzf v0.2.5-beta.tar.gz
    -$ mv FitTrackee-0.2.3-beta FitTrackee
    +
    $ 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
     
    @@ -263,6 +275,12 @@ $ make install-db
    $ 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

    @@ -311,9 +329,9 @@ $ make upgrade-db

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

    ---+++ @@ -322,32 +340,66 @@ $ make upgrade-db - + + + + + - + - + - + - + - + - + - + - + - + - - - + + + + + + + + + + + + + + + + + + +

    variable

    REACT_APP_GPX_LIMIT_IMPORT

    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

    10 (deprecated in 0.3.0)

    REACT_APP_MAX_SINGLE_FILE_SIZE

    REACT_APP_MAX_SINGLE_FILE_SIZE

    max. size of a gpx or picture file

    1MB

    1MB (deprecated in 0.3.0)

    REACT_APP_MAX_ZIP_FILE_SIZE

    REACT_APP_MAX_ZIP_FILE_SIZE

    max. size of a zip archive

    10MB

    10MB (deprecated in 0.3.0)

    REACT_APP_ALLOW_REGISTRATION

    REACT_APP_ALLOW_REGISTRATION

    allows users to register

    true

    true (deprecated in 0.3.0)

    REACT_APP_THUNDERFOREST_API_KEY

    REACT_APP_THUNDERFOREST_API_KEY

    ThunderForest API key

    no defaut value, must be initialized

    no default value, must be initialized

    WEATHER_API

    DarkSky API key

    no defaut value, not mandatory

    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 environement 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

    • +
    +
    @@ -363,7 +415,7 @@ $ make upgrade-db

    - © Copyright 2018 - 2019, SamR1.
    + © Copyright 2018 - 2020, SamR1.
    Created using Sphinx 3.1.2.

    diff --git a/docs/objects.inv b/docs/objects.inv index d6ce1ff2..cd500c85 100644 Binary files a/docs/objects.inv and b/docs/objects.inv differ diff --git a/docs/search.html b/docs/search.html index 436fe0ad..3f3bc299 100644 --- a/docs/search.html +++ b/docs/search.html @@ -4,7 +4,7 @@ - Search — FitTrackee 0.2.5-beta + <title>Search — FitTrackee 0.3.0-beta documentation @@ -44,7 +44,7 @@ FitTrackee - 0.2.5 + 0.3.0
    diff --git a/docs/searchindex.js b/docs/searchindex.js index 1f3f3bbd..9b697e6f 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["api/activities","api/auth","api/configuration","api/index","api/records","api/sports","api/stats","api/users","changelog","features","index","installation","troubleshooting/administrator","troubleshooting/index","troubleshooting/user"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["api/activities.rst","api/auth.rst","api/configuration.rst","api/index.rst","api/records.rst","api/sports.rst","api/stats.rst","api/users.rst","changelog.md","features.rst","index.rst","installation.rst","troubleshooting/administrator.rst","troubleshooting/index.rst","troubleshooting/user.rst"],objects:{"":{"/api/activities":[0,1,1,"post--api-activities"],"/api/activities/(int:activity_id)":[0,3,1,"patch--api-activities-(int-activity_id)"],"/api/activities/(int:activity_id)/chart_data":[0,0,1,"get--api-activities-(int-activity_id)-chart_data"],"/api/activities/(int:activity_id)/chart_data/segment/(int:segment_id)":[0,0,1,"get--api-activities-(int-activity_id)-chart_data-segment-(int-segment_id)"],"/api/activities/(int:activity_id)/gpx":[0,0,1,"get--api-activities-(int-activity_id)-gpx"],"/api/activities/(int:activity_id)/gpx/segment/(int:segment_id)":[0,0,1,"get--api-activities-(int-activity_id)-gpx-segment-(int-segment_id)"],"/api/activities/map/(map_id)":[0,0,1,"get--api-activities-map-(map_id)"],"/api/activities/no_gpx":[0,1,1,"post--api-activities-no_gpx"],"/api/auth/login":[1,1,1,"post--api-auth-login"],"/api/auth/logout":[1,0,1,"get--api-auth-logout"],"/api/auth/password/reset-request":[1,1,1,"post--api-auth-password-reset-request"],"/api/auth/password/update":[1,1,1,"post--api-auth-password-update"],"/api/auth/picture":[1,1,1,"post--api-auth-picture"],"/api/auth/profile":[1,0,1,"get--api-auth-profile"],"/api/auth/profile/edit":[1,1,1,"post--api-auth-profile-edit"],"/api/auth/register":[1,1,1,"post--api-auth-register"],"/api/config":[2,3,1,"patch--api-config"],"/api/ping":[2,0,1,"get--api-ping"],"/api/records":[4,0,1,"get--api-records"],"/api/sports":[5,0,1,"get--api-sports"],"/api/sports/(int:sport_id)":[5,3,1,"patch--api-sports-(int-sport_id)"],"/api/stats/(user_name)/by_sport":[6,0,1,"get--api-stats-(user_name)-by_sport"],"/api/stats/(user_name)/by_time":[6,0,1,"get--api-stats-(user_name)-by_time"],"/api/stats/all":[6,0,1,"get--api-stats-all"],"/api/users":[7,0,1,"get--api-users"],"/api/users/(user_name)":[7,3,1,"patch--api-users-(user_name)"],"/api/users/(user_name)/picture":[7,0,1,"get--api-users-(user_name)-picture"]}},objnames:{"0":["http","get","HTTP get"],"1":["http","post","HTTP post"],"2":["http","delete","HTTP delete"],"3":["http","patch","HTTP patch"]},objtypes:{"0":"http:get","1":"http:post","2":"http:delete","3":"http:patch"},terms:{"0mb":[0,1],"10mb":11,"1mb":11,"2e1ee2c":8,"34614d5":8,"4c3fc34":8,"boolean":[2,7],"default":[0,6,7,11],"export":10,"float":0,"int":[0,5],"null":[0,1,7],"return":[0,4],"static":11,"true":[1,2,5,7,11],"try":[0,1,7],For:11,NOT:[0,1,5],Not:[0,1,5,6,7],That:1,The:[8,9,11],Use:8,accord:10,account:[7,8,9],acit:0,activ:[3,5,6,8,10],activities_count:7,activity_d:[0,4],activity_id:[0,4],adapt:11,add:[7,8,9,10],admin:[0,1,2,4,5,6,7,8,9,11],administr:[0,1,7,8,9,10,13],again:[0,1,2,4,5,6,7],all:[4,5,6,7,11],allow:[0,1,2,10,11],alpinequest:10,alreadi:1,also:10,android:10,anoth:7,anymor:8,api:[0,1,2,4,5,6,7,8,9,10,11,12],app:[10,11],applic:[0,1,2,4,5,6,7,10,11],arch:11,archiv:[2,11],archlinux:11,asc:7,ascent:0,auth:[0,1,2,4,5,6,7],auth_token:1,auth_user_id:[0,2,4,5,6,7],authent:[0,2,3,4,5,6,7,10],author:[0,1,2,4,5,6,7],avail:[4,9,10],ave_spe:0,ave_speed_from:0,ave_speed_to:0,averag:[0,4,8,9],b862a77:8,background:8,backup:11,bad:[0,1,2,5],bearer:[0,1,2,4,5,6,7],befor:11,beta:11,bike:[0,5,8,9],bio:[1,7],biographi:1,birth:1,birth_dat:[1,7],bound:0,build:11,by_sport:6,by_tim:6,calcul:8,calendar:[8,9],can:[7,8,9,10,11],cannot:8,chang:[9,10,11],charact:[1,13],chart:[0,8,9,11],chart_data:0,check:[2,12],choos:8,client:[8,11,12],clone:11,code:[0,1,2,4,5,6,7],color:8,column:13,com:[1,7,11],config:[2,11,12],configur:[3,10],confirm:1,contact:[0,1,7],contain:8,content:[0,1,2,4,5,6,7],coordin:11,copi:11,correctli:[8,12],creat:[0,1,8,9],created_at:[1,7],creation:[8,9],creation_d:0,credenti:1,criteria:7,current:8,custom:[11,12],cycl:[5,8,9],dai:8,dark:11,darkski:[8,9,11],dashboard:[8,10],data:[0,1,2,4,5,6,7,8,10,11,13],databas:11,date:[0,1,6,8,9],debian:11,defaut:11,defin:11,definit:8,delet:[0,1,7,8,9],depend:8,desc:0,descent:0,describ:11,descript:11,detail:[7,8,10],develop:10,differ:8,directori:11,disabl:[1,8,9],displai:[0,8,9,10,11],distanc:[0,4,8,9],distance_from:0,distance_to:0,document:[8,10,11],doe:[0,1,6,7,8],don:1,down:8,download:11,drop:8,durat:[0,4,8,9],duration_from:0,duration_to:0,dure:[0,1],edit:[1,8,9],elev:[0,8,9,11],email:[1,7,11],empti:8,enabl:2,encount:11,end:[0,6],endpoint:[2,3,13],english:9,enter:[8,9],entiti:[0,1],environ:10,environn:12,error:[0,1,2,5,7,8],europ:[1,7],even:[8,9],exampl:[0,1,2,4,5,6,7,10,11,12],exce:[0,1],except:7,exist:[0,1,6,7,10,12],exodu:10,expir:[0,1,2,4,5,6,7],extens:[0,1],fa33f4d996844a5c73ecd1ae24456ab8:0,fals:[0,1,2,5,7],farest:[4,8,9],featur:10,fetch:11,file:[0,1,2,8,9,10,11,12],filter:[8,9],first:[1,10],first_nam:[1,7],fittracke:[9,11],fittrackee_api:11,fix:10,flask:11,flaticon:11,follow:[4,11],forbidden:[0,1,2,5,6,7],forecast:11,form:[0,1],format:[0,1,6],former:11,forrunn:10,found:[0,1,5,6,7],frame:6,freepik:11,french:[9,10],fri:0,from:[0,2,4,5,6,7,10,11],gener:11,get:[0,1,2,4,5,6,7],gif:1,git:11,github:11,gmt:[0,1,4,7],gpl:10,gpx:[0,8,9,10,11],gpx_limit_import:2,gpxpy:11,handl:1,has:7,has_act:5,have:[0,2,5,6,7,8],header:[0,1,2,4,5,6,7],health:2,hike:[5,8,9],his:[7,8,9],http:[0,1,2,4,5,6,7,11,12],i18n:8,icon:11,imag:[0,1,7,11],img:5,improv:10,incorrect:8,info:1,inform:[8,10],initi:[11,12],instal:10,instanc:[2,11],integ:[0,2,4,5,6,7],integr:2,interceptor:8,intern:[0,1,2,5,7],invalid:[0,1,2,4,5,6,7],is_act:5,is_registration_en:2,issu:[10,11],jan:0,javascript:11,john_do:7,jpeg:7,jpg:1,json:[0,1,2,4,5,6,7,13],jul:[0,1,4,7],keep:10,kei:[8,9,11],label:5,languag:[1,7],larg:[0,1],last:[1,11],last_nam:[1,7],latitud:0,leaflet:[0,11],least:0,limit:8,line:13,linux:11,list:[8,10],load:8,local:[8,10],localhost:[11,12],locat:[1,7],log:[0,1,2,4,5,6,7,10,11],login:[1,11],logout:[1,8],longest:[4,8,9],longitud:0,made:[11,12],mai:11,make:11,makefil:[11,12],manag:8,mandatori:[0,11],map:[0,8,9,10,11],map_id:0,match:1,max:[0,2,7,11],max_alt:0,max_single_file_s:2,max_spe:0,max_speed_from:0,max_speed_to:0,max_us:2,max_zip_file_s:2,maxim:0,maximum:[4,8,9],mean:12,messag:[0,1,2],min_alt:0,minim:0,minor:10,mobil:10,modifi:7,modification_d:0,mon:0,mondai:[1,6,9],montain:[8,9],month:[6,8,9],more:[8,10],morn:0,mountain:5,mous:8,move:[0,8],mpwoadmin:11,multipart:[0,1],must:[1,2,5,8,9,11],name:[1,6,7],nb_activ:[1,6,7],nb_sport:[1,7],necessari:11,need:11,network:12,next_act:0,no_gpx:0,non:5,note:[0,8,9,11],now:[8,9,11],number:[0,2,7,11],oauth:[0,1,2,4,5,6,7],object:[0,1,2,5,7],one:[0,7],onli:[0,7,8,9],open:[10,11],option:11,order:[0,7],order_bi:7,other:[7,11],out:1,outdoor:10,over:8,own:[7,10],owner:[8,9],packag:[8,11],page:[0,7],pagin:[0,7],par_pag:7,paramet:[0,1,2,4,5,6,7],pari:[1,7],pars:[11,13],part:[0,1],password:[1,11],password_conf:1,past:11,patch:[0,2,5,7],paus:[0,8],payload:[0,1,2,5],per:[0,7],per_pag:[0,7],permiss:[0,2,5,6,7],pg_dump:11,pictur:[0,1,7,11],ping:2,pipenv:8,pleas:[0,1,2,4,5,6,7],png:[0,1,5],poetri:[8,11],point:8,pong:2,possibl:10,post:[0,1],postgresql:11,prefer:1,prerequisit:10,previous_act:0,privai:10,process:1,product:[10,11],profil:1,project:11,proprietari:10,provid:[0,1,2,4,5,6,7,8,9],pull:11,python:[8,11],queri:[0,6,7],react:11,react_app_allow_registr:11,react_app_api_url:12,react_app_gpx_limit_import:11,react_app_max_single_file_s:11,react_app_max_zip_file_s:11,react_app_thunderforest_api_kei:11,readi:[10,11],rebuild:12,rechart:[0,11],record:[0,3,8,9,10],record_typ:[0,4],redux:11,regist:[1,2,11],registr:[1,2,8,9],relat:11,releas:[10,11],replac:8,repo:11,report:10,repositori:11,request:[0,1,2,4,5,6,7,12],requir:1,reset:1,respons:[0,1,2,4,5,6,7],restart:11,right:7,rout:8,run:[5,8,9,11],runner:10,sam:[1,7],same:8,samr1:11,sat:7,save:9,search:8,second:0,see:[8,9,10,11,12],segment:[0,8,9],segment_id:0,select:[0,1],serv:11,server:[0,1,2,5,7,10,11],set:[9,11],sever:10,show:8,side:8,signatur:[0,1,2,4,5,6,7],simplifi:8,sinc:11,singl:[2,7],size:[0,1,2,8,11],sky:11,some:[0,7,8,11],sorri:1,sort:[0,7],speed:[0,4,8,9,11],spinner:8,sport:[0,3,6,8,9,10,11],sport_id:[0,4,5,6],sports_list:[1,7],standard:[8,9],start:[0,1,6,9,11],stat:[6,8],staticmap:11,statist:[3,10],statu:[0,1,2,4,5,6,7],step:11,still:10,stop:11,store:10,street:10,string:[0,1,5,6,7],success:[0,1,2,4,5,6,7],successfulli:1,sun:[0,1,4,7],sundai:[0,6,9],support:[8,9],system:11,tab:12,tar:11,test:11,than:8,them:10,thi:[0,8,10,11],thunderforest:11,time:[0,1,6,8,9],timezon:[1,7,8],titl:0,todo:[11,14],token:[0,1,2,4,5,6,7],too:[0,1],tooltip:8,total:8,total_dist:[1,6,7],total_dur:[1,6,7],track:10,tracker:10,transport:[5,8,9],troubleshoot:10,type:[0,1,2,4,5,6,7],unauthor:[0,1,2,4,5,6,7],undefin:12,under:10,unexpect:13,updat:[0,1,2,5,7,8,11],upgrad:10,upload:[8,9,11],uploads_dir_s:6,url:8,user:[0,1,2,3,4,5,6,8,10,11,13],user_nam:[6,7],usernam:[1,7],usernanm:1,using:[0,7,10],valid:[0,1,2,4,5,6,7],valu:[0,4,11],variabl:[10,12],version:[10,11],view:8,virtualenv:11,walk:[5,8,9],weather:[8,9,11],weather_api:11,weather_end:0,weather_start:0,web:[0,1,2,4,5,6,7,10],week:[1,6,8,9],weekend:8,weekm:[1,6],were:8,wget:11,when:8,which:9,wiki:8,with_gpx:0,without:[0,6,7,8,9,10],workout:10,written:11,www:11,xzf:11,yaourt:11,yarn:11,year:6,yet:[10,11],you:[0,2,5,6,7,10],your:[7,10],zip:[0,2,11],zone:1},titles:["Activities","Authentication","Configuration","API documentation","Records","Sports","Statistics","Users","Change log","Features","FitTrackee","Installation","Administrator","Troubleshooting","User"],titleterms:{"new":8,activ:[0,9],administr:12,api:3,authent:1,avail:8,bug:8,chang:8,charact:12,close:8,column:12,configur:2,content:10,dashboard:9,data:12,detail:9,dev:11,document:3,environ:11,featur:[8,9],first:8,fittracke:[8,10],fix:8,french:8,improv:8,instal:11,issu:8,json:12,line:12,list:9,log:8,minor:8,misc:8,pars:12,prerequisit:11,prod:11,record:4,releas:8,sport:5,statist:[6,8,9],tabl:10,translat:9,troubleshoot:13,unexpect:12,upgrad:11,user:[7,9,14],variabl:11,version:8,workout:9}}) \ No newline at end of file +Search.setIndex({docnames:["api/activities","api/auth","api/configuration","api/index","api/records","api/sports","api/stats","api/users","changelog","features","index","installation","troubleshooting/administrator","troubleshooting/index","troubleshooting/user"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["api/activities.rst","api/auth.rst","api/configuration.rst","api/index.rst","api/records.rst","api/sports.rst","api/stats.rst","api/users.rst","changelog.md","features.rst","index.rst","installation.rst","troubleshooting/administrator.rst","troubleshooting/index.rst","troubleshooting/user.rst"],objects:{"":{"/api/activities":[0,1,1,"post--api-activities"],"/api/activities/(int:activity_id)":[0,3,1,"patch--api-activities-(int-activity_id)"],"/api/activities/(int:activity_id)/chart_data":[0,0,1,"get--api-activities-(int-activity_id)-chart_data"],"/api/activities/(int:activity_id)/chart_data/segment/(int:segment_id)":[0,0,1,"get--api-activities-(int-activity_id)-chart_data-segment-(int-segment_id)"],"/api/activities/(int:activity_id)/gpx":[0,0,1,"get--api-activities-(int-activity_id)-gpx"],"/api/activities/(int:activity_id)/gpx/segment/(int:segment_id)":[0,0,1,"get--api-activities-(int-activity_id)-gpx-segment-(int-segment_id)"],"/api/activities/map/(map_id)":[0,0,1,"get--api-activities-map-(map_id)"],"/api/activities/no_gpx":[0,1,1,"post--api-activities-no_gpx"],"/api/auth/login":[1,1,1,"post--api-auth-login"],"/api/auth/logout":[1,0,1,"get--api-auth-logout"],"/api/auth/password/reset-request":[1,1,1,"post--api-auth-password-reset-request"],"/api/auth/password/update":[1,1,1,"post--api-auth-password-update"],"/api/auth/picture":[1,1,1,"post--api-auth-picture"],"/api/auth/profile":[1,0,1,"get--api-auth-profile"],"/api/auth/profile/edit":[1,1,1,"post--api-auth-profile-edit"],"/api/auth/register":[1,1,1,"post--api-auth-register"],"/api/config":[2,3,1,"patch--api-config"],"/api/ping":[2,0,1,"get--api-ping"],"/api/records":[4,0,1,"get--api-records"],"/api/sports":[5,0,1,"get--api-sports"],"/api/sports/(int:sport_id)":[5,3,1,"patch--api-sports-(int-sport_id)"],"/api/stats/(user_name)/by_sport":[6,0,1,"get--api-stats-(user_name)-by_sport"],"/api/stats/(user_name)/by_time":[6,0,1,"get--api-stats-(user_name)-by_time"],"/api/stats/all":[6,0,1,"get--api-stats-all"],"/api/users":[7,0,1,"get--api-users"],"/api/users/(user_name)":[7,3,1,"patch--api-users-(user_name)"],"/api/users/(user_name)/picture":[7,0,1,"get--api-users-(user_name)-picture"]}},objnames:{"0":["http","get","HTTP get"],"1":["http","post","HTTP post"],"2":["http","delete","HTTP delete"],"3":["http","patch","HTTP patch"]},objtypes:{"0":"http:get","1":"http:post","2":"http:delete","3":"http:patch"},terms:{"0mb":[0,1],"10mb":11,"1mb":11,"2e1ee2c":8,"34614d5":8,"4c3fc34":8,"boolean":[2,7],"default":[0,6,7,11],"export":10,"float":0,"int":[0,5],"null":[0,1,7],"return":[0,4],"static":11,"true":[1,2,5,7,11],"try":[0,1,7],For:11,NOT:[0,1,5],Not:[0,1,5,6,7],That:1,The:[8,9,11],Use:8,accord:10,account:[7,8],acit:0,activ:[3,5,6,8,10],activities_count:7,activity_d:[0,4],activity_id:[0,4],adapt:11,add:[7,8,9,10],address:11,admin:[0,1,2,4,5,6,7,8,11],administr:[0,1,7,10,13],again:[0,1,2,4,5,6,7],all:[4,5,6,7,11],allow:[0,1,2,10,11],alpinequest:10,alreadi:1,also:10,android:10,anoth:7,anymor:8,api:[0,1,2,4,5,6,7,8,9,10,11,12],app:[10,11],applic:[0,1,2,4,5,6,7,8,9,10,11],arch:11,archiv:[2,9,11],archlinux:11,asc:7,ascent:0,auth:[0,1,2,4,5,6,7],auth_token:1,auth_user_id:[0,2,4,5,6,7],authent:[0,2,3,4,5,6,7,10],author:[0,1,2,4,5,6,7],avail:[4,9,10],ave_spe:0,ave_speed_from:0,ave_speed_to:0,averag:[0,4,8,9],b862a77:8,background:8,backup:11,bad:[0,1,2,5],bearer:[0,1,2,4,5,6,7],befor:11,below:11,beta:11,bike:[0,5,8,9],bio:[1,7],biographi:1,birth:1,birth_dat:[1,7],bound:0,build:11,by_sport:6,by_tim:6,calcul:8,calendar:[8,9],can:[7,8,9,10,11],cannot:8,chang:[9,10,11],charact:[1,13],chart:[0,8,9,11],chart_data:0,check:[2,12],choos:8,client:[8,11,12],clone:11,code:[0,1,2,4,5,6,7],color:8,column:13,com:[1,7,11],complet:8,config:[2,11,12],configur:[3,10],confirm:1,contact:[0,1,7],contain:8,content:[0,1,2,4,5,6,7],coordin:11,copi:11,correctli:[8,12],creat:[0,1,8,9],created_at:[1,7],creation:[8,9],creation_d:0,credenti:[1,11],criteria:7,current:8,custom:[11,12],cycl:[5,8,9],dai:8,dark:11,darkski:[8,9],dashboard:[8,10],data:[0,1,2,4,5,6,7,8,10,11,13],databas:[8,11],date:[0,1,6,8,9],debian:11,defin:[9,11],definit:8,delet:[0,1,7,8,9],depend:8,deprec:11,desc:0,descent:0,describ:11,descript:11,detail:[7,8,10],develop:10,differ:8,directori:11,disabl:[1,8,9],displai:[0,8,9,10,11],distanc:[0,4,8,9],distance_from:0,distance_to:0,document:[8,10,11],doe:[0,1,6,7,8],don:1,down:8,download:11,dramatiq:11,drop:8,durat:[0,4,8,9],duration_from:0,duration_to:0,dure:[0,1],edit:[1,8,9],elev:[0,8,9,11],email:[1,7,8],email_url:11,empti:8,enabl:[2,9],encount:11,end:[0,6],endpoint:[2,3,13],english:9,enter:[8,9],entiti:[0,1],environ:[8,10],environn:12,error:[0,1,2,5,7,8],europ:[1,7],even:[8,9],exampl:[0,1,2,4,5,6,7,10,11,12],exce:[0,1],except:7,exist:[0,1,6,7,9,10,12],exodu:10,expir:[0,1,2,4,5,6,7],extens:[0,1],fa33f4d996844a5c73ecd1ae24456ab8:0,fals:[0,1,2,5,7],farest:[4,8,9],featur:10,fetch:11,file:[0,1,2,8,9,10,11,12],filter:[8,9],first:[1,10],first_nam:[1,7],fittracke:[9,11],fittrackee_api:11,fix:10,flask:11,flaticon:11,follow:[4,11],forbidden:[0,1,2,5,6,7],forecast:11,form:[0,1],format:[0,1,6],former:11,forrunn:10,found:[0,1,5,6,7],frame:6,freepik:11,french:[9,10],fri:0,from:[0,2,4,5,6,7,8,10,11],gener:11,get:[0,1,2,4,5,6,7],gif:1,git:11,github:11,gmt:[0,1,4,7],gpl:10,gpx:[0,8,9,10,11],gpx_limit_import:2,gpxpy:11,handl:1,has:7,has_act:5,have:[0,2,5,6,7,8],header:[0,1,2,4,5,6,7],health:2,hike:[5,8,9],his:[7,8,9],http:[0,1,2,4,5,6,7,11,12],i18n:8,icon:11,imag:[0,1,7,11],img:5,improv:10,incorrect:8,info:1,inform:[8,10],initi:[11,12],instal:[8,10],instanc:[2,11],integ:[0,2,4,5,6,7],integr:2,interceptor:8,intern:[0,1,2,5,7],introduc:8,invalid:[0,1,2,4,5,6,7],is_act:5,is_registration_en:2,issu:[10,11],jan:0,javascript:11,john_do:7,jpeg:7,jpg:1,json:[0,1,2,4,5,6,7,13],jul:[0,1,4,7],keep:10,kei:[8,9,11],label:5,languag:[1,7],larg:[0,1],last:[1,11],last_nam:[1,7],latitud:0,leaflet:[0,11],least:0,limit:[8,9],line:13,linux:11,list:[8,10],load:8,local:[8,10,11],localhost:[11,12],locat:[1,7],log:[0,1,2,4,5,6,7,10,11],login:[1,11],logout:[1,8],longest:[4,8,9],longitud:0,made:[11,12],mai:11,major:8,make:11,makefil:[11,12],manag:8,mandatori:[0,8,11],map:[0,8,9,10,11],map_id:0,match:1,max:[0,2,7,11],max_alt:0,max_single_file_s:2,max_spe:0,max_speed_from:0,max_speed_to:0,max_us:2,max_zip_file_s:2,maxim:0,maximum:[4,8,9],mean:12,messag:[0,1,2],min_alt:0,minim:0,minor:10,mobil:10,modifi:7,modification_d:0,mon:0,mondai:[1,6,9],montain:[8,9],month:[6,8,9],more:[8,10],morn:0,mountain:5,mous:8,move:[0,8],mpwoadmin:11,multipart:[0,1],must:[1,2,5,8,9,11],name:[1,6,7],nb_activ:[1,6,7],nb_sport:[1,7],necessari:11,need:11,network:12,next_act:0,no_gpx:0,non:5,note:[0,8,9,11],now:[8,9,11],number:[0,2,7,9,11],oauth:[0,1,2,4,5,6,7],object:[0,1,2,5,7],one:[0,7],onli:[0,7,8,9],open:[10,11],option:11,order:[0,7,8],order_bi:7,other:[7,11],out:1,outdoor:10,over:8,own:[7,10],owner:[8,9],packag:[8,11],page:[0,7],pagin:[0,7],par_pag:7,paramet:[0,1,2,4,5,6,7,8,11],pari:[1,7],pars:[11,13],part:[0,1],password:[1,8,9,11],password_conf:1,past:11,patch:[0,2,5,7],paus:[0,8],payload:[0,1,2,5],per:[0,7],per_pag:[0,7],permiss:[0,2,5,6,7],pg_dump:11,pictur:[0,1,7,11],ping:2,pipenv:8,pleas:[0,1,2,4,5,6,7],png:[0,1,5],poetri:[8,11],point:8,pong:2,possibl:10,post:[0,1],postgresql:11,prefer:1,prerequisit:10,previous_act:0,privai:10,process:[1,11],product:[10,11],profil:1,project:11,proprietari:10,provid:[0,1,2,4,5,6,7,8,9,11],pull:11,python:[8,11],queri:[0,6,7],queue:11,react:11,react_app_allow_registr:11,react_app_api_url:[11,12],react_app_gpx_limit_import:11,react_app_max_single_file_s:11,react_app_max_zip_file_s:11,react_app_thunderforest_api_kei:11,readi:[10,11],rebuild:12,rechart:[0,11],record:[0,3,8,9,10],record_typ:[0,4],redi:[8,11],redis_url:11,redux:11,regist:[1,2,11],registr:[1,2,8,9],relat:11,releas:[10,11],remov:9,replac:8,repo:11,report:10,repositori:11,request:[0,1,2,4,5,6,7,12],requir:1,reset:[1,8,9],respons:[0,1,2,4,5,6,7],restart:11,right:[7,9],rout:8,run:[5,8,9,11],runner:10,sam:[1,7],same:8,samr1:11,sat:7,save:9,search:8,second:0,see:[8,9,10,11,12],segment:[0,8,9],segment_id:0,select:[0,1],send:[8,11],sender:11,sender_email:11,serv:11,server:[0,1,2,5,7,10,11],set:9,sever:10,show:8,side:8,signatur:[0,1,2,4,5,6,7],simplifi:8,sinc:11,singl:[2,7],size:[0,1,2,8,9,11],sky:11,smtp:11,some:[0,7,8,11],sorri:1,sort:[0,7],speed:[0,4,8,9,11],spinner:8,sport:[0,3,6,8,9,10,11],sport_id:[0,4,5,6],sports_list:[1,7],ssl:11,standard:8,start:[0,1,6,9,11],starttl:11,stat:[6,8],staticmap:11,statist:[3,10],statu:[0,1,2,4,5,6,7],step:11,still:10,stop:11,store:[10,11],street:10,string:[0,1,5,6,7],success:[0,1,2,4,5,6,7],successfulli:1,sun:[0,1,4,7],sundai:[0,6,9],support:[8,9],system:11,tab:12,tar:11,task:11,test:11,than:8,them:10,thi:[0,8,9,10,11],thunderforest:11,time:[0,1,6,8,9],timezon:[1,7,8],titl:0,tls:11,todo:[11,14],token:[0,1,2,4,5,6,7],too:[0,1],tooltip:8,total:8,total_dist:[1,6,7],total_dur:[1,6,7],track:10,tracker:10,transport:[5,8,9],troubleshoot:10,type:[0,1,2,4,5,6,7],ui_url:11,unauthor:[0,1,2,4,5,6,7],undefin:12,under:10,unencrypt:11,unexpect:13,updat:[0,1,2,5,7,8,9,11],upgrad:10,upload:[8,9,11],uploads_dir_s:6,url:[8,11],used:11,user:[0,1,2,3,4,5,6,8,9,10,11,13],user_nam:[6,7],usernam:[1,7,11],usernanm:1,using:[0,7,10],valid:[0,1,2,4,5,6,7,11],valu:[0,4,11],variabl:[8,10,12],version:[10,11],view:8,virtualenv:11,walk:[5,8,9],weather:[8,9,11],weather_end:0,weather_start:0,web:[0,1,2,4,5,6,7,10],week:[1,6,8,9],weekend:8,weekm:[1,6],were:8,wget:11,when:8,which:9,with_gpx:0,without:[0,6,7,8,9,10],worker:11,workers_process:11,workout:10,written:11,www:11,xzf:11,yai:11,yarn:11,year:6,yet:[10,11],you:[0,2,5,6,7,10],your:[7,10],zip:[0,2,9,11],zone:1},titles:["Activities","Authentication","Configuration","API documentation","Records","Sports","Statistics","Users","Change log","Features","FitTrackee","Installation","Administrator","Troubleshooting","User"],titleterms:{"new":8,account:9,activ:[0,9],administr:[8,9,12],api:3,authent:1,avail:8,bug:8,chang:8,charact:12,close:8,column:12,configur:2,content:10,dashboard:9,data:12,detail:9,dev:11,document:3,email:11,environ:11,featur:[8,9],first:8,fittracke:[8,10],fix:8,french:8,improv:8,instal:11,issu:8,json:12,line:12,list:9,log:8,minor:8,misc:8,pars:12,prerequisit:11,prod:11,record:4,releas:8,sport:5,statist:[6,8,9],tabl:10,translat:9,troubleshoot:13,unexpect:12,upgrad:11,user:[7,14],variabl:11,version:8,workout:9}}) \ No newline at end of file diff --git a/docs/troubleshooting/administrator.html b/docs/troubleshooting/administrator.html index 32d632ec..c9b6bbda 100644 --- a/docs/troubleshooting/administrator.html +++ b/docs/troubleshooting/administrator.html @@ -4,7 +4,7 @@ - Administrator — FitTrackee 0.2.5-beta + <title>Administrator — FitTrackee 0.3.0-beta documentation @@ -40,7 +40,7 @@ FitTrackee - 0.2.5 + 0.3.0
    diff --git a/docs/troubleshooting/index.html b/docs/troubleshooting/index.html index a7ea04b1..996c12bb 100644 --- a/docs/troubleshooting/index.html +++ b/docs/troubleshooting/index.html @@ -4,7 +4,7 @@ - Troubleshooting — FitTrackee 0.2.5-beta + <title>Troubleshooting — FitTrackee 0.3.0-beta documentation @@ -40,7 +40,7 @@ FitTrackee - 0.2.5 + 0.3.0
    diff --git a/docs/troubleshooting/user.html b/docs/troubleshooting/user.html index db91057b..ec4efec9 100644 --- a/docs/troubleshooting/user.html +++ b/docs/troubleshooting/user.html @@ -4,7 +4,7 @@ - User — FitTrackee 0.2.5-beta + <title>User — FitTrackee 0.3.0-beta documentation @@ -40,7 +40,7 @@ FitTrackee - 0.2.5 + 0.3.0
    diff --git a/docsrc/source/_images/fittrackee_screenshot-01.png b/docsrc/source/_images/fittrackee_screenshot-01.png index 3d97a078..9a6f4e7f 100644 Binary files a/docsrc/source/_images/fittrackee_screenshot-01.png and b/docsrc/source/_images/fittrackee_screenshot-01.png differ diff --git a/docsrc/source/_images/fittrackee_screenshot-02.png b/docsrc/source/_images/fittrackee_screenshot-02.png index 6bf9abac..16df2a1a 100644 Binary files a/docsrc/source/_images/fittrackee_screenshot-02.png and b/docsrc/source/_images/fittrackee_screenshot-02.png differ diff --git a/docsrc/source/_images/fittrackee_screenshot-03.png b/docsrc/source/_images/fittrackee_screenshot-03.png index 10aaff60..80a31501 100644 Binary files a/docsrc/source/_images/fittrackee_screenshot-03.png and b/docsrc/source/_images/fittrackee_screenshot-03.png differ diff --git a/docsrc/source/_images/fittrackee_screenshot-04.png b/docsrc/source/_images/fittrackee_screenshot-04.png index b0a1ce26..a5bd089b 100644 Binary files a/docsrc/source/_images/fittrackee_screenshot-04.png and b/docsrc/source/_images/fittrackee_screenshot-04.png differ diff --git a/docsrc/source/_images/fittrackee_screenshot-05.png b/docsrc/source/_images/fittrackee_screenshot-05.png new file mode 100644 index 00000000..fe63fe7e Binary files /dev/null and b/docsrc/source/_images/fittrackee_screenshot-05.png differ diff --git a/docsrc/source/conf.py b/docsrc/source/conf.py index 84669c13..2860de24 100644 --- a/docsrc/source/conf.py +++ b/docsrc/source/conf.py @@ -26,7 +26,7 @@ def setup(app): # -- Project information ----------------------------------------------------- project = 'FitTrackee' -copyright = '2018 - 2019, SamR1' +copyright = '2018 - 2020, SamR1' author = 'SamR1' # The full version, including alpha/beta/rc tags. diff --git a/docsrc/source/features.rst b/docsrc/source/features.rst index 4785bba1..0be2d9d3 100644 --- a/docsrc/source/features.rst +++ b/docsrc/source/features.rst @@ -4,10 +4,29 @@ Features List ~~~~ -Users -^^^^^ -- Account creation (only standard user, not admin) -- User registration can be disabled +Account +^^^^^^^ +- A user can create, update and deleted his account +- Password reset is now available + +Administration +^^^^^^^^^^^^^^ +- Application + + - active users limit (if 0, registration is enabled (no limit defined)) + - maximum size of uploaded files + - maximum size of zip archive + - maximum number of files in the zip archive + +- Users + + - display users list and details + - edit a user to add/remove administration rights + - delete a user + +- Sports + + - enable or disable a sport (a sport can be disabled even if activity with this sport exists) Activities/Workouts ^^^^^^^^^^^^^^^^^^^ @@ -32,8 +51,7 @@ Activities/Workouts **Notes:** -- only activity owner can see his activity -- **no administration for now** +- for now, only activity owner can see his activities Translations ^^^^^^^^^^^^ @@ -63,3 +81,8 @@ Statistics ~~~~~~~~~~ .. figure:: _images/fittrackee_screenshot-04.png :alt: FitTrackee Statistics + +Administration +~~~~~~~~~~~~~~ +.. figure:: _images/fittrackee_screenshot-05.png + :alt: FitTrackee Administration diff --git a/docsrc/source/index.rst b/docsrc/source/index.rst index d163648a..e6cb1b16 100644 --- a/docsrc/source/index.rst +++ b/docsrc/source/index.rst @@ -10,11 +10,11 @@ FitTrackee | No mobile app is developed yet, but several existing mobile apps can store workouts data locally and export them into a gpx file. | Examples (for Android): -| \* `Runner Up `__ (GPL v3) -| \* `ForRunners `__ (GPL v3) -| \* `AlpineQuest `__ (Proprietary, no +| \* `Runner Up `_ (GPL v3) +| \* `ForRunners `_ (GPL v3) +| \* `AlpineQuest `_ (Proprietary, no trackers according to `exodus privay - report `__) + report `_) | Maps are displayed using `Open Street Map `__. diff --git a/docsrc/source/installation.rst b/docsrc/source/installation.rst index 729bacc1..50d495a7 100644 --- a/docsrc/source/installation.rst +++ b/docsrc/source/installation.rst @@ -5,9 +5,10 @@ This application is written in Python (API) and Javascript (client): - API: - Flask - - `gpxpy `__ to parse gpx files - - `staticmap `__ to generate a static map image from gpx coordinates - - `python-forecast.io `__ to fetch weather data from `Dark Sky `__ (former forecast.io) + - `gpxpy `_ to parse gpx files + - `staticmap `_ to generate a static map image from gpx coordinates + - `python-forecast.io `_ to fetch weather data from `Dark Sky `__ (former forecast.io) + - `dramatiq `_ for task queue - Client: - React/Redux - `Leaflet `__ to display map @@ -19,12 +20,14 @@ Prerequisites ~~~~~~~~~~~~~ - PostgreSQL database (10+) +- Redis for task queue - Python 3.7+ - `Poetry `__ - `Yarn `__ and `serve `__ - API key from `ThunderForest `__ - API key from `Dark Sky `__ [not mandatory] +- SMTP provider Installation @@ -40,14 +43,14 @@ Installation .. code-block:: bash - $ yaourt poetry + $ yay poetry $ poetry --version - Poetry 0.12.17 + Poetry 1.0.5 # optional - $ poetry config settings.virtualenvs.in-project true + $ poetry config virtualenvs.in-project true - For other OS, see `Poetry Documentation `__ + For other OS, see `Poetry Documentation `__ Dev environment @@ -78,6 +81,12 @@ Dev environment $ make serve +- Run dramatiq workers: + +.. code:: bash + + $ make run-workers + Open http://localhost:3000 and login (the email is ``admin@example.com`` and the password ``mpwoadmin``) or register @@ -87,13 +96,13 @@ Prod environment .. warning:: Note that FitTrackee is not production-ready yet -- Download the last release (for now, it is the beta release v0.2.5): +- Download the last release (for now, it is the beta release v0.3.0): .. code:: bash - $ wget https://github.com/SamR1/FitTrackee/archive/v0.2.5-beta.tar.gz - $ tar -xzf v0.2.5-beta.tar.gz - $ mv FitTrackee-0.2.3-beta FitTrackee + $ 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 @@ -120,6 +129,12 @@ Prod environment $ make run +- Run dramatiq workers: + +.. code:: bash + + $ 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 @@ -174,10 +189,28 @@ The following environment variables must be defined in **Makefile.custom.config* ===================================== ======================================= ==================================== variable description app default value ===================================== ======================================= ==================================== -``REACT_APP_GPX_LIMIT_IMPORT`` max. number of gpx file in zip archive 10 -``REACT_APP_MAX_SINGLE_FILE_SIZE`` max. size of a gpx or picture file 1MB -``REACT_APP_MAX_ZIP_FILE_SIZE`` max. size of a zip archive 10MB -``REACT_APP_ALLOW_REGISTRATION`` allows users to register true -``REACT_APP_THUNDERFOREST_API_KEY`` ThunderForest API key no defaut value, must be initialized -``WEATHER_API`` DarkSky API key no defaut value, not mandatory +``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 no default value, must be initialized +``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 environement 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`` \ No newline at end of file diff --git a/fittrackee_api/pyproject.toml b/fittrackee_api/pyproject.toml index 92dbb8d2..3483fd2d 100644 --- a/fittrackee_api/pyproject.toml +++ b/fittrackee_api/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fittrackee_api" -version = "0.2.5-beta" +version = "0.3.0-beta" description = "" authors = ["Your Name "] license = "GPL-3.0" diff --git a/fittrackee_client/src/utils/index.js b/fittrackee_client/src/utils/index.js index becb8488..7288dd3f 100644 --- a/fittrackee_client/src/utils/index.js +++ b/fittrackee_client/src/utils/index.js @@ -17,7 +17,7 @@ export const getFileSizeInMB = fileSize => { return (!fileSize && 0) || +value.toFixed(2) } -export const version = '0.2.5-beta' // version stored in 'utils' for now +export const version = '0.3.0-beta' // version stored in 'utils' for now export const apiUrl = `${process.env.REACT_APP_API_URL}/api/` /* prettier-ignore */ export const thunderforestApiKey = `${ diff --git a/package.json b/package.json index c37d3a13..bf4b26f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fittrackee_client", - "version": "0.1.0", + "version": "0.3.0-beta", "private": true, "dependencies": { "@mapbox/togeojson": "^0.16.0",