Description
Setting up PatchPilot for local development currently requires contributors to manually install multiple dependencies—including Python, Node.js, Semgrep, OSV-Scanner, and Gitleaks—and run the frontend and backend as separate processes. This onboarding process is time-consuming and increases the likelihood of environment-specific issues.
Introduce a docker-compose.yml configuration that provisions the complete development environment with a single command, providing a consistent and reproducible setup across all platforms.
Proposed Solution
Create a root-level docker-compose.yml that orchestrates the backend, frontend, and security scanner dependencies.
The Compose setup should:
- Build and run all required services.
- Support live code reloading for development.
- Eliminate the need to manually install scanner tools on the host machine.
- Serve as the recommended local development workflow.
Services
Backend
- Build from
backend/Dockerfile
- Mount
./backend as a bind volume for live reload
- Expose the backend API
- Load environment variables from
.env
Frontend
- Build from
frontend/Dockerfile
- Mount
./frontend for hot module replacement
- Run:
Scanner Tools
Provide a service (or shared base image) containing:
- Semgrep
- OSV-Scanner
- Gitleaks
The scanner binaries should be available to the backend via a shared volume or common image layer to avoid requiring local installations.
Developer Workflow
Starting the application should be as simple as:
Stopping and cleaning the environment should be:
No additional manual setup should be required beyond Docker and Docker Compose.
Documentation
Update the project documentation to make Docker the recommended development workflow.
README.md
Add a Docker Quickstart section covering:
- Prerequisites
- Starting the development environment
- Accessing the frontend and backend
- Stopping the stack
- Common troubleshooting tips
This section should replace the existing multi-step manual setup as the primary onboarding path for new contributors.
Environment Variables
Add or update .env.example to document all environment variables consumed by:
- Backend
- Frontend
- Scanner tools (if applicable)
Include sensible development defaults where appropriate.
Continuous Integration
Extend the GitHub Actions workflow to validate the Docker configuration on every pull request.
The CI should verify that:
completes successfully without errors.
This helps prevent broken Docker configurations from being merged.
Acceptance Criteria
Expected Impact
- 🐳 One-command local setup for new contributors.
- ⚡ Faster onboarding with fewer environment-related issues.
- 🔁 Consistent development environments across Windows, macOS, and Linux.
- 🛠️ Eliminates manual installation of security scanner tools.
- 🚀 Improves contributor experience and increases development productivity.
- ✅ Ensures Docker configuration remains functional through automated CI validation.
Difficulty: Medium
Description
Setting up PatchPilot for local development currently requires contributors to manually install multiple dependencies—including Python, Node.js, Semgrep, OSV-Scanner, and Gitleaks—and run the frontend and backend as separate processes. This onboarding process is time-consuming and increases the likelihood of environment-specific issues.
Introduce a
docker-compose.ymlconfiguration that provisions the complete development environment with a single command, providing a consistent and reproducible setup across all platforms.Proposed Solution
Create a root-level
docker-compose.ymlthat orchestrates the backend, frontend, and security scanner dependencies.The Compose setup should:
Services
Backend
backend/Dockerfile./backendas a bind volume for live reload.envFrontend
frontend/Dockerfile./frontendfor hot module replacementScanner Tools
Provide a service (or shared base image) containing:
The scanner binaries should be available to the backend via a shared volume or common image layer to avoid requiring local installations.
Developer Workflow
Starting the application should be as simple as:
Stopping and cleaning the environment should be:
No additional manual setup should be required beyond Docker and Docker Compose.
Documentation
Update the project documentation to make Docker the recommended development workflow.
README.md
Add a Docker Quickstart section covering:
This section should replace the existing multi-step manual setup as the primary onboarding path for new contributors.
Environment Variables
Add or update
.env.exampleto document all environment variables consumed by:Include sensible development defaults where appropriate.
Continuous Integration
Extend the GitHub Actions workflow to validate the Docker configuration on every pull request.
The CI should verify that:
completes successfully without errors.
This helps prevent broken Docker configurations from being merged.
Acceptance Criteria
docker-compose.yml.backend/Dockerfileand supports live reload via bind mounts.frontend/Dockerfileand runsnpm run devon port 5173.docker compose upstarts the complete development environment.docker compose down -vremoves containers, networks, and volumes cleanly.README.mdwith a Docker Quickstart section recommending Docker as the default setup..env.exampleto document all required environment variables.docker compose buildsucceeds on every pull request.Expected Impact
Difficulty: Medium