Giter Site home page Giter Site logo

wger-project / wger Goto Github PK

View Code? Open in Web Editor NEW
2.8K 72.0 536.0 55.65 MB

Self hosted FLOSS fitness/workout, nutrition and weight tracker

Home Page: https://wger.de

License: GNU Affero General Public License v3.0

Python 84.82% HTML 12.63% CSS 0.55% Shell 0.18% JavaScript 1.28% Smarty 0.20% Dockerfile 0.30% SCSS 0.05%
python django fitness gym self-hosted workout hacktoberfest

wger's Introduction

wger

wger logo

wger (ˈvɛɡɐ) Workout Manager is a free, open source web application that helps you manage your personal workouts, weight and diet plans and can also be used as a simple gym management utility. It offers a REST API as well, for easy integration with other projects and tools.

For a live system, refer to the project's site: https://wger.de/

Screenshot

Mobile app

Get it on Google Play Get it on F-Droid

Installation

These are the basic steps to install and run the application locally on a Linux system. There are more detailed instructions, other deployment options as well as an administration guide available at https://wger.readthedocs.io or in the docs repo.

Please consult the commands' help for further information and available parameters.

Production

If you want to host your own instance, take a look at the provided docker compose file. This config will persist your database and uploaded images:

https://github.com/wger-project/docker

Demo

If you just want to try it out:

    docker run -ti --name wger.demo --publish 8000:80 wger/demo

Then just open http://localhost:8000 and log in as admin, password adminadmin

Please note that this image will overwrite your data when you pull a new version, it is only intended as an easy to setup demo

Development version

