Package: django-for-runners
Django-ForRunnersStore your GPX tracks of your running (or other sports activity) in django.(The nameDjango-ForRunnershas the origin from the great Android tracking appForRunnersby Benoît Hervier:http://rvier.fr/#forrunners)django-for-runners_ynhallows you to install Django-ForRunners quickly and simply on a YunoHost server. If you don't have YunoHost, please consultthe guideto learn how to install it.Features:GPX track management:Upload GPX tracksImport GPX tracks from commandlineTrack analysis:basics: Track length / Duration / Pace / Hart rate Up-/DownhillDisplay route on OpenStreetMap mapGraphs with elevation / heart rate / cadence (if available in GPX data)Data that is automatically extracted from the web:Start/finish Address from OpenStreetMapStart/finish weather information from metaweather.comStore additional data:Ideal track distance (for easier grouping/filtering tracks)sports competitions Management:Create a List of Sport EventsAdd participation to a eventlink GPX track with a event participationStore you event participation:official track lengthmeasured finisher timeNumber of participants who have finished in your disciplineAdd links to webpages relatet to this eventRecord costs (entry fee, T-shirt etc.)commonMultiple user support (However: no rights management and currently only suitable for a handful of users)Developer informationprepareTo start hacking: Just clone the project and start./manage.pyto bootstrap a virtual environment:# Install base requirements for bootstraping:~$sudoaptinstallpython3-pippython3-venv# Get the sources:~$gitclonehttps://github.com/jedie/django-for-runners.git
~$cddjango-for-runners/# Just call manage.py:~/django-for-runners$./manage.py--help
...[manage_django_project]code_stylecoverageinstallproject_infopublishrun_dev_serversafetytoxupdate_req
...This bootstrap is realized with:https://github.com/jedie/manage_django_projectStart Django's dev server:~/django-for-runners$./manage.pyrun_dev_serverThe web page is available in Port 8000, e.g.:http://127.0.0.1:8000/Run tests, e.g.:~/django-for-runners$./manage.pytest# or with coverage~/django-for-runners$./manage.pycoverage# or via tox:~/django-for-runners$./manage.pytoximport GPX filese.g.:~/django-for-runners$ ./manage.py import_gpx --username <django_username> ~/backups/gpx_filesNote:It is no problem to startimport_gpxwith the same GPX files: Duplicate entries are avoided. The start/finish (time/latitude/longitude) are compared.backupCreate a backup into.../backups/<timestamp>/e.g.:~/django-for-runners$ ./manage.py backupThe backup does:backup the databaseexport all GPX tracksgenerate .csv files:a complete file with all running tracksone file for every userScreenshots(All screenshots are here:github.com/jedie/jedie.github.io/tree/master/screenshots/django-for-runners)for-runers v0.6.0 2018-07-31 GPX Track.pngfor-runners v0.4.0 2018-6-26 GPX info.pngfor-runners v0.6.0 2018-07-19 Event Costs.pngprint a small overviewsome notesGPX storageCurrently we store the unchanged GPX data in a TextField.static filesWe collect some JavaScript files, for easier startup. These files are:Project HomepageLicensestorage directoryleafletjs.comLeaflet licensed under BSDfor_runners/static/leaflet/dygraphs.comdygraphs licensed under MITfor_runners/static/dygraphs/chartjs.orgChart.js licensed under MITfor_runners/static/chartjs/Precision of coordinatesGPX files from Garmin (can) contain:latitude with 29 decimal placeslongitude with 28 decimal placeselevation with 19 decimal placesThe route on OpenStreetMap does not look more detailed, with more than 5 decimal places.See also:https://wiki.openstreetmap.org/wiki/Precision_of_coordinatesMake new releaseWe usecli-base-utilitiesto generate the history in this README.To make a new release, do this:Increase your project version numberRun tests to update the READMEcommit the changesCreate releaseDjango compatibilitydjango-for-runnersdjango versionpython>=v0.16.04.13.9, 3.10, 3.11>=v0.15.03.2, 4.0, 4.13.7, 3.8, 3.9, 3.10>=v0.14.03.23.7, 3.8, 3.9, 3.10>=v0.12.02.23.7, 3.8, 3.9, 3.10>=v0.11.02.23.7, 3.8, 3.9>=v0.7.12.13.5, 3.6, 3.7v0.5.x2.03.5, 3.6, 3.7(See also combinations intox settings in pyproject.tomlandgithub actions)Backwards-incompatible changesv0.16.0We switched from Poetry to pip-tools andhttps://github.com/jedie/manage_django_projectJust remove the old Poetry venv and bootstrap by call the./manage.py, see above.We also remove different Django Versions from test matrix and just use the current newest version.
Because this is a project and not really a reuse-able-app ;)historyv0.17.42023-11-07 - audo generate README history2023-11-07 - Update Requirements2023-11-07 - Update UploadGpxFileForm2023-04-05 - Update to manage-django-project v0.3.0rc02023-04-05 - Bugfixes:2023-04-04 - Switch to "managed-django-project" template:v0.17.32023-04-03 - Bugfix check if Postgres is used and migration not donev0.17.22023-04-02 - release 0.17.22023-04-02 - Bugfix adding all template filesv0.17.12023-04-02 - Bugfix packaging and missing files2023-04-02 - update link tohttps://github.com/kbr/autotaskExpand older history entries ...v0.17.02023-04-02 - Bugfix edit aGpxModelinstance in admin with a large GPX track2023-04-02 - Bugfix manage call and merge project test code2023-04-02 - update ProjectSetupTestCase2023-04-02 - fix code style2023-04-02 - Update requirements2023-04-02 - apply manages projects2023-04-02 - -prod_settings2023-04-02 - update projectv0.16.02023-03-13 - update requirements2023-03-12 - code cleanup: Remove obsolete file2023-03-12 - Code cleanup around init2023-03-12 - Usehttps://github.com/jedie/manage_django_project2023-03-11 - Update README.md2023-01-27 - poetry -> piptools2023-02-07 - manageprojects2023-01-31 - use .venv, update req2022-08-30 - check_editor_config2022-08-30 - NEW: Attach files and images to "Event Participations2022-08-30 - Rename model field participation person to userv0.15.02022-08-29 - bugfix publishing2022-08-29 - update README2022-08-29 - Use 'for_runners_project.settings.local' as default2022-08-29 - Bugfix run_dev_server command2022-08-23 - WIP: Replace README.creole with README.md2022-08-17 - Bugfix test settings2022-08-17 - add info2022-08-17 - bugfix "make update-rst-readme"2022-08-17 - Use AlwaysLoggedInAsSuperUserMiddleware from django-tools for local dev. server2022-08-17 - Use django_tools.management.commands.run_testserver2022-08-17 - update requirements2022-08-17 - update poetry, too2022-08-16 - Speedup CI2022-08-16 - tox: run with multiple django versionsv0.14.02022-08-16 - +"make lint"2022-08-16 - Update to Django 3.22022-08-16 - fix editorconfig2022-08-16 - uses: codecov/codecov-action@v22022-07-06 - Bump lxml from 4.8.0 to 4.9.12022-06-02 - Bump pillow from 9.1.0 to 9.1.12022-04-16 - Bugfix backupv0.13.02022-04-15 - v0.13.0rc12022-04-15 - Refresh all metaweather/OSM fixtures and use tooling from bx_django_utils2022-04-15 - Fix Tests by addning ignored .json fixture files2022-04-15 - fix coverage report2022-04-15 - fix darker in github actions2022-04-15 - set v0.13.02022-04-15 - fix styles/tests2022-04-15 - Remove "/development/" and mode "/src/"2022-04-15 - fix tox config2022-04-15 - fix code style2022-04-15 - use darker2022-04-15 - Update Project setup2022-04-15 - master -> main2022-04-15 - Update requirements2022-03-12 - Bump pillow from 9.0.0 to 9.0.12022-02-10 - Bump django from 2.2.26 to 2.2.272022-01-13 - Bump django from 2.2.25 to 2.2.262022-01-13 - Bump pillow from 8.4.0 to 9.0.02021-12-15 - Bump django from 2.2.24 to 2.2.252021-12-13 - Bump lxml from 4.6.4 to 4.6.5v0.12.12021-11-22 - fix readme2021-11-22 - Update pythonapp.yml2021-11-22 - update requirements2021-11-22 - cleanup gitignore2021-11-22 - update github actions2021-05-23 - Update Github CI config2021-05-23 - Code cleanup2021-05-23 - remove Travis CI config2021-05-23 - Update requirements + code changes for bx_py_utils -> bx_django_utilsv0.12.02021-01-17 - prepare v0.12.0 release2021-01-17 - update README2021-01-17 - Link to django-for-runners_ynh in README2021-01-17 - fix logo in README2021-01-17 - update badge in README2021-01-17 - fix GPX file upload test2021-01-17 - update deps2020-12-30 - update tests2020-12-30 - update requirements2020-12-30 - set version to 0.12.0.rc32020-12-30 - remove colorama and cleanup2020-12-30 - update to latest bx_py_utils2020-12-30 - install poetry via pip and update pip in venv, too2020-11-25 - Fix code style2020-11-25 - Add view to serve MEDIA files only for allowed user2020-11-25 - print to stderr (so it's not in the dumpdata ;)2020-11-25 - Add "adminer" container to dev run2020-11-25 - add "make dumpdata"2020-11-25 - fix project setup2020-11-24 - fix "make fix-code-style"2020-11-24 - fix coverage2020-11-24 - Bugfix "make pytest" by using the test settings2020-11-24 - check if cache is working in tests2020-11-24 - use LocMemCache as default cache backend2020-11-24 - geo reverse test: check if cache is filles2020-11-24 - Add one missing request mock in tests2020-11-24 - Activate "pytest-randomly"2020-11-24 - Mock HTTP-Requests and django file storage in tests2020-11-23 - migrate deployment setup from PyInventory2020-11-23 - Fix test2020-11-23 - Work a round for created static/media files in tests2020-11-23 - Mock some nominatim.openstreetmap.org requests in tests2020-11-14 - mock geo() request against "nominatim.openstreetmap.org/reverse"2020-11-14 - Remove django-tools API change warnings2020-11-14 - Don't use pytest-parallel on CI2020-11-14 - add "pytest-parallel"2020-11-14 - try to fix github actions2020-11-14 - try optimize github action?2020-11-14 - fix tox selenium tests by "passenv = *"2020-11-14 - fix setup2020-11-14 - WIP: fix docker setup2020-11-14 - add github actions2020-11-14 - set versions number to 0.12.0.rc12020-11-14 - Add deployment stuff2020-11-14 - WIP: Update project setup2020-11-14 - add manage files2020-11-14 - update Makefile2020-11-14 - WIP: update django project2020-11-14 - remove git_sync.sh2020-11-14 - move to /src/2020-11-14 - +dev_scripts/fill_translations.py2020-11-14 - update project meta filesv0.11.02020-07-04 - Update README2020-07-04 - move download scripts into /dev_scripts/2020-07-04 - fix code styles2020-07-04 - add .flake8 config file2020-07-04 - Update requirements2020-07-04 - Add "make update"2020-06-09 - apply pyupgrade2020-06-09 - +pyupgrade2020-06-09 - apply autopep82020-06-09 - setup autopep8 in pyproject.toml2020-06-09 - Apply isort2020-06-09 - add isort config file2020-06-09 - apply flynt2020-06-09 - Fix SVG test by compare it via parsed DOM-Tree ;)2020-06-06 - remove double elements in short-address2020-06-06 - disable pytest "randomly" plugin by default2020-06-06 - remove obsolete "update" cli command2020-06-06 - deactivate test TODO: Update it2020-06-06 - remove obsolete test2020-06-06 - fix for_runners/tests/test_svg.py2020-06-06 - update doctest in geo.py and add logging output2020-06-06 - Use poetry and a make file2020-06-09 - Update base.txt2020-06-06 - update gunicorn server2020-06-06 - Bugfix 'fill_basedata' manage command2019-08-25 - WIP: update tests2019-08-25 - Add a hint on UnicodeEncodeError in own manage commands2019-08-25 - refactor gpx import code and tests2019-08-25 - add link to:https://github.com/rsjrny/Garmin-Connect-Export2019-08-25 - remove link to gpsies.comv0.10.12019-08-09 - Update .travis.yml2019-08-09 - list_display_links = ("event_name",)2019-06-26 - Add start date and costs to "Event Participation" tablev0.10.02019-06-26 - update README2019-04-08 - tweak print view2019-04-08 - generate missing svg files2019-04-08 - Bugfix generate_svg2019-04-08 - NEW: print mini2019-04-03 - fixup! fix test2019-04-03 - only code cleanup2019-04-03 - add date filter on gpx tracks2019-04-03 - fix test2019-04-03 - Accept optional server bind address2019-04-03 - pip for python 3 is needed for bootv0.9.02019-04-02 - fixup! skip after_install_callback() on "publish"2019-04-02 - only code formatting2019-04-02 - skip after_install_callback() on "publish"2019-04-02 - WIP: fix tests on python 3.52019-04-02 - refactor SVG and GPX files2019-04-02 - update tests2019-04-02 - use cutted b32encode sha512 hash2019-04-02 - update tests for "add" -> "upload" redirect2019-04-02 - USE_TZ = True2019-04-02 - "run-gunicorn" -> "run-server"2019-04-02 - redirect the defaul add view to upload form view2019-04-02 - Bugfix: Ensure that there are no more than 2 decimal places2019-04-01 - use django_tools.file_storage.file_system_storage.OverwriteFileSystemStorage2019-04-01 - use colorlog2019-04-01 - use django_tools.exception_plus2019-04-01 - call self.full_clean() in save()2019-04-01 - bugfix "bin/for_runners update"2019-03-21 - WIP2019-03-21 - +** NEW: export GPX Data via {{{django-import-export}}}2019-03-21 - chmod +x2019-03-21 - just run black code formatting2019-03-21 - +run_black.sh2019-01-31 - fixup! update tests2019-01-31 - +test "for_runers update" command2019-01-31 - fix --version and test ;)2019-01-31 - print("Start up...")2019-01-31 - hack: use "run-gunicorn" as default action2019-01-31 - NEW: Update installation with: {{{for_runners update}}}2018-12-17 - remove admin action "export as json"2018-12-17 - cleanup export stuff2018-12-17 - create normal and dev.server starter2018-12-11 - nicer export2018-12-11 - remove debug prints2018-12-11 - +Andreas Hudzieczek2018-12-11 - use gunicorn as default2018-12-11 - +gunicorn2018-12-11 - WIP: django-import-export2018-11-18 - only code style2018-11-18 - add gunicorn as requirements2018-11-18 - supported running gunicorn server2018-11-18 - README2018-11-18 - finish backup/export2018-11-18 - WIP: export .csv files on backup2018-11-18 - +for_runners_project2018-11-18 - update click to v7.02018-11-17 - WIP: Backup/export via cli: "$ for_runners backup"2018-11-17 - move virtualenv path helper2018-11-17 - refactor call manage command2018-11-17 - DjangoForRunnersEnv -> Django-ForRunners2018-11-17 - regenerate all SVG files by: "$ for_runners recreate_svg"2018-11-17 - remove " && bash -i" from desktop file2018-11-17 - +start by hand2018-09-16 - setup event admin change list2018-09-16 - Bugfix: Open browser only one time2018-09-15 - Create xdg-open desktop starter under linux2018-09-12 - +Windows2018-09-12 - Patches for windows usage2018-09-12 - Work-a-round for windows2018-09-12 - Create boot_django_for_runners.cmd2018-09-09 - add icon link in html head2018-09-09 - Update README.creole2018-09-09 - Add logo as 128x128 png2018-09-09 - Add logo as SVG2018-09-09 - fix tests for python 3.52018-09-07 - update README2018-09-07 - refactory startup and rename "for_runners_test_project" -> "for_runners_project"v0.8.12018-09-03 - v0.8.12018-09-03 - bin/run_dev_server -> bin/for_runnersv0.8.02018-09-03 - v0.8 and README2018-09-03 - use pip cache from travis2018-09-03 -https://github.com/travis-ci/travis-ci/issues/8589#issuecomment-3729471992018-09-03 - +test boot script2018-09-03 - WIP: boot/setup/usage2018-09-03 - Update README.creole2018-09-03 - auto call 'fill_basedata'2018-09-03 - nicer error if django can't import2018-09-02 - Add links from event participation to GPX tracks2018-09-02 - GpxModel.participation ForeignKey->OneToOneFieldv0.7.12018-09-02 - fix tests test with django 2.12018-09-02 - fixup! fix staff user tests2018-09-02 - fix staff user tests2018-09-02 - Update README.creolev0.7.02018-09-02 - update readme2018-09-02 - +AUTHORS2018-09-02 - fix #22018-08-31 - move manipluation of list_display and list_filter2018-08-28 - update tests2018-08-28 - Add TODO2018-08-28 - handle ZeroDivisionError calculating pace2018-08-28 - redirect to change view after upload2018-08-21 - catch NotImplementedError and NotSupportedError for missing sqlite distinct feature2018-08-21 - install pytest version compatible with pytest-django2018-08-21 - update tests: OSM data changed2018-08-21 - WIP: Add links from gpx tracks to other admin change view2018-08-21 - Add username to headline2018-08-21 - display user names only if there are tracks from more than one user2018-08-21 - handle invalid GPX data while importing2018-08-21 - Replace "Change GPX Track" headline with more informations2018-08-21 - refactor route/graphs creation and style2018-08-21 - Bugfix admin filter "By has event": Update since model refactoring2018-08-21 - Bugfix admin filter "By has net duration": Update since model refactoring2018-07-31 - Update README.creole2018-07-31 - update screenshot2018-07-31 - refactor duration field2018-07-31 - for_runners/static/{dygraph => dygraphs}/2018-07-31 - cleanup2018-07-24 - replace gxp track chart.js with dygraph2018-07-19 - add link to all screenshots2018-07-19 - +for-runners v0.6.0 2018-07-19 Event Costs.pngv0.6.02018-07-19 - release v0.62018-07-19 - tune event statistics2018-07-19 - Add some basic event statistics2018-07-19 - help text2018-07-19 - +CostModel2018-07-19 - split admin.py2018-07-19 - bugfix change event view2018-07-12 - WIP: event participationv0.5.02018-07-04 - ignore pypy3 tests, because of "decimal.InvalidOperation"2018-07-04 - install via pypi2018-07-04 - +DocString2018-07-04 - +docutils2018-07-04 - update README2018-07-04 - WIP: fix travis2018-07-04 - update travis config2018-07-04 - update tox.ini2018-07-04 - recreate migrations2018-07-04 - fix length and duration in chartjs2018-07-04 - update to change OSM data2018-07-04 - code cleanup2018-07-04 - add a AppConfig2018-07-04 - remove autotask2018-07-04 - FIXME:https://bitbucket.org/kbr/autotask/pull-requests/3/2018-07-04 - Addhttp://editorconfig.orgconfig file with isort config2018-07-04 - django-tools>=0.40.22018-07-03 - remove old migrations2018-07-03 - update squashed migrations2018-07-03 - squash migrations2018-07-03 - store gpx in TextField and update svg save2018-07-03 - update tests for django 2.02018-07-03 - update test references for gpxpy v1.3.2 see:2018-07-03 - WIP2018-07-02 - Add 'has GPX tracks' filter to Event2018-06-28 - change event model: "start_time" -> "start_date"2018-06-28 - Add "has event" filter2018-06-28 - remove double entry2018-06-28 - nicer length/duration in change list2018-06-28 - Add YAPF config file2018-06-28 - add change list filter 'has net duration'2018-06-28 - +!/.travis.yml2018-06-28 - $ ./manage.py fill_basedata2018-06-28 - split models.py2018-06-28 - Add 'net duration' field, for the officially measured time and use it for calculations if available.2018-06-28 - Don't generate SVG if it's already done in the past.2018-06-28 - Don't request address if start/finish address already set2018-06-28 - bugfix human_duration() DocTests2018-06-28 - change event number to positiv integer2018-06-28 - make event links optional2018-06-28 - bugfix "GPX info" table2018-06-28 - DATA_UPLOAD_MAX_MEMORY_SIZE = 50000002018-06-27 - Add "ideal distances"2018-06-27 - bugfix get weather2018-06-27 - Bugfix change view: remove obsolete code2018-06-27 - remove obsolete code2018-06-27 - speedup by deactivating some django debug toolbar panelsv0.4.02018-06-26 - update screenshots + version: v0.4.02018-06-26 - remove Streetmap image generated via geotiler2018-06-26 - enable bezier curves2018-06-26 - Nicer track map with kilometer points2018-06-26 - change Statistics links in filter section2018-06-26 - code style2018-06-26 - Add 'creator' to every track and use it as changelist filter2018-06-26 - NEW: Display GPX metadata2018-06-26 - Speedup by using a cache for gpxpy instances2018-06-26 - Add links to github/PyPi in admin footer2018-06-26 - NEW: "GPX Info"2018-06-26 - Bugfix upload GPX files: set user2018-06-26 - Skip weather if date is None2018-06-25 - combine track filters with statistic views2018-06-25 - display min/avg/max pace in distance statisticsv0.3.02018-06-23 - fixup! README2018-06-23 - README2018-06-23 - Update tests for change admin title2018-06-23 - better info on import with existing tracks2018-06-23 - +for-runners v0.3.0 2018-6-23 Distance Statistics.png2018-06-23 - fixup! handle if no weather data is available2018-06-23 - expand user path2018-06-23 - code style2018-06-23 - handle if no weather data is available2018-06-23 - add distance statistics2018-06-23 - Change django title/branding2018-06-23 - add weather information from metaweather.com2018-06-23 - description='Store your GPX tracks of your running (or other sports activity) in django.'v0.2.02018-06-21 - Update README.creole2018-06-21 - Squashed commit of the following:2018-06-17 - Add static files (Charts.JS + Leaflet)v0.1.12018-06-15 - release v0.1.12018-06-15 - update screnshots2018-06-15 - add tests for gpx2svg - TODO: Use correct WGS 84 calculations2018-06-15 - Don't use {{ forloop.counter }} for kilometers in leaflet map2018-06-15 - Bugfix short_address if town is == "state"2018-06-15 - +list_filter: tracked_by2018-06-15 - add tests for create GPX in admin2018-06-15 - bugfix if GPX extension doesn't exists2018-06-15 - Bugfix creating GPX entry in adminv0.1.02018-06-15 - move svg to collapse section2018-06-15 - cleanup popup2018-06-14 - typo2018-06-14 - Display every km on map2018-06-14 - Render interactive OpenStreetMap track map with Leaflet JS2018-06-14 - +== run tests2018-06-14 - setup selenium tests2018-06-13 - Don't check content type2018-06-13 - start/finish links to openstreetmap2018-06-12 - use a better filename for the map2018-06-12 - code cleanup2018-06-12 - nicer admin change list view2018-06-12 - sort length, duration & pace in admin2018-06-12 - Add DocTests2018-06-12 - print -> logging2018-06-12 - Display hours, too + DocTestsv0.0.42018-06-12 - Gpxity currently not used2018-06-12 - +== credits ==2018-06-12 - skip geotiler if SyntaxError while import, see also:2018-06-12 - Update README.creole2018-06-12 - Geotiler needs Python 3.6 or later2018-06-12 - Better Links to events2018-06-12 - TODO: Use UTC and handle time zone2018-06-12 - activate MAP_DOWNLOAD by default2018-06-12 - gpxpy #117 is implemented, but not release on PyPi, see:2018-06-12 - GPX error handling + tests2018-06-12 - run for_runners tests, too2018-06-12 - typov0.0.32018-06-12 - Use autotask to generate map in background2018-06-12 - create new figure for map2018-06-05 - +import GPX files2018-06-05 - +.gitignore2018-06-05 - +== try-out2018-06-05 - Use last TLS version2018-06-02 - min/average/max heart rate2018-06-02 - use gpxpy 'ns-namespace' branch to fix:https://github.com/tkrajina/gpxpy/issues/1172018-06-02 - redirect to /admin/for_runners/gpxmodel/v0.0.22018-05-31 - generate SVG from track2018-05-31 - v0.0.22018-05-30 - +git_sync.sh2018-05-30 - remove tests with django cms 3.42018-05-30 - code cleanup2018-05-30 - update requirements2018-05-30 - remove django-meta2018-05-30 - remove unused templates2018-05-30 - Update README.creolev0.0.12018-05-30 - add first code version2018-05-29 - Initial commitlinks| Homepage |http://github.com/jedie/django-for-runners|
| PyPi     |https://pypi.org/project/django-for-runners/|activity exporterIt's sometimes hard to find a working project for exporting activities.
So here tools that i use currently:Garmin-Connect-Exportfrom rsjrnyalternatives (OpenSource only)https://github.com/pytrainer/pytrainer(Desktop Program)https://github.com/GoldenCheetah/GoldenCheetah/(Desktop Program)Online tools:https://www.j-berkemeier.de/ShowGPX.html(de)creditsThe whole thing is based on many excellent projects. Especially the following:gpxpyGPX file parserLeaflet JSA JS library for interactive maps used to render the track onOpenStreetMapdygraphsopen source JavaScript charting libraryChart.jsHTML5 ChartsgeopyGet geo location names of the GPX track start/end pointmatplotlibplotting 2D graphicsautotaskschedule background jobssvgwriteGenerating SVG filedonationpaypal.me/JensDiemerFlattr This!SendBitcoinsto1823RZ5Md1Q2X5aSXRC5LRPcYdveCiVX6F