Note: This is an AI generated application
Agile metrics dashboard for GitHub Projects V2. Fetches project data via the GitHub GraphQL API and renders interactive charts with PDF/CSV export, dark mode, and initiative hierarchy visualization.
- Burndown Chart — Remaining items per day within an iteration (with ideal line)
- Velocity Chart — Items completed vs total per iteration (with average line)
- Cycle Time — Scatter plot of time from created to closed per item (with avg/median/85th percentile lines)
- Bugs Opened vs Closed — Weekly trend of bugs opened and closed (filters by "Bug" issue type)
- Throughput — Weekly completed items with a 4-week rolling average trend line
- Aging WIP — Horizontal bar chart of in-progress items by age, color-coded by severity (green < 7 days, yellow 7–14 days, red 14+ days)
- Cumulative Flow Diagram (CFD) — Stacked area chart showing status distribution over time (by iteration or week)
- Initiatives — Interactive flow-based hierarchy visualization of epics/initiatives and their child issues, powered by React Flow
- Dark / Light mode — Toggle between themes; preference is persisted to localStorage and respects system default
- Project Switcher — Save and switch between multiple GitHub project URLs
- Iteration Selector — Pick an iteration for iteration-scoped charts (burndown, velocity)
- PDF & CSV Export — Every chart can be exported as a PDF snapshot or CSV data file
- Report Descriptions — Each chart includes a collapsible "How it works" / "What it's for" explainer
- Theme-aware charts — Highcharts styling adapts automatically to the current theme
- Node.js 20+
- A GitHub Personal Access Token with
read:projectandreposcopes - A GitHub Project V2 URL (org or user project)
npm install
npm run devOpen http://localhost:3000, paste your project URL and PAT, and click Load Project.
- Enter a GitHub Project URL (e.g.
https://github.com/orgs/my-org/projects/1) - Enter your PAT (stored in browser localStorage only — never sent to any server)
- The app fetches all project items via GitHub's GraphQL API
- Navigate between 8 report tabs in the dashboard
- Use the iteration selector to scope burndown and velocity charts
- Expand initiative nodes to explore epic hierarchies
- Next.js 16 (App Router) + TypeScript
- Highcharts + highcharts-react-official
- React Flow (@xyflow/react) for initiative visualization
- jsPDF for PDF export
- Tailwind CSS 4
- Your PAT never leaves the browser except in
Authorization: Bearerheaders sent directly tohttps://api.github.com. There is no backend server. - PAT is stored in
localStoragefor convenience across page reloads. Use the Forget token button in the project switcher to explicitly clear it. - Content-Security-Policy headers restrict outbound requests to
selfandapi.github.com, limiting exposure if an XSS vector is ever introduced. - Recommendation: Use a fine-grained PAT with the minimum scopes needed (
read:project,reporead-only).
- Cycle time is approximated as
createdAt → closedAtsince the Projects V2 API doesn't expose status change history. - Bugs are identified by the "Bug" issue type.
- Initiative progress rolls up from leaf nodes only (non-parent items).
- All data is held in browser memory — no backend persistence. PAT and saved projects are stored in localStorage.
- The iteration field must be named "Iteration" and the status field must be named "Status" in your project.
