Halló!
Thanks for contributing to tabi. Before implementing new features and changes, please submit an issue so that we can discuss it.
We welcome contributions in many forms, including:
- Bug reports;
- New translations;
- Improvements to existing translations;
- Feature requests;
- Code patches;
- Documentation improvements;
- UI/UX suggestions.
If you're not sure how to contribute or need help with something, please don't hesitate to reach out via the issue tracker or mail.
- Follow the GitHub flow.
- Follow the Conventional Commits Specification.
- Use gitmoji – it's fun! 🫶
While we don't enforce a strict coding style, we appreciate it when contributions follow the existing code style of the project (e.g. indenting with 4 spaces). This makes the codebase easier to read and maintain. If you are making significant changes or additions, please try to maintain consistency with the current coding patterns and idioms.
For JavaScript files, you can use Biome to format your code.
The CSS properties are sorted following Concentric-CSS. If you use VSCode, the Sort CSS extension makes this super easy.
We use a pre-commit githook to maintain code and file quality. This script performs a series of checks and updates before a commit is made.
To use the pre-commit githook, run the following command from the root of the repository to configure the git hooks path and make the script executable:
git config core.hooksPath .githooks
chmod +x .githooks/pre-commit
The pre-commit githook performs the following actions:
- Front Matter in Markdown Files: Automatically updates the "updated" field in the front matter of
.md
files. - PNG Compression: Compresses PNG files using either
oxipng
oroptipng
, whichever is available on your system. - Font Subsetting: Runs
subset_font
ifconfig.toml
has been modified.
The script prevents you from committing if:
- The
.md
file is marked as a draft. - Any file contains a "TODO".
- A JavaScript file is being committed without a corresponding minified version.
- A minified JavaScript file is not as small as it could be. Requires installing UglifyJS and/or terser.
config.toml
andtheme.toml
have different numbers of lines in their[extra]
sections.
These checks are in place to ensure code quality and consistency throughout the project.
We expect all contributors to follow our Code of Conduct. Please be respectful and professional when interacting with other contributors.
The code is available under the MIT license.
Thank you for your contributions!