Thank you for your interest in contributing! We welcome all contributions — bug fixes, features, documentation, and ideas.
- Code of Conduct
- Getting Started
- How to Contribute
- Development Workflow
- Commit Message Standards
- Pull Request Process
- Reporting Issues
- Security Vulnerabilities
- Code Style & Standards
- License
All contributors are expected to treat each other with respect and professionalism. Harassment, discrimination, and disruptive behavior will not be tolerated. By participating, you agree to uphold a welcoming and inclusive environment.
-
Fork the repository and clone your fork:
git clone https://github.com/<your-username>/<repo-name>.git cd <repo-name>
-
Add the upstream remote:
git remote add upstream https://github.com/<org>/<repo-name>.git
-
Set up environment variables:
cp example.env .env # Edit .env with your configuration -
(Optional) Start the local development environment:
docker compose -f docker-compose.local.yml up
We accept the following types of contributions:
| Type | Examples |
|---|---|
| Bug fixes | Resolve open issues, fix regressions |
| Features | New capabilities, enhancements to existing behavior |
| Documentation | Improve guides, fix typos, add examples |
| Refactoring | Code clarity, performance, structure improvements |
| Infrastructure | CI/CD, Docker, environment configuration |
| Tests | New test coverage, fix flaky tests |
First time contributing? Look for issues labeled
good first issueorhelp wanted.
git fetch upstream
git checkout main
git merge upstream/mainUse a descriptive branch name:
<type>/<short-description>
# Examples
feat/add-user-auth
fix/null-pointer-on-login
docs/update-contributing-guide
refactor/extract-validation-logic
- Keep changes focused — one concern per branch.
- Write or update tests for any new or changed behavior.
- Update documentation if your changes affect public-facing behavior.
Run the full test suite before pushing. Verify that existing tests still pass and no functionality is broken.
git push origin <your-branch>Then open a Pull Request against main. Fill out the Pull Request Template completely.
Follow the Conventional Commits specification:
<type>(<scope>): <subject>
[optional body]
[optional footer(s)]
| Type | Purpose |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation only |
style |
Formatting, no logic change |
refactor |
Code restructuring, no behavior change |
perf |
Performance improvement |
test |
Adding or updating tests |
chore |
Build, CI, tooling, dependencies |
- Subject line: Imperative mood, lowercase, no period, max 72 characters.
- Body: Explain what and why, not how. Wrap at 80 characters.
- Footer: Reference issues (
Fixes #123,Closes #456).
feat(auth): add OAuth2 login flow
Implement OAuth2 authorization code flow with PKCE for
secure browser-based authentication.
Closes #42
fix(api): prevent null response on empty query
Return an empty array instead of null when the search
query matches no results.
Fixes #87
- Fill out the template — Use the Pull Request Template. Incomplete PRs will be sent back.
- Link related issues — Reference issues using
Fixes #123orCloses #456. - Keep PRs small — Smaller PRs get faster, better reviews. Split large changes into stacked PRs when possible.
- All checks must pass — Tests, linting, and CI must be green before review.
- Request review — Assign at least one reviewer. PRs require approval before merging.
- Address feedback promptly — Respond to review comments. Push follow-up commits; do not force-push during review.
- Squash on merge — Keep the commit history clean. The final merge commit message should follow commit standards.
When reporting a bug or requesting a feature:
- Search first — Check existing issues to avoid duplicates.
- Use a clear title — Summarize the problem or request in one line.
- Provide details:
- Bug reports: Steps to reproduce, expected vs. actual behavior, environment info (OS, runtime version), and relevant logs or screenshots.
- Feature requests: Problem statement, proposed solution, and any alternatives considered.
Do not open a public issue for security vulnerabilities. Instead, report them privately to the maintainers. Include:
- Description of the vulnerability
- Steps to reproduce
- Potential impact
- Suggested fix (if any)
- Follow the existing code patterns and conventions in the repository.
- Refer to the best practice guides for detailed standards on security, performance, testing, code quality, and more.
- Write self-documenting code. Add comments only when the why isn't obvious.
- Keep dependencies minimal and justified.
This project is licensed under the MIT License. By contributing, you agree that your contributions will be licensed under the same terms.