Shareable GitHub issue observability dashboard with live Vercel refreshes.
It is built to answer a few leadership questions quickly:
- How much work is open versus closed?
- Is total scope growing faster than completion?
- Which milestones and priority bands are carrying the most pressure?
- Where is stale backlog accumulating?
- Which labels and areas are hot?
- How many tickets are closing within 24 hours, 7 days, and 30 days?
- How long does work usually take to close?
index.html: standalone dashboard shellissue-graph-app.js: dashboard logic and chartsissue-graph-data.json: fallback snapshot of GitHub issue dataapi/issues-data.js: Vercel function that fetches live GitHub issue data server-sidescripts/refresh-data.mjs: refresh the snapshot from GitHub issues usingghvercel.json: static deploy configuration for Vercel
The dashboard now includes:
- weekly throughput
- burn-up trend across the last twelve weeks
- open issue aging buckets with stale/high-priority pressure
- closure-speed and median close-time reporting
- milestone, area, and label hotspot views
The dashboard is designed to load from /api/issues-data on every page load and auto-refresh while the page is open. If live data is unavailable, it falls back to the committed issue-graph-data.json snapshot.
Required Vercel environment variables:
GITHUB_TOKENISSUE_SOURCE_REPOSITE_PASSWORD
Recommended GITHUB_TOKEN shape:
- Fine-grained personal access token
- Repository access to the source repo
Issues: Read-only
Example:
GITHUB_TOKEN=github_pat_xxx
ISSUE_SOURCE_REPO=PRIA-Technologies/skunkworks
SITE_PASSWORD=your-passwordPrerequisites:
- GitHub CLI installed and authenticated
- access to the repo you want to observe
Refresh the default source repo:
node ./scripts/refresh-data.mjsRefresh a specific source repo:
node ./scripts/refresh-data.mjs --repo PRIA-Technologies/skunkworksYou can also set:
ISSUE_SOURCE_REPO=PRIA-Technologies/skunkworksThis repo is already structured for a Vercel import. Use the repo root as the project root.
- Framework preset:
Other - Build command: leave empty
- Output directory: leave empty
- Environment variables:
GITHUB_TOKENISSUE_SOURCE_REPOSITE_PASSWORD
- The Vercel function keeps your GitHub token server-side. The browser never receives the token.
- The site-level password gate is implemented in code so the project does not need Vercel's paid Password Protection add-on.
issue-graph-data.jsonexists as a fallback and for local static previews.- No local keys or tokens should be committed.
.gitignoreexcludes common secret-bearing files and Vercel local state.