We really appreciate your help to develop this project! Every kind of help is welcome and we want to make contributing as easy as it is possible.
Check Table of Contents below to see how to make a particular impact on a project. All of things pointed out below are descriped in the same order on the bottom of this file.
- Reporting an issue
- Discussing the current state of the code
- Submitting a fix
- Translations
- Proposing new features
- Becoming a maintainer
The code of conduct is described in CODE_OF_CONDUCT.md
All changes happen through pull requests . Every pull request is welcome and we invite you to submit your PR directly here. All of pull requests are going to be reviewed and if it goes sucessfully, these can be merged into the project.
Before implementing your own thing of choice, check out our TodoList to see if there is something that suits you!
Do this if you only want to do Flutter related stuff.
-
Navigate to the
/app
-
Run
flutter pub get
-
Run
flutter run
-
Install Docker and docker-compose.
With docker-compose properly configured, you just have to run docker compose -f docker-compose-dev.yaml up
in the root directory of this project.
Flutter docker image is incompatible with Mac's with M1. To run docker configuration that excludes it, run docker compose -f docker-compose-dev-m1.yaml up
It starts also API and dart docs, respectively on ports 8080 and 8081.
Now you are ready to start coding!
Please, if you add new feature - follow the DDD - Domain Driven Design. If your change adds/changes the functionality, please write a tests. In case you don't feel comfortable enough with that, consider asking for help on our Discord or point it out in your Pull Request.
If you are not sure what is the best way to implement particular thing, consult @wzslr321 or ask on our Discord. Please, never feel shy to ask for help!
- Install Docker and docker-compose.
With docker-compose properly configured, you just have to run docker compose -f docker-compose-dev.yaml up
in the root directory of this project.
It starts also API and godocs, respectively on ports 8080 and 8090.
Before working on API, make sure to checkout best REST API practises, here
- Fork the repo and create your own branch, name it according to what it is going to contain.
- If you have added the code that should be tested, add some test examples or point it out in PR that those are needed. Also consider asking for help on Discord, to have a satisfaction of creating a whole PR by yourself!
- Ensure to describe your pull request.
Pull requests trigger checks, that analyze the code.
Back-end checks:
- Run golangci-lint
- go build -v ./...
- go test -v ./...
Front-end checks:
- flutter format --set-exit-if-changed lib
- flutter analyze lib
- flutter test --no-pub --coverage --test-randomize-ordering-seed random
Every pull request have to successfully pass all checks before getting merged.
You can report the issure directly here.
Title of your issue should contain: issue(<what is issue related to, e.g. front-end>): Descriptive phrase about the issue
Issue title example: issue(state-management): Network connection stream doesn't yield initial value to the state.
Description should contain as much information as it is possible. Please write also steps to reproduce the issue, so others can easily see the problem locally on their machines.
Every code improvement is extremely welcome and we are always happy to discuss about better solutions. If you think that some code can be written in a better way, let's talk about it on our #current-code-discussions channel on Discord. In case you just are curious about any part of code, don't know why is it done this way, please also ask about it there!
Before submitting a fix, please make sure it has its own issue. If you fixed an issue created by someone else, just simply use its #id in your pull request title. Otherwise, before making a pull request, report an issue and describe it there.
Example of fix's PR title: fix(#63): implement a method to yield initial value to the state.
You can help to translate the project, even if you don't have any programming knowledge.
All texts used in this project are in .arb
files located in /app/lib/l10n/arb
.
To fill a translation gaps in already existing translation file, just edit it.
For example: If you want to add spanish translation, edit the app_es.arb
file.
If you want to create a translation in new language, simply create a new file in arb
directory,
with following name: app_<country_shortcut>.arb
.
English is a primary language of this project, thus all texts that need translation, are
located in app_en.arb
file.
Translation example:
/// app_en.arb
{
"helloWorld": "Hello World!",
"@helloWorld": {
"description": "The conventional newborn programmer greeting"
}
}
/// app_pl.arb
{
"helloWorld": "Witaj świecie!"
}
You can propose a new feature on our discord channel #features-proposals or create an issue, containing (feature):
on the beggining of
its title. Make sure to be as descriptive as you can!
To become a maintainer, you just have to be an active repository contributor or helper. We do appreciate every kind of help, so if you don't have enough time to write a code, it would be also awesome if you can help other contributors understand particular code or concepts. Code reviews are also extremely important part, thus code reviewers are always welcome.
If you encounter any version issues while configuring a project on your local machine, check out VERSIONS.md , to check if yours dependencies versions are up to date.
In case you spot that project's version dependency isn't updated and new version includes breaking changes, please submit it as an issue here