Contributing to Jobify¶
Thank you for your interest in contributing to Jobify! We are always looking for new contributors.
Getting Started¶
To start contributing, you will need to set up a development environment.
Prerequisites¶
- uv: A fast and efficient Python package and project manager.
- Just: A handy command-line tool used for various development tasks.
Setup¶
Once you have installed the necessary prerequisites, run the following command to set up your environment:
This command will:
- Synchronize the project dependencies using
uv. - Install the
pre-commithooks.
Development Workflow¶
- Fork the repository and create your own branch from the
mainbranch. - Make your desired changes to the code.
- Ensure code quality by running the linter and static analysis tools.
- Write and run tests to verify the changes.
- Submit a Pull Request for review.
Code Quality¶
We use several tools to ensure high code quality. You can run all of them using the just command:
- Linter: Runs Ruff (format and check) and Codespell.
- Static Analysis: Runs Mypy, Basedpyright, Bandit, Semgrep, and Zizmor.
- Pre-commit: It's recommended to run pre-commit on all files before pushing.
Testing¶
Always add tests for new features or bug fixes. We use pytest for testing.
- Run all tests:
- Run tests with coverage:
Pull Request Guidelines¶
- Make sure your code follows the project's coding style (Ruff).
- Keep your pull requests focused. If you have multiple changes that are unrelated, please create separate pull requests.
- If you are adding or changing a feature, update the relevant documentation.
- All pull requests must pass the continuous integration tests before they can be merged.
Commit Messages¶
We follow the Conventional Commits for our commit messages. This helps in generating changelogs and managing releases automatically.
Format: <type>(<scope>): <description>
Example types:
feat: A new featurefix: A bug fixdocs: Documentation only changesstyle: Changes that do not affect the meaning of the code (white-space, formatting, 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