Thanks for your interest in contributing! This document explains how to get started.
This project follows the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code.
- Docker and Docker Compose v2.15+
- Node.js 20+
- Python 3.12+
- uv (Python package manager)
# Clone the repository
git clone https://github.com/consentos/consentos.git
cd consentos
# Copy the example environment file
cp .env.example .env
# Start all services
make up
# Run database migrations
make migrate
# Seed the known cookies database
make seed
# Verify everything is running
# API: http://localhost:8000/docs
# Admin UI: http://localhost:5173
# CDN: http://localhost:8080# Start test infrastructure (PostgreSQL + Redis)
make test-infra-up
# Run API tests
make test
# Run with coverage
make test-cov
# Run banner tests
cd apps/banner && npm test
# Run admin UI tests
cd apps/admin-ui && npm test
# Stop test infrastructure
make test-infra-downCreate a branch from master using the convention:
<type>/<short-description>
Examples: feat/add-geo-rules, fix/consent-cookie-expiry, docs/api-examples
We use Conventional Commits:
feat: add regional consent mode overrides
fix: correct TC string encoding for vendor consents
docs: document compliance rule engine
chore: update Python dependencies
refactor: simplify cookie classification pipeline
test: add integration tests for scanner API
- Python: Type hints everywhere. Linted with Ruff, type-checked with MyPy (strict mode)
- TypeScript: Strict mode enabled. Linted with ESLint
- SQL: CTEs over subqueries, explicit column lists (no
SELECT *) - Language: British English in all prose, comments, and UI strings
- Run
make check(lint + tests) and ensure it passes - Add or update tests for any changed behaviour
- Ensure no secrets or credentials are committed
- Keep PRs focused — one logical change per PR
- Write a clear title (under 70 characters) and description
- Link to any related issues
- All CI checks must pass before merge
- PRs require at least one approving review
- Use GitHub Issues for bugs and feature requests
- For security vulnerabilities, see SECURITY.md
By contributing, you agree that your contributions will be licensed under the Elastic License 2.0.