Contributing

First off, thanks for taking the time to contribute! ❤️

Our goal is to build an awesome and flexible fitness and nutrition manager, along with a comprehensive list of exercises and ingredients, all released under a free license.

All types of contributions are encouraged. And if you like the project but just don’t have time to contribute, that’s fine. There are other easy ways to support the project and show your appreciation, which we would also be very happy about:

  • Talk about it on social media, at local meetups, or tell your friends/gym bros

  • Consider supporting us with a donation

  • Star the project on GitHub

Code

Obviously, you can also contribute code. Before starting working on a new feature, please open an issue to discuss it with us. This is important to avoid duplicating work and to make sure that your contribution is in line with the project’s goals. A good starting point could be one of the issues marked with “good first issue” or the roadmap for the next release:

This application has three main repositories, each with its own purpose (and quirks). The Development section covers how to set up each:

In any case you should have a basic grasp of git and GitHub, as well as how to create pull requests. If you are not familiar with these concepts, please consult one of the many online resources available, such as

Make sure to always use a feature branch, even if the change is minor.

Once you have the code ready:

  • make sure to write good commit messages. A good commit message should explain what the change is about and why it was made.

  • make sure the tests pass before opening the PR. CI will catch failures, but it’s faster to know locally, see the test command on the dev page for the component you touched (backend, frontend, mobile).

  • if you write new code, write new tests. These don’t need to test absolutely everything, but they should cover the most important parts of the code. If you are not sure what or how to test, just ask us.

  • run the formatter for the language you’re touching. For Python that’s ruff format && isort . with a line length of 100 characters (see Backend). Frontend (React) and mobile (Flutter) have their own formatters configured in their respective repos.

  • think about UI/UX. If you are adding a new feature, make sure it is easy to use and understand. Nobody here is a designer, but we try our best!

  • finally open a new PR. You can expect a response from a maintainer within a week, if you haven’t heard anything by then, ping the thread.

  • don’t mix different features in the same pull request. If you have multiple changes, just create a separate pull request for each one.

Also, these are mostly guidelines, not rules. As everywhere in life, use your best judgment, and feel free to propose changes to this document in a pull request.

Is this the first time you contribute to an open source project? No problem! Feel free to ping us if you need help setting everything up, it can be very overwhelming at first. We are happy to help you get started.

What about AI?

We are open to contributions that use AI, but we ask you to read and understand the code that was produced. It’s very tempting to let the agent do its thing and just accept everything, resist this! Specially when attempting to do bigger features, it’s important to split the work into smaller chunks.

Exercises

You can contribute new exercises, images or videos, and edit or translate the existing ones. These contributions are just as important as code contributions, as they help improve the overall quality and usability of the application. Please use the search before to make sure your exercise doesn’t already exist.

Note that your account must be at least 3 weeks old and have a verified email.

Translations

You can help translate the application online using Weblate and help make the application more accessible. To start just visit

A list of everyone who has contributed translations so far is on the Translators page.

Support the Project

This project is free and open-source, but running it isn’t! Your support helps keep the server running, funds new development, and improves the overall experience for everyone. If you enjoy using this app, please consider making a small contribution. Every bit helps!

Thank you for supporting open-source fitness & nutrition tools! 🙌