Contributing
Extending the Project
New service
- Implement the service logic in the backend (
server/
). - Update the service list in the API and documentation.
New action or reaction
- Add the action/reaction logic to the relevant service in the backend.
- Update the API documentation and about.json response.
New client feature
- Implement the feature in the web (
web/
) or mobile (mobile/
) client. - Ensure it communicates with the backend via REST API.
Development Workflow
Purpose
In order to maintain a clean and reliable production branch, all changes to main
must be properly staged, reviewed and tested.
This section defines how branches, commits and pull requests (PRs) must be handled.
Branching Strategy
main
: Production branch. Updated weekly with the latest stable version of the apps.dev
: Integration branch. All features and fixes must be merged here before going tomain
.- Feature/Bugfix branches: Branches off
dev
for new work. Use clear names, e.g.,add login-ui
,fix payment-crash
. - Hotfix branches: Only for urgent fixes that must go directly to
main
. Must follow the hotfix procedure below.
Commits norm
Every commits must follow these rules:
- With one or two gitmoji, the 2nd specifying an action on the first one.
- A short description of the change starting by an action verb at the imperative tense, try to stay under 80 characters.
- Optional, if you want to provide more informations in your commit, do it in the commit's message description.
📝 Update the contributing guidelines to add the commit norm.
📝🏗️ Setup production ready documentation architecture.
With 3 folders: getting started, guides & API references.
Pull Request
main
dev
is the only source branch allowed for PRs targeting main
PR Title & Description
- Use a descriptive title explaining the change.
- Include a short summary, Jira stories or tasks, List of changes/features/fixes and how you tested the feature in the description.
Use the pull request template when creating a new one, it will set the skeleton for the description + tasks you have to do.
Review Requirements
At least 2 reviewers must be selected, 4 if the base branch is main
:
- The person in charge of this part of the project.
- The Scrum Master which will check for potentially required continuous integration updates & tests to add/edit.
If new commits are pushed, all reviews will be stalled thus requiring all reviewers to do it again.
Refer to the team section to know who is in charge of which part in the project.
Check Tests
- All status checks (CI, linters, unit tests, etc) must pass before being able to merge.
- If new commits are pushed, all status checks will be relaunched.
Merging commits messages
The only method authorized is Squash & Merge.
The commit message must start with an appropriated gitmoji and resume the pull request content (you can use the title).
Changing PR Base Branch
Avoid changing the base branch off a PR after creation.
If a PR was mistakenly created targeting main
from another branch than dev
, create an empty commit so the blocking CI job is retriggered and cleared.
GitHub actually has a way to rerun workflows on PR base change but it does not dismiss old failed workflow runs.
Hotfix Procedure
Hotfixes must be used only in case of an emergency production issue.
Because hotfixes bypass some verification, they may require rollback or temporary disabling of affected functionality.
Branch off main
as hotfix/description
.
After merging back into main
, immediately merge the hotfix into dev
to keep branches in sync.
You must request at least 2 other people's reviews in order to merge it, ideally the same persons as in the standard procedure.
If these persons are not able to do it, you might request reviews from any two other members of the team.
Monitoring & Compliance
-
Review open PRs where you are required as reviewer regularly.
-
Remember that every new commits on a PR automatically re-request a review from all reviewers.
If you find a violation of any of the rules above, mark your review as Request Change with the broken rule in the description. This will block the PR from being merged, remember to check back more often in order to make your review again once it is fixed.
Branch Protection Rules
main
branch (production)
- Require pull requests before merging.
- Source of the PR must be
dev
. - Require all status checks to pass.
- Require approval from at least 4 core team members.
dev
branch
- Require pull requests before merging.
- Require all status checks to pass.
- Require at least two approval from team members, see how to choose who.
The team
The core team of the AREA project is actually composed of 5 peoples:
- Arthuryan Loheac: Project director & web frontend dev.
- Jean Bizeul: SCRUM master & DevOps.
- Nathan Bezard: Mobile dev.
- Mathys Fillon: Backend dev.
- Léopold Pintard: Backend dev.
Questions?
Open an issue on the GitHub project page or contact the maintainers via contact@area.azerty.