> For the complete documentation index, see [llms.txt](https://bigdeckit.gitbook.io/homeworkouthero/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bigdeckit.gitbook.io/homeworkouthero/for-contributors.md).

# For Contributors

How to help: reporting, translating, documenting and coding.

Thanks for wanting to help with HomeWorkoutHero! This part of the docs is for people who want to run the app from source, change it, or help in other ways. If you just want to use the app, see [Getting Started](/homeworkouthero/user-guide/getting-started.md).

## Ways to help

* **Report a bug** or **suggest a feature:** [open an issue](https://github.com/Klodizaur/MyFitnessPlan/issues). For a bug, say what you did, what you expected and what happened, plus your OS and app version (Settings → About), with a screenshot if you can.
* **Translate:** the app is in English and Polish, and more languages are welcome. See [Translations](/homeworkouthero/for-contributors/translations.md).
* **Improve the docs:** these docs and the README.
* **Write code:** read on.

## License

HomeWorkoutHero is under the [HomeWorkoutHero Community License](https://github.com/Klodizaur/MyFitnessPlan/blob/main/LICENSE). You may use, study, modify and share it for personal, educational and community purposes, and contribute improvements back, but not sell it, offer it as a paid service, or build a commercial offering on it without written permission. By contributing, you agree your contribution is shared under the same license. For commercial licensing, contact <hello@bigdeckit.com>.

## Making a change

1. **Talk first about bigger changes.** For anything more than a small fix, open an issue (or comment on an existing one) before you start, so we agree on the approach and nobody's work goes to waste.
2. **Fork** the repository and create a branch from `main`, named for what it does, e.g. `feature/player-volume` or `fix/import-case`.
3. **Set up** your machine: [Development Setup](/homeworkouthero/for-contributors/development-setup.md).
4. **Make the change**, following the guidelines below.
5. **Open a pull request** into `main`. Explain *what* changed and *why*, how you tested it, and include screenshots or a short recording for anything visible.

Keep a pull request to one thing. Several small PRs are easier to review than one large one.

## Guidelines

* **Match the code around you:** TypeScript, the same naming and structure. Comments explain *why*, not *what*.
* **Every text the user sees** goes through the translation files, in **both** `en.json` and `pl.json` (see [Translations](/homeworkouthero/for-contributors/translations.md)). No hard-coded strings in components.
* **Check it the way users will see it:**
  * a light and a dark theme (e.g. Pastel Orange and Midnight),
  * a phone-sized window and a tablet width,
  * with one profile and with several.
* **Never lose user data.** Database changes must be additive and safe on existing installs; see how `server/src/db.ts` adds columns and tables.
* **Add a line to `CHANGELOG.md`**, in the style of the existing entries: plain language, written for users.
* **Tests:** the web app has no automated test suite yet, so describe what you checked by hand. The TV app has unit tests (`./gradlew testDebugUnitTest` in `tv/`).

## Where to go next

* [Development Setup](/homeworkouthero/for-contributors/development-setup.md): run it from source
* [Project Structure and Architecture](/homeworkouthero/for-contributors/project-structure-and-architecture.md): find your way around the code
* [Building the Desktop App](/homeworkouthero/for-contributors/building-the-desktop-app.md) · [Building the TV App](/homeworkouthero/for-contributors/building-the-tv-app.md)
* [Translations](/homeworkouthero/for-contributors/translations.md) · [Releasing](/homeworkouthero/for-contributors/releasing.md)