We provide a docker file that sets everything up for development (however this won't persist any data)

docker run -ti  \
    -v /path/to/your/wger/checkout:/home/wger/src \
    --name wger.dev \
    --publish 8000:8000 \ 
    wger/server

Then just open http://localhost:8000 and log in as: admin, password adminadmin

For more info, check the README in wger/extras/developemt.

Alternatively you can use the production compose file for development as well, just bind your local source code into the web container (see the docker-compose.yml file for details). You will also probably want to set `DJANGO_DEBUG to false

Local installation

If you prefer a local installation, consult the development documentation

Contact

Feel free to contact us if you found this useful or if there was something that didn't behave as you expected. We can't fix what we don't know about, so please report liberally. If you're not sure if something is a bug or not, feel free to file a bug anyway.

Sources

All the code and the content is available on github:

https://github.com/wger-project/wger

Translation

Translate the app to your language on Weblate.

translation status

License

The application is licensed under the Affero GNU General Public License 3 or later (AGPL 3+).

The initial exercise and ingredient data is licensed additionally under one of the Creative Commons licenses, see the individual exercises for more details.

The documentation is released under a CC-BY-SA: either version 4 of the License, or (at your option) any later version.

Some images were taken from Wikipedia, see the SOURCES file in their respective folders for more details.

wger's People

Contributors

aronwk-aaron avatar bbkz avatar berniekoen avatar comradekingu avatar dependabot[bot] avatar developermal avatar emmaamuth avatar gbuendia avatar gmmoraes avatar gr8ayu avatar harlenesamra avatar imthetom avatar jamessimas avatar jayanthbontha avatar lydiaxing avatar marchiore avatar milotype avatar mrpointcut95 avatar nikithamurikinati avatar nopinter avatar oconnelc avatar petervanderdoes avatar rlaszlo avatar rohankaran avatar rolandgeider avatar ryowright avatar sandilsranasinghe avatar speshak avatar usehalter avatar yuyu-aung avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wger's Issues

BMI calculator

Add a BMI calculator. The weight can be read from the weight app, the height can be saved in a new field in the user's profile. Render the result in this diagram or similar.

Queue ajax requests in add set form

When changing the number of sets in the add set form, the ajax requests to get the formsets are fired immediately. This means that the second might finish before the first, changing randomly the order of the formsets, and that's ugly.

Cant't add custom exercise

After sending a new custom exercise I get the following message:

Unhandled Exception

An unhandled exception was thrown by the application.

Gym mode

There should be a "gym mode" for the workouts. Possible workflow:

  • Start gym mode by pressing "start workout" or such
  • Countdown warm-up
  • Exercise 1, set 1
  • Pause
  • Exercise 1, set 2
  • Pause
  • ...
  • Exercise 2, set 1
  • Pause
  • ...
  • Workout done!

Features:

  • Implement this mobile first, on a desktop this doesn't make as much sense. Everything is simple and big: buttons, text, etc.
  • All countdowns are skippable and editable (+/- time)
  • After the exercise (during pause?) it's possible to enter a weight log
  • It should be always clear what to do and what comes next, with big obvious buttons ("skip" or "next")
  • Weight logs are optional
  • Exercises can be skipped or repeated
  • It's possible to do/log more sets than saved in the workout

Optional:

  • display some other info (% completed, time left, )
  • personal records
  • Plates calculator (probably a separate issue, if implemented use code from e.g. https://github.com/borisjoffe/squats)

Cleanup unneeded forms

Many forms are only defined so the corresponding exclude can be set. This is better done with a editable = False in the model.

Demo data for everything

The demo data should create sample data entries for everything, not only workouts and weights.

  • Nutrition plans
  • Schedules

Test entries with non-ASCII text

Test the application entering everywhere non-ascii text, there are sill many places with "{0}".format(foobar) instead of u"{0}"...

Migrations with postgreSQL

The migrations 0002 in exercises and 0007 in ingredients fail in postgres. The reason for this is that in PostgreSQL you must not update the table and then alter the table schema in one transaction.

Either

db.start_transaction()
if not db.dry_run:
    orm.Foo.objects.all().update(bar=baz)
db.commit_transaction()

or do two migrations, one for the table, one for data.

MultipleObjectsReturned in get_current_workout

Traceback (most recent call last):

  File "/home/rge/www/python-django/lib/python2.7/site-packages/django/core/handlers/base.py", line 115, in get_response
    response = callback(request, *callback_args, **callback_kwargs)

  File "/home/rge/www/python-django/lib/python2.7/site-packages/django/contrib/auth/decorators.py", line 25, in _wrapped_view
    return view_func(request, *args, **kwargs)

  File "/home/rge/www/wger-patched/wger/manager/views/misc.py", line 93, in dashboard
    (current_workout, schedule) = Schedule.objects.get_current_workout(request.user)

  File "/home/rge/www/wger-patched/wger/manager/models.py", line 117, in get_current_workout
    schedule = Schedule.objects.filter(user=user).get(is_active=True)

  File "/home/rge/www/python-django/lib/python2.7/site-packages/django/db/models/query.py", line 407, in get
    (self.model._meta.object_name, num))

MultipleObjectsReturned: get() returned more than one Schedule -- it returned 2!

Move JS to external file

There is currently a great amount of JS directly in the HTML pages, this becomes a bigger maintenance problem with the mobile version, that basically duplicates the templates. Clean this up and move it to the central JS file.

Adding exercise to workout from detail view

It should be possible to add an exercise to a workout from the exercise overview or its detail page. A simple pop-up where one can select the workout, day, etc. should be enough.

Calories wizard for nutritional plan

The nutritional plan should have some kind of "wizard" to calculate the basic caloric intake needed by allowing the user to fill in some fields (should be saved to the profile). This makes it much easier to adjust the plan (e.g. +300 kcal over maintenance).

  • age
  • gender
  • type of work
  • other activities
  • hours of sleep

Use manager to filter by language

Use a manager to filter exercises and ingredients by languages. This is more elegant and will save us pain e.g. if/when users can select the languages for items from their preferences.

More granular control of translated exercises and ingredients

There should be a setting to allow a more granular control of translated exercises and settings. This is specially useful (even necessary) for languages that have not translated all exercises and ingredients: here it should be possible to select which exercises and ingredients are shown. E.g. for language X, show also items in English and language Y.

This should be language wide, but possibly also a user setting.

Exercise descriptions in English

The exercises in English should also get descriptions, at least very roughtly. They should also get the primary and secundary muscle groups.

Complete support for equipment

You can add equipment when you create a new exercise, but this information is never used again.

The required equipment for an exercise should be:

  • displayed on the website
  • be accessible by REST-API

Email remainders

Add email remainders, e.g. "your workout/schedule will finish in X weeks". This should be configurable by the user.

Make the workout aware of planed weight

It should be possible to tell the workout about the planed weights for the different exercises. It should:

  • keep track of increments by which the used weight should rise.
  • know how and when to apply the increments (weight, date interval)
  • be flexible enough to cope with a failure in one of the sets or a skipped workout

Weight units in German

The German ingredients list need weight units and should get expanded as much as possible.

Add a calendar overview

There should be a calendar overview where the workout logs are shown in a calendar view. It should also have additional links to directly add logs or view the logs for a day.

Improve message for demo user

Now that there are no anonymous users, the banner for demo users should be shown everywhere, otherwise it's confusing why it appears on some pages and not in others. Also it should have a button to create demo data (doing it on the middleware is not performant)

Easier implementation of excersises

Would be great to have the possibility to put easier excersises by myself in the system.
I do a lot of my training with a weight west, bodyweight and TRX Band.
Simple bodyweight exercises like push-ups and arnold dips are not in this software.
Bear in mind that there are a lot of versions for squats etc.
Would be nice to have a small file that we could update over git for all and of course for ourself as an option in the excercise dialog.

Thanks in advance

Update name of application

In the GPL headers "Workout Manager" should be replaced with "wger Workout Manager" and the logger workout_manager.custom, renamed to wger.custom

Traceback when exporting weight to CSV

This probably happens because the translations for 'weight' and 'date' are not ASCII

Traceback (most recent call last):

  File "/home/rge/www/python-django/lib/python2.7/site-packages/django/core/handlers/base.py", line 115, in get_response
    response = callback(request, *callback_args, **callback_kwargs)

  File "/home/rge/www/python-django/lib/python2.7/site-packages/django/contrib/auth/decorators.py", line 25, in _wrapped_view
    return view_func(request, *args, **kwargs)

  File "/home/rge/www/wger-patched/wger/weight/views.py", line 117, in export_csv
    writer.writerow([_('Weight'), _('Date')])

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.