Dashboard to show all PRs across all repo's for an Azure Devops account
- JavaScript 66.6%
- CSS 22.3%
- HTML 11.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
The node proxy now rejects all URLs except for those towards Azure DevOps. Reset button in the dashboard settings to clear the PAT and settings. |
||
| .gitignore | ||
| AGENTS.md | ||
| dashboard.js | ||
| package-lock.json | ||
| package.json | ||
| prs.html | ||
| README.md | ||
| server.js | ||
| styles.css | ||
Azure DevOps PR Dashboard
A self-hosted, lightweight dashboard that aggregates pull requests across all repositories in an Azure DevOps project. This tool solves a common pain point: Azure DevOps does not provide a built-in, unified view to monitor and manage all active PRs across multiple repositories in a single workspace.
Key Features
- Unified Cross-Repo View: See every pull request across all repositories within your project in one central list.
- Smart Categorization:
- Requires My Attention: Active PRs where you are a required reviewer or have pending requests.
- Assigned to Me: PRs assigned to your user account.
- Assigned to My Teams: PRs assigned to specific team groups (configurable).
- My PRs: Pull requests authored by you.
- Quick Filters & Search: Dynamically filter PRs by title or ID on-the-fly.
- Tabbed Views: Switch easily between custom dashboard categories or view standard categorizations ("Mine", "Active", "Completed").
- Secure Cache & Proxied Avatars: An on-device Node.js proxy server caches user avatars locally and protects your Personal Access Token (PAT) by forwarding API calls securely.
Getting Started
Prerequisites
- Node.js (v16 or higher recommended)
- An Azure DevOps Personal Access Token (PAT) with minimal read-only scopes required by this app (Git/Code read, Project/Team read, and Graph read if reviewer-group auto-selection is enabled).
Installation
- Clone or download this repository.
- Install the lightweight proxy dependencies:
npm install
Running the App
Start the backend proxy and static server:
npm start
The application will run at: http://localhost:4000
Initial Configuration
When opening the dashboard for the first time, you will see a banner prompting you to configure settings:
- Click Configure Now (or the settings gear icon in the top right).
- Paste your Personal Access Token (PAT).
- Enter your Azure DevOps Organization.
- Select your Azure DevOps Project from the loaded list.
- (Optional) Review and adjust auto-selected reviewer groups in My Teams.
- Click Save & Refresh.
Security Checklist
This project can only enforce controls in the app and proxy. PAT governance itself is an Azure DevOps admin concern.
App/Proxy controls implemented
- Proxy only allows Azure DevOps API hosts (
dev.azure.comandvssps.dev.azure.com) and only/_apis/paths. - Proxy requires
x-paton proxied requests. - Settings include a Reset Stored Data action to clear all saved dashboard config values.
Recommended admin-side PAT policies (Azure DevOps)
- Restrict global PAT creation.
- Restrict full-scoped PAT creation.
- Enforce maximum PAT lifespan.
- Restrict PAT creation (with allowlist exceptions where needed).
- Keep automatic leaked-PAT revocation enabled.
Technical Architecture
- Frontend: Plain HTML5, pure CSS (highly responsive, custom layout similar to native ADO but with cross-repo support), and vanilla JavaScript (
dashboard.js). No build step or bloated frameworks required. - Backend: Express proxy server (
server.js) to bypass local browser CORS policies and safely append the authorization header to Azure DevOps API endpoints. It features an in-memory caching mechanism for user avatars to keep requests minimal and efficient.