Skip to content

Latest commit

 

History

History
177 lines (113 loc) · 7.15 KB

CONTRIBUTING.md

File metadata and controls

177 lines (113 loc) · 7.15 KB

Contributing to ArTiver

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

Code of Conduct

The code of conduct is described in CODE_OF_CONDUCT.md


Development Process

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!


Quickstart Local Frontend Development

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!


Quickstart Local Backend Development

  • 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


Pull Requests

  1. Fork the repo and create your own branch, name it according to what it is going to contain.
  2. 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!
  3. 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.



Reporting an issue

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.


Discussing the current state of the code

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!


Submitting a fix

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.


Translations

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!"
}

Proposing a new features

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!


Becoming a maintainer

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.

Version issues

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