PR dashboard that shows open pull requests across monitored GitHub repositories so team members can see at a glance which PRs need attention.
Live example: conforma.dev/review-rot
A Go CLI queries the GitHub GraphQL API for open PRs across configured repos,
enriches each with review/CI/conversation metadata, and outputs data.json. A
static frontend (vanilla JS + CSS) renders the data with client-side filtering
and sorting.
A GitHub Actions workflow (.github/workflows/publish.yaml) runs every
30 minutes on weekdays:
- Builds the Go CLI
- Runs it with the
config/directory to produceweb/data.json - Copies the static frontend files into
web/ - Pushes
web/to thegh-pagesbranch
GitHub Pages is configured to serve from the gh-pages branch.
The CLI authenticates as a GitHub App using a private key passed via the
GITHUB_PRIVATE_KEY environment variable. In this repository the workflow
reads it from the EC_AUTOMATION_KEY secret.
The config/ directory contains two files:
sources.yaml— GitHub App credentials, monitored orgs/repos, team members, and bot accounts. See the comments in that file for details.ui.yaml— Dashboard appearance: title, logo, and accent colors.
The CLI uses a GitHub App for authentication. GitHub's GraphQL API requires authentication even for public repositories, and a GitHub App provides its own rate limit (5,000+ requests/hour) without being tied to any individual's account.
The app only needs read-only access to pull requests and repository metadata — no write permissions are required. See the GitHub docs for instructions on creating and installing a GitHub App.
To use review-rot for your own team:
- Fork the repository
- Create a GitHub App (see above) and install it on your org
- Edit
config/sources.yamlwith your App ID, Installation ID, orgs, repos, and team members - Edit
config/ui.yamlto set your team name, logo, and brand colors - Add the App's private key as a repository secret and update the
GITHUB_PRIVATE_KEYenv var in.github/workflows/publish.yamlto reference it (this repo usesEC_AUTOMATION_KEY) - Configure GitHub Pages to serve from the
gh-pagesbranch
If ui.yaml is omitted, the dashboard uses the default title ("Review Rot"),
no logo, and a neutral blue-grey color scheme.