9b26bcb1b84943a42b0a8663a6b099126e3e2ff6
Deploy PR-Helper / deploy (push) Successful in 26s
PR-Helper
AI-powered PR description generator and code review tool. Self-hosted, designed for internal/local use.
Features
- PR Description Generation — Select commits from an interactive Git graph, get a structured PR description via LLM
- AI Code Review — Per-file analysis with severity ratings, inline suggestions on the diff view
- Interactive Git Graph — D3.js visualization with click-to-select base/head refs
- Diff Viewer — Split/unified view powered by diff2html with syntax highlighting
- Review Notes — Add markdown notes at overall, file, or suggestion level
- PDF Export — Generate printable review reports
- Repository Caching — Cloned repos are cached with configurable expiry
Quick Start
Docker (recommended)
docker compose up --build
Open http://localhost:8080.
Manual Build
Requirements: Go 1.22+, CGO enabled (for SQLite), Chromium (for PDF export)
# Install dependencies
go mod download
# Build
CGO_ENABLED=1 go build -o pr-helper .
# Run
./pr-helper
Server listens on :8080 by default.
Configuration
LLM Settings (required)
Navigate to Settings (/settings) and configure:
| Setting | Description | Default |
|---|---|---|
| API Endpoint | OpenAI-compatible API URL | https://api.openai.com/v1 |
| API Key | Your API key | (empty) |
| Model | Model name | gpt-4o |
Works with any OpenAI-compatible API: OpenAI, Deepseek, Ollama, vLLM, etc.
Review Settings
| Setting | Description | Default |
|---|---|---|
| Top-N Files | Max files to analyze per review (0 = all) | 20 |
| Concurrency | Parallel file analyses | 5 |
Cache Settings
| Setting | Description | Default |
|---|---|---|
| Max Age (days) | Auto-cleanup threshold | 7 |
| Max Size (MB) | Total cache size limit | 5000 |
Environment Variables
| Variable | Description | Default |
|---|---|---|
PORT |
Server port | 8080 |
GIN_MODE |
Gin mode (debug/release) |
debug |
DATA_DIR |
Data directory path | ./data |
CHROME_BIN |
Chromium binary path (for PDF) | /usr/bin/chromium-browser |
Usage
- Clone a repo — Paste a Git URL on the homepage, optionally provide credentials for private repos
- Browse the graph — View branches, tags, and commit history in the interactive D3.js graph
- Select refs — Click nodes in the graph or use the dropdown selectors to pick base and head
- Generate PR description — Navigate to Generate, select refs, click Generate
- Run code review — Navigate to Review, configure Top-N and concurrency, click Start Review
- Add notes — Click into any suggestion or the overall section to add markdown notes
- Export PDF — Click Export PDF to download a formatted report
API Routes
Pages
| Method | Path | Description |
|---|---|---|
| GET | / |
Homepage — clone form and cached repos |
| GET | /repo/:id |
Repository — Git graph and diff viewer |
| GET | /repo/:id/generate |
PR description generation |
| GET | /repo/:id/review |
AI code review |
| GET | /settings |
Settings page |
API
| Method | Path | Description |
|---|---|---|
| POST | /api/repos |
Clone repository (SSE stream) |
| GET | /api/repos |
List cached repositories |
| DELETE | /api/repos/:id |
Delete repository cache |
| POST | /api/repos/:id/cleanup |
Trigger cache cleanup |
| GET | /api/repos/:id/graph |
Git graph data (JSON) |
| GET | /api/repos/:id/refs |
Branches and tags |
| GET | /api/repos/:id/commits |
Commit log for a ref |
| GET | /api/repos/:id/diff |
Diff between two refs |
| POST | /api/repos/:id/generate |
Generate PR description (SSE) |
| POST | /api/repos/:id/review |
AI code review (SSE) |
| GET | /api/repos/:id/review/analyses |
List past reviews |
| GET | /api/repos/:id/review/analyses/:aid |
Get single review |
| POST | /api/repos/:id/review/notes |
Save a review note |
| GET | /api/repos/:id/review/notes |
Get review notes |
| POST | /api/repos/:id/review/pdf |
Generate PDF report |
| GET | /api/settings |
Get settings |
| PUT | /api/settings |
Update settings |
Tech Stack
- Backend: Go, Gin, SQLite (go-sqlite3), go-git, chromedp
- Frontend: Go html/template, HTMX, D3.js, diff2html, Tailwind CSS
- LLM: OpenAI-compatible API with SSE streaming
Security
No authentication. Do not expose to the public internet. Intended for internal/local use only.
License
MIT
Description
Languages
Go
41.3%
HTML
27.3%
JavaScript
26.9%
CSS
2.9%
Shell
1.4%
Other
0.2%