Complete reference for all tools used in RapidPM development.
What it is: Ultra-fast Python linter and formatter (replaces flake8, black, isort).
Why we use it: 10-100x faster than traditional tools, single tool for all linting.
ruff check . # Lint code
ruff check --fix . # Auto-fix issues
ruff format . # Format code
Config: pyproject.toml under [tool.ruff]
What it is: Static type checker for Python.
Why we use it: Catches type errors before runtime.
mypy app/ # Type check app directory
Config: pyproject.toml under [tool.mypy]
What it is: JavaScript/TypeScript linter.
Why we use it: Enforces code style, catches errors.
cd rpm-ui && npm run lint
Config: .eslintrc.json
What it is: Code formatter for JS/TS/CSS/HTML.
Why we use it: Consistent formatting across the team.
Config: .prettierrc
What it is: Git hook framework to run checks before commits.
Why we use it: Catches issues before they enter the codebase.
Our hooks:
# Install hooks
pre-commit install
# Run manually
pre-commit run --all-files
Config: .pre-commit-config.yaml
What it is: Python testing framework.
Why we use it: Simple syntax, powerful fixtures, plugin ecosystem.
pytest tests/ # Run all tests
pytest tests/ -v # Verbose output
pytest tests/ --cov=app # With coverage
pytest tests/ -k "test_login" # Run specific tests
Key plugins:
pytest-cov - Coverage reportingpytest-mock - Mocking utilitiesWhat it is: End-to-end browser testing framework.
Why we use it: Cross-browser testing, reliable selectors, trace debugging.
npx playwright test # Run all E2E tests
npx playwright test --ui # Interactive mode
npx playwright show-report # View results
Config: playwright.config.ts
See E2E Testing for full documentation.
What it is: Frontend unit testing (Angular).
Why we use it: Default Angular testing setup.
cd rpm-ui && ng test
What it is: Container platform for packaging applications.
Why we use it: Consistent environments, easy deployment, isolation.
Our images:
| Image | Purpose |
|---|---|
ghcr.io/velastra-uk/rapid-pm |
Application |
nginx:latest |
Reverse proxy |
redis:5.0-alpine |
Cache/queue |
flyway/flyway:10 |
DB migrations |
Key commands:
docker-compose -f docker-compose.prod.yml up -d # Start
docker-compose -f docker-compose.prod.yml logs -f # View logs
docker-compose -f docker-compose.prod.yml down # Stop
docker ps # List containers
What it is: Database migration tool.
Why we use it: Version-controlled schema changes, automatic migration on deploy.
How it works:
migrations/ with naming: V{version}__{description}.sqlflyway_schema_history tableExample:
-- V26_1_0_0_0__add_user_preferences.sql
ALTER TABLE User ADD COLUMN preferences JSON;
See Flyway Migrations for details.
What it is: Web server and reverse proxy.
Our usage:
Key config files:
nginx.conf - Main routingproxy.conf - Proxy settingsactive-backend.conf - Blue/green selectionWhat it is: Infrastructure automation tool.
Why we use it: Reproducible server setup, disaster recovery.
Location: ~/infra/ repository
Key playbooks:
| Playbook | Purpose |
|---|---|
provision.yml |
Initial server setup |
deploy.yml |
Deploy application |
rollback.yml |
Rollback deployment |
quick_status.yml |
Health check |
Commands:
# From ~/infra directory
ansible-playbook playbooks/quick_status.yml --limit test
ansible-playbook playbooks/provision.yml --limit test
ansible prod -m ping
What it is: CI/CD platform integrated with GitHub.
Our workflows:
| Workflow | File | Trigger | Purpose |
|---|---|---|---|
| CI | ci.yml |
Push to master | Quality gate |
| Deploy Test | deploy-test.yml |
After CI passes | Auto-deploy to test |
| Deploy Prod | deploy-prod.yml |
Manual | Production deployment |
| E2E | e2e.yml |
Manual | End-to-end tests |
CI Pipeline stages:
┌─────────────────────────────────────────────────────────────┐
│ CI QUALITY GATE │
├─────────────────────────────────────────────────────────────┤
│ │
│ BACKEND CHECKS (parallel) │
│ ┌─────────┬─────────┬─────────┬─────────┐ │
│ │ Ruff │ MyPy │ Bandit │pip-audit│ │
│ └─────────┴─────────┴─────────┴─────────┘ │
│ │
│ FRONTEND CHECKS │
│ ┌─────────┬─────────┬─────────┐ │
│ │ ESLint │ng build │ ng test │ │
│ └─────────┴─────────┴─────────┘ │
│ │
│ SECURITY (parallel) │
│ ┌─────────┬─────────┬──────────┬─────────┐ │
│ │Hadolint │ Trivy │TruffleHog│Gitleaks │ │
│ └─────────┴─────────┴──────────┴─────────┘ │
│ │
│ BUILD & PUSH │
│ └── docker build → ghcr.io/velastra-uk/rapid-pm:$SHA │
│ │
└─────────────────────────────────────────────────────────────┘
What it is: Docker image hosting on GitHub.
Why we use it: Integrated with GitHub, private by default.
Image URL: ghcr.io/velastra-uk/rapid-pm:latest
What it is: Code coverage tracking service.
Why we use it: Tracks test coverage over time, PR comments.
What it is: Python security linter.
Why we use it: Finds common security issues (SQL injection, hardcoded passwords).
bandit -r app/
What it is: Container vulnerability scanner.
Why we use it: Scans Docker images for known CVEs.
trivy image ghcr.io/velastra-uk/rapid-pm:latest
What it is: Secret detection tool.
Why we use it: Prevents accidental commits of API keys, passwords.
Runs in: Pre-commit hooks, CI pipeline
What it is: Credential scanner for git history.
Why we use it: Catches secrets that may have been committed and removed.
What it is: Python dependency vulnerability checker.
Why we use it: Alerts when packages have known vulnerabilities.
pip-audit
ruff check . # Lint Python
ruff check --fix . # Auto-fix
mypy app/ # Type check
pytest tests/ -v # Run tests
bandit -r app/ # Security scan
pip-audit # Check vulnerabilities
cd rpm-ui
ng serve --port 4200 # Dev server
ng build --configuration prod # Production build
npm run lint # ESLint
ng test # Unit tests
npx playwright test # E2E tests
docker-compose -f docker-compose.prod.yml up -d # Start
docker-compose -f docker-compose.prod.yml down # Stop
docker-compose -f docker-compose.prod.yml logs -f # Logs
docker ps # List containers
# From ~/infra
ansible-playbook playbooks/quick_status.yml --limit test
ansible prod -m ping
| Tool | Version | Category |
|---|---|---|
| Python | 3.12 | Runtime |
| Node | 22.14 | Runtime |
| Ruff | ≥0.4.0 | Linting |
| MyPy | ≥1.10.0 | Type Check |
| pytest | 7.4.4 | Testing |
| Playwright | 1.57.0 | E2E Testing |
| Flyway | 10 | Migrations |
| Docker | latest | Containers |
| Nginx | latest | Proxy |
| Ansible | 2.x | Infrastructure |
See also: Solution for component versions, Deployment for procedures