Thank you for your interest in contributing to SignedShot API!
- Python 3.12+
- uv for dependency management
-
Fork and clone the repository:
git clone https://github.com/YOUR_USERNAME/signedshot-api.git cd signedshot-api -
Install dependencies:
uv sync --dev
-
Set up environment:
cp .env.example .env # Edit .env with your configuration -
Run the development server:
uv run poe dev
Run all checks:
uv run poe pre-commitThis runs:
lint- Code style checks (ruff)format-check- Formatting verification (ruff)typecheck- Type checking (pyright)test- Unit tests (pytest)
uv run poe lint # Check code style
uv run poe format # Format code
uv run poe typecheck # Type checking
uv run poe test # Run unit tests
uv run poe test-cov # Run unit tests with coverage
uv run poe test-integration # Run integration tests (requires Docker)
uv run poe test-all # Run all tests with combined coverage
uv run poe check # Run all quality checks (lint + format + typecheck)
uv run poe fix # Auto-fix linting and formatting- We use ruff for linting and formatting
- Type hints are required (enforced by pyright in strict mode)
- Follow existing code patterns
-
Branch naming: Use descriptive branch names
feat/add-device-registrationfix/session-expiry-bugdocs/update-readme
-
Commit messages: Be clear and concise
- Use imperative mood ("Add feature" not "Added feature")
- Reference issues when applicable
-
PR description: Explain what and why
- Describe the changes
- Link related issues
- Include testing steps if applicable
-
Keep PRs focused: One feature/fix per PR
- Write tests for new functionality
- Ensure existing tests pass
- Aim for meaningful coverage, not 100%
# Unit tests
uv run poe test
# Unit tests with coverage
uv run poe test-cov
# Integration tests (requires Docker)
uv run poe test-integration
# All tests with combined coverage
uv run poe test-all
# Specific test file
uv run pytest tests/test_specific.pyOpen an issue for questions or discussions.