General
All the rules should be enforced and overlooked horizontally by the entire team. If a new person
joins the team, then he/she should be introduced to the processes. The person responsible for
the process should overlook compliance with the rules.
![]()
Company GitHub
Each commit must be reviewed by the person responsible for the repository;
Each commit must have a good level of documentation;
![]()
Rules:
Repository Convention:
● The repository must be created by the company Software Manager
● The repository name should clearly show what this project is for. Suggested repository
name:
Example: project_name-backend, project_name-frontend, project_name-
android, project_name-ios,project_name-frontend.
● Topics - the name of technology
- Project_name - must be named according to the contract signed
● Each repository should have a .gitignore file that contains all files which
can't be committed to the remote repository. This is obligatory.
- All publish config files that contain settings and credentials to the server
- All config files (appsettings.json, webconfig.json, etc.) that contain the DB
credentials, email providers, SMS providers, AWS keys, secret keys general, etc.
(all possible credentials to all possible providers)
- Or secret manager on the server side should be included in the project
● All applications should be containerizing by DevOps only
Pushing project:
● The project has to be shared from the company 's account only.
● Before sharing the project, a person that is willing to share has to communicate with the
user that is responsible for this process. (Only for TechLead and roles that have
permissions to invite other people to the project. If you don’t have permission and need
to add another member to the repository, you have to contact your TechLead or Software
Manager)
Commit Rules:
● A commit should be a wrapper for related changes. For example, fixing two different
bugs should produce two separate commits.
● You should only commit code when a particular task/bug is completed. This doesn‘t
mean you have to complete a whole, large feature before committing. Features should be
split into logical chunks and respective tasks/subtasks.
● In all commits must be included the “Jira key” (unique JIRA identifier of the task/bug -
i.e.RAR-1, FACT-133, etc.) at the beginning of the comment
● Commit immediately when the task is completed - don’t’ wait till the end of the day.
The number of commits per day should be equal to the number of tasks/bugs you have
finished that day.
● Resist the temptation to commit something that you «think» is completed. Test it
thoroughly to make sure it really is completed and has no side effects.
● Begin your message with a short summary of your changes (up to 50 characters as a
guideline). Separate it from the following body by including a blank line. The body of your
message should consist of detailed answers to the following questions: – What provoked the change? How does it differ from the previous implementation?
Example:
Add reports functionality
Added functionality to fetch data from the device and build sensor readings reports
● Use the imperative, present tense («change», not «changed» or «changes») to be
consistent with generated messages from commands like git merge.
Branching Rules:
●
![]()
There are two primary branches:
Main and
Develop.
![]()
Also, there are usually
Feature branches that contain work on the current feature. And Staging branches that contain all
the features for release.
- The main branch always reflects the most current production-ready state of the software;
- Develop branch reflects the latest development for the next release;
- Feature branches are created from Develop branch and merge back
into Develop branch, when the feature is ready;
-
![]()
Staging branches are created when you decide which new features will
be included in the release to prod. At that point in the Develop branch, you start a
Staging branch. If you find some bugs in the Staging branch, it’s okay to fix these
issues right in the Staging branch. No need to create another branch;
![]()
When the Staging is ready - you merge it to Master and tag it with version
number(example - v1.2). All the work you merged into Develop, before
the staging branch is available in production as a part of the newest release.
![]()
You
can safely merge any bug fixes from the Staging branch back to Develop, and
then delete the Staging branch.
README:
● All the repositories must include a readme file (README.md)
● The header title must include project name and descriptions - i.e Project_name - back-
end
● Make project description short and closer to the point - Example: <project_name> is a
<utility/tool/feature> that allows <insert_target_audience> to do <action/task_it_does>
● Make your prerequisites clear;
the prerequisites consist of 3 categories:
- Operating system (if platform-specific)
- Framework infrastructure
- Knowledge (if project usage requires any specific knowledge for the user)
● Include a description on how to install with commands (if there is a need for it);
● Provide pre-build/build/after-build commands and ports that are open;
● Describe environment variables that are required;
● List system-wide packages that are required (ImageMagick, cURL, etc);
● Demonstrate usage with examples or descriptions of project features usage;
● Contributing - write a clear guideline on how to contribute to the project (if there is a need
for that);
● Contributors - company account. (if there is a need for that);
● License
● If there are any additional or specific pieces (like changelog, versions, building, etc.) that
needs to be included, please contact TechLead or ProjectManager.