Skip to content

Contributing conventions โ€‹

To maintain a consistent and organized codebase, we have established the following conventions for contributing to our project. Please adhere to these guidelines when making contributions.

Commit messages โ€‹

We use the GitMoji convention for commit messages. This helps us maintain clarity and consistency in our commit history.

A commit message should follow the format:

<intention> [scope?][:?] <message>
  • <intention>: The intention you want to express with the commit, using an emoji from the GitMoji list. Either in the :shortcode: or unicode format.

  • [scope?][:?]: An optional string that adds contextual information for the scope of the change. If present, it should be followed by a colon.

  • <message>: A brief explanation of the change.

Examples for possible commit messages:

  • ๐Ÿ› Fix error while user image is loading
  • โœจ Add editing todos
  • ๐Ÿ“ Update README with new installation instructions

Branch naming โ€‹

When creating branches for your contributions, please use one of the following prefixes to indicate the type of work being done. This helps in categorizing and understanding the purpose of each branch at a glance.

PrefixGitmojiDescriptionExampleLabels
feature/โœจImplementing a new feature or major functionalityfeature/user-authenticationโœจ Enhancement
fix/๐Ÿ›Fixing a bug, issue, or regressionfix/crash-on-startup๐Ÿ› Bug, ๐Ÿš‘๏ธ Hotfix
docs/๐Ÿ“Documentation updates or improvementsdocs/api-usage-guide๐Ÿ“ Documentation
test/๐ŸงชAdding or updating tests (unit, integration, etc.)test/user-service-tests๐Ÿงช Testing
refactor/โ™ป๏ธCode refactoring without changing existing behaviorrefactor/database-layerโ™ป๏ธ Refactor
ui/๐Ÿ’„User interface or experience improvementsui/button-alignment๐Ÿ’„ UI/UX
ci/๐Ÿ‘ทCI/CD or automation pipeline changesci/update-pipeline๐Ÿ‘ท CI/CD
config/๐Ÿ”งConfiguration file changes or updatesconfig/update-env-variables๐Ÿ”ง Configuration
security/๐Ÿ”’๏ธFixing or improving security-related functionalitysecurity/fix-token-leak๐Ÿ”’๏ธ Security
chore/๐Ÿ› ๏ธGeneral maintenance, dependency updates, tooling, etc.chore/improve-logging๐Ÿ› ๏ธ Maintenance

The compliance of these branch prefixes is enforced by a GitHub Actions workflow that checks the branch name against the defined patterns defined in branches.yml in the .github repository. See Enforce conventions for more details.

Labels โ€‹

When creating pull requests and issues, please use the appropriate labels to categorize your changes. This helps maintainers quickly understand the nature of your contribution. The labels should match the prefixes used in branch naming.

LabelDescriptionColorBranch Prefix
โœจ EnhancementNew feature or request#eeff00feature/
๐Ÿ› BugSomething isn't working as intended#ff4545fix/
โš ๏ธ MistakeMistake that doesn't influence usability#ff4545fix/
๐Ÿš‘๏ธ HotfixCritical or emergency fix#b60205fix/
๐Ÿ”’๏ธ SecurityAddress security vulnerabilities#b60205security/
๐Ÿ“Œ DependenciesExternal library or package updates#4da0ffchore/
๐Ÿ“ DocumentationImprovements or additions to documentation#005999docs/
โ™ป๏ธ RefactorCode improvements without changing function#009600refactor/
๐Ÿงช TestingAdd or improve tests#00ff15test/
๐Ÿ’„ UI/UXChanges related to the user interface and experience#ff2590ui/
๐Ÿ‘ท CI/CDChanges related to continuous integration/deployment#00fff0ci/
๐Ÿ”ง ConfigurationChanges to configuration files or settings#868686config/
๐Ÿ› ๏ธ MaintenanceGeneral maintenance and updates#545454chore/
โš—๏ธ Request BuildRequests a build of the project#00ff9d-
๐Ÿš€ Request DeployRequests a deployment of the project#00ff9d-
๐Ÿ’ฌ DiscussionOpen discussion or brainstorming#6f22ff-
โ“ QuestionFurther information is requested#a16eff-
โŒ WontfixThis will not be worked on#ffffff-
๐Ÿ”„ DuplicateThis issue or pull request already exists#bbbbbb-
๐Ÿšง Work in ProgressThis is not yet complete#ffa500-

Note: The labels without a branch prefix are used for issues and pull requests that do not correspond to a specific branch type, such as discussions or questions.

To make sure all these labels are always up to date in each repository, we define the labels globally in labels.yml in the .github repository and use a GitHub Actions workflow to synchronize them automatically to all the individual repositories. See Sync labels for more details.