Metadata-Version: 2.1
Name: workoutizer
Version: 0.6.13
Summary: Browser-based Sport Workout Organizer to analyze your Activities locally
Home-page: https://github.com/fgebhart/workoutizer
Author: Fabian Gebhart
License: UNKNOWN
Platform: UNKNOWN
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Framework :: Django
Classifier: Framework :: Django :: 2.2
Classifier: Framework :: Django :: 3.0
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: asgiref (==3.2.10)
Requires-Dist: bokeh (==1.4.0)
Requires-Dist: certifi (==2020.6.20)
Requires-Dist: chardet (==3.0.4)
Requires-Dist: click (==7.1.2)
Requires-Dist: coloredlogs (==14.0)
Requires-Dist: django-colorfield (==0.3.1)
Requires-Dist: django-leaflet (==0.26.0)
Requires-Dist: django (==3.0.8)
Requires-Dist: djangorestframework (==3.11.0)
Requires-Dist: fitparse (==1.1.0)
Requires-Dist: geographiclib (==1.50)
Requires-Dist: geopy (==2.0.0)
Requires-Dist: gpxpy (==1.4.2)
Requires-Dist: humanfriendly (==8.2)
Requires-Dist: idna (==2.10)
Requires-Dist: jinja2 (==2.11.2)
Requires-Dist: markupsafe (==1.1.1)
Requires-Dist: numpy (==1.19.0)
Requires-Dist: packaging (==20.4)
Requires-Dist: pandas (==1.0.5)
Requires-Dist: pillow (==7.2.0)
Requires-Dist: pyparsing (==2.4.7)
Requires-Dist: python-dateutil (==2.8.1)
Requires-Dist: pytz (==2020.1)
Requires-Dist: pyyaml (==5.3.1)
Requires-Dist: requests (==2.24.0)
Requires-Dist: six (==1.15.0)
Requires-Dist: sqlparse (==0.3.1)
Requires-Dist: tornado (==6.0.4)
Requires-Dist: urllib3 (==1.25.9)
Provides-Extra: testing
Requires-Dist: ansible (==2.9.10) ; extra == 'testing'
Requires-Dist: attrs (==19.3.0) ; extra == 'testing'
Requires-Dist: cffi (==1.14.0) ; extra == 'testing'
Requires-Dist: click (==7.1.2) ; extra == 'testing'
Requires-Dist: cryptography (==2.9.2) ; extra == 'testing'
Requires-Dist: importlib-metadata (==1.7.0) ; extra == 'testing'
Requires-Dist: jinja2 (==2.11.2) ; extra == 'testing'
Requires-Dist: markupsafe (==1.1.1) ; extra == 'testing'
Requires-Dist: more-itertools (==8.4.0) ; extra == 'testing'
Requires-Dist: packaging (==20.4) ; extra == 'testing'
Requires-Dist: pip-tools (==5.2.1) ; extra == 'testing'
Requires-Dist: pluggy (==0.13.1) ; extra == 'testing'
Requires-Dist: py (==1.9.0) ; extra == 'testing'
Requires-Dist: pycparser (==2.20) ; extra == 'testing'
Requires-Dist: pyparsing (==2.4.7) ; extra == 'testing'
Requires-Dist: pytest-django (==3.9.0) ; extra == 'testing'
Requires-Dist: pytest (==5.4.3) ; extra == 'testing'
Requires-Dist: pyyaml (==5.3.1) ; extra == 'testing'
Requires-Dist: selenium (==3.141.0) ; extra == 'testing'
Requires-Dist: six (==1.15.0) ; extra == 'testing'
Requires-Dist: urllib3 (==1.25.9) ; extra == 'testing'
Requires-Dist: wcwidth (==0.2.5) ; extra == 'testing'
Requires-Dist: zipp (==3.1.0) ; extra == 'testing'

# Workoutizer

The Workoutizer is a simple web application for organizing your workouts and sports activities. It is designed to work
locally on any UNIX-like system running Python.

Track your activities to get an overview of your overall training, similar to platforms like
[strava](https://www.strava.com/) or [garmin connect](https://connect.garmin.com/) - but without
uploading all your sensitive health data to some 3rd party cloud.

#### Features
* Automatic import of Garmin `.fit` files and `.gpx` files
* Dashboard overview page of all activities
* Render your activity gps data on different OSM maps
* Show either all activities of one sport or only one activity on the map
* Plots of activity specific data like: heart rate, pace, temperature, cadence and altitude
* Integrate laps into both plots and maps
* Connect plots and map via mouse hovering
* Keyboard navigation in browser
* Add untracked activities manually via the GUI
* Create and download `.gpx` files to share your activities
* Add as many different sports as you want.
* Convenience CLI for installing, configuring, updating, ...


## Getting Started

Install workoutizer
```shell script
pip install workoutizer
```

Initialize and run workoutizer
```shell script
wkz init
wkz run
```

See the help description of the CLI with `wkz --help` and even subcommands, e.g.: `wkz manage --help`. 

Note: This should work for any Linux and Mac system. Please
[report any occurring issues](https://github.com/fgebhart/workoutizer/issues) when installing workoutizer.

Workoutizer comes bundled with some initial toy activity data, which can be deleted easily on the Settings page.

In case you want to run workoutizer on a Raspberry Pi in your local network, follow the 
[Raspberry Pi setup instructions](https://github.com/fgebhart/workoutizer/tree/master/setup).

## Gallery 

 Dashboard             |  Sport Page
:-------------------------:|:-------------------------:
![](https://i.imgur.com/FcB5JDl.png)  |  ![](https://i.imgur.com/6fwcEZX.png)

 Activity Page 1/2             |  Activity Page 2/2
:-------------------------:|:-------------------------:
![](https://i.imgur.com/iuXhiab.png)  |  ![](https://i.imgur.com/7nV4Ks2.png)

## Thanks

Thanks to the authors of projects I integrated into workoutizer:
* [leaflet-ui](https://github.com/Raruto/leaflet-ui) by [Raruto](https://github.com/Raruto)
* [django-colorfield](https://github.com/fabiocaccamo/django-colorfield) by [Fabio Caccamo](https://github.com/fabiocaccamo)
* [python-fitparse](https://github.com/dtcooper/python-fitparse) by [dtcooper](https://github.com/dtcooper)
* [leaflet-color-markers](https://github.com/pointhi/leaflet-color-markers) by [pointhi](https://github.com/pointhi)
* [Font Awesome Icons](https://fontawesome.com/)

Enjoy!

## Changelog

See the [releases section](https://github.com/fgebhart/workoutizer/releases).

For older releases have a look at the [archived project at gitlab](https://gitlab.com/fgebhart/workoutizer).

## Contributing

Contributions are welcome! Feel free to pick an [open issue](https://github.com/fgebhart/workoutizer/issues), open up 
a pull request or file a new issue.

For local development first clone the repo and install the `dev-requirements.txt` like
```shell script
pip install -r setup/requirements/dev-requirements.txt
``` 
Afterwards I recommend to run the development docker container:
```shell script
./run_docker.sh
```
This will build the image, run the container and initialize workoutizer. Once up and running, run the tests
```shell script
pytest wizer/tests/
```
Once this was successful you are good to go.

Note: The `browser_tests` cannot (yet) be ran from within the docker container, but it is possible to run them form your
host system. You might need to install [gecko driver](https://github.com/mozilla/geckodriver/releases) though.


