Repository Management
When starting a new project, a new repository must be created on the version control system service. To ensure all the projects are set up following best practices, the below guidelines must be applied.
Naming
-
Suffix the repository name with the platform name. The latter refers to the core tech stack that the application is built with.
project-name project-name-frontend project-name-backend project-name-js project-name-mobile project-name-cross-platform
project-name-web project-name-ios project-name-android project-name-flutter
An exception exists for API applications. While technically, these projects are also on the Web platform, a separate client application is often created at the same time, hence the need to differentiate both applications:
project-name-web-backend project-name-web
project-name-web project-name-api
-
Prefers to store Infrastructure as Code (IaC), such as Terraform code, in a separate repository named
project-name-infrastructure
.
Branches
-
The primary branches
develop
andmain
must exist at all times. -
The default branch must be set to
develop
. Every pull request can thus havedevelop
as the destination branch by default, which is the desired outcome in 99.9% of the cases. -
Branch protection rules for both branches must be implemented to:
- Enforce a pull request workflow to merge code to
develop
andmain
. - Avoid developers pushing commits directly to
develop
andmain
. - Avoid the deletion of
develop
andmain
by mistake.
- Enforce a pull request workflow to merge code to
Access Management
-
Ensure the visibility of the code repository is set to private for clients’ projects as per the version control services conventions.
-
Access must be managed using user groups/teams. Never provide access to a single individual. In other words, an individual must be part of a group and access is provided to the group. There must be at least two user groups/teams:
- Project Name - General: these users have only
write
access. Typically, this group consists of the developers. - Project Name - Admin: these users have only
admin
access. Typically, this group consists of the Engineering Lead, Team Lead, and Product Manager.
- Project Name - General: these users have only