First off, thank you for considering contributing to the T-Pot Payload Server!
GreedyBear welcomes contributors from anywhere and from any kind of education or skill level. We strive to create a community of developers that is welcoming, friendly and right. For this reason it is important to follow some easy rules based on a simple but important concept: Respect.
- Approval: Before starting to work on an issue, you need to get the approval of one of the maintainers by asking to be assigned.
- Commitment: After having been assigned, you have a week of time to deliver your first draft PR. After that time has passed without any notice, you will be unassigned.
- Documentation First: Before asking questions regarding how the project works, please read through all the documentation and try it locally.
- Draft Early: Once you start working on an issue, please raise a draft PR early with incomplete changes so we can track progress and actively review.
- Use AI Appropriately: Do not just copy/paste LLM output without checking. AI abuse will result in automatic rejection of PRs.
All active development happens on the develop branch.
- Please do not open Pull Requests directly against
main. - Always create your feature branch from
developand submit your Pull Request back todevelop.
We use uv for lightning-fast dependency management and ruff for strict code linting and formatting.
Make sure you have uv installed on your system.
# Clone the repository
git clone https://github.com/GreedyBear-Project/tpot-payload-server.git
cd tpot-payload-server
# Install all dependencies (including test and lint groups)
uv sync --all-groupsWe use pre-commit to automatically run our linters and formatters before every commit. This ensures that no formatting errors make it into the codebase.
Run this command once to install the pre-commit hooks:
uv run pre-commit install -c .github/.pre-commit-config.yamlNow, every time you run git commit, ruff will automatically check and format your code!
To ensure everything works as expected, run the backend test suite locally before pushing:
uv run pytestAll tests must pass locally before you can successfully open a Pull Request.
If you spot a bug or have a feature request, please use our provided Issue Template. When creating an issue, try to fill out all sections:
- Problem / What it aims to solve: Clear description of the bug or feature.
- Suggested approach: If you have an idea on how to fix or implement it, let us know!
- Additional context: Any logs, links, or screenshots.
When you are ready to submit your code:
- Ensure your branch is based on
develop. - Ensure you have run tests locally (
uv run pytest). - Open a Pull Request against the
developbranch. - Fill out the Pull Request Template completely. The checklist is mandatory and helps maintainers review your code faster.
- Wait for the CI checks (CodeQL, Linter, Tests) to pass. If they fail, fix the issues and push again.