Brezel Style Guide
Naming Conventions
Defining Modules
- File names: Use
snake_case
for file names. Example:incoming_invoices.bake.json
- Identifiers: Use
snake_case
for identifiers. Example:incoming_invoices
- Fields: Use
snake_case
for fields. Example:invoice_number
- Choice values Use
snake_case
and lower case for values of field typechoice
. Example:[ "draft", "sent", "paid" ]
- Choice values Use
Branches
- Branch names: Use
kebab-case
for branch names. Example:feat/add-new-feature
- Branch prefixes: Use the following prefixes for branch names:
feat
: For developing a new featurefix
: For fixing a bug
Commit messages
As most Brezel projects utilise the (semantic-release-bot)[https://semantic-release.gitbook.io/semantic-release], it is important to follow the commit message format for automated release. Even if a project does not utilise the bot, the format should still be followed at all times to ensure meaningful commits.
For standardization and automation purposes, we follow the Conventional Commits specification for commit messages which in itself is based on the (Angular convention)[https://github.com/angular/angular/blob/main/CONTRIBUTING.md#-commit-message-format].
If you want to get further insights on what commit message type will trigger a release and their meanings for versioning, you can check the (semantic-release-bot docs)[https://semantic-release.gitbook.io/semantic-release#commit-message-format] on that.
Example
Commit Message Format
-
Prefixes: Use the following prefixes for commit messages:
feat
: A new featurefix
: A bug fixdocs
: Documentation only changesstyle
: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)refactor
: A code change that neither fixes a bug nor adds a featureperf
: A code change that improves performancetest
: Adding missing tests or correcting existing testschore
: Changes to the build process or auxiliary tools and libraries such as documentation generation
-
Scope: The scope could be anything specifying the place of the commit change. For example if it’s system-specific, it could be scoped to a module or functionality group like
invoices
,recipes
etc. If you are contributing to the core, it could berecipes
,permissions
, etc.
Code Style
Most projects contain either a .editorconfig
or .eslintrc
file to enforce code style.
Make sure your IDE respects those and warns you of violations.
If you are contributing to a project that does not have one, please follow the guidelines below.
Not respecting the guidelines may make the CI fail and block your code from reaching production.
Notable guidelines are:
- Use
camelCase
for variables and functions - Single quotes for strings in PHP and JS/TS
- No semicolons in JS/TS
PHP
Brezel roughly follows the PSR-12 coding standard.
In essence:
- Use
camelCase
for variables and functions - Opening braces for classes and methods go on the next line
- Single quotes for strings
- 4 spaces for indentation
JavaScript / TypeScript / Vue.js components
Brezel follows the JavaScript Standard Style.
In essence:
- Use
camelCase
for variables and functions - No semicolons
- Single quotes for strings
- 2 spaces for indentation
JSON
In essence:
- 4 spaces for indentation
- No trailing commas or other JSON5 features as it is not supported by all parsers