Find GitHub issues worth contributing to, not just random noise.
PR Dashboard is a local-first GitHub issue finder for people who want to make better contribution decisions. It keeps the familiar search flow, then adds deterministic scoring, contribution guidance, and a lightweight Board so promising candidates do not get lost.
The app runs entirely in the browser. There is no backend sync in v1, no model API dependency, and no app-owned server receiving your GitHub token or Board data. Export/Import Local Data is the current phone/desktop bridge.
- Find Contributions and Lookup search GitHub issues with contribution-focused filters, exact issue URLs, and
owner/repo#123references. - Match/Fit Score and Contribution Brief combine transparent scoring rows, setup/platform evidence, pass reasons, and first-step guidance.
- Board workflow saves candidates into local lanes, tracks checklist progress, and keeps Save/Remove/Passed actions reversible.
- Activity owns Proof Log, Review reminders, and learned feedback/history from local workflow actions.
- Local controls cover Hidden Results, Profile preferences, and Export/Import Local Data without exporting tokens.
- API limits and optional token show REST/core and Search buckets; an optional token raises limits while staying browser-local unless you choose remember mode.
v1 deliberately ships without backend sync, GitHub OAuth, GitHub App auth, encrypted sync, a database, or a model API dependency. The app has no app-owned server receiving your GitHub token or Board data. Profile/header avatars can render from safe GitHub avatar URLs returned by Settings connection checks; GitHub auth and encrypted sync remain future backend-sync work.
npm install
npm run devThen open the local URL printed by Vite.
Useful commands:
npm test
npm run build
npm run test:layout
npm run test:readme-screenshotsPR Dashboard talks directly to GitHub from your browser with read-only REST and Search API calls.
- Public searches work without a token.
- Tokens are optional and only used for GitHub API requests.
- Find Contributions uses GitHub Search API limits. Exact Lookup and saved-card refresh use normal REST/core issue endpoints; see GitHub REST API rate limits and GitHub Search API limits.
- API limits are tracked from response headers when possible. The manual
Check limitsaction calls GitHub's rate-limit endpoint and shows the primarycoreandsearchbuckets. - Remembering a token is opt-in, uses browser
localStorage, and is never exported. - Saved board cards, Proof Log entries, Activity history, learned feedback, profile metadata, contribution preferences, Hidden Results keys, and board-derived reminder data stay local to your browser.
- GitHub avatar images load directly from safe GitHub avatar URLs. Tokens are never placed in avatar URLs or sent with image requests.
- Export/Import Local Data moves board, hidden, profile, preferences, learned feedback, and Proof Log data between browsers.
- Exports exclude GitHub tokens, remember-token settings, repo metadata cache, score/setup enrichment cache, raw setup bodies, Authorization headers, API errors, secret-bearing URLs, and private data.
- Setup evidence caches normalized summaries only, not raw setup text or raw config bodies.
- Hidden results are compact issue/repo keys and timestamps only, not issue titles, bodies, labels, repo metadata, or tokens.
- Proof Log is local marked-complete history. It does not verify remote merges.
Read the full security notes in docs/SECURITY.md.
src/
api/ GitHub API, enrichment, setup, and repo metadata helpers
state/ Local app store
appMetrics.js Local app metric summaries
boardConstants.js Board lane and refresh constants
boardMode.js Board display mode helpers
boardModel.js Board storage, migration, and movement helpers
boardRefresh.js Saved-card refresh orchestration
contributionBrief.js Rules-based contribution guidance
dashboardHero.js Dashboard next-action recommendation logic
dashboardMetrics.js Local dashboard metric summaries
dashboardReviewFlow.js Local review-flow summaries
githubActivity.js Saved-card activity comparison helpers
hiddenItems.js Local hidden issue/repo storage
inspectorResize.js Inspector width persistence and keyboard resize helpers
issueKeys.js Canonical issue and pull request keys
proofLog.js Local completed-contribution history
profile.js Local non-secret profile metadata
contributionPreferences.js Local contribution preference storage
matchFeedback.js Local learned feedback signals
platformFilters.js Target platform filter and evidence helpers
platformSetupScan.js Bounded background setup scan helpers
localData.js Local export/import helpers
localAlerts.js Local workflow alert summaries
lookup.js Exact Lookup parsing
main.js SPA rendering and UI bindings
matchScore.js Match/Fit Score logic
routing.js Hash route parsing
searchInteractions.js Filter and preset interactions
security.js Escaping and GitHub URL validation
styles.css Tailwind component layer and app CSS
test/ Node test suite
docs/SECURITY.md Security and token handling notes
One public example: PR Dashboard was used to find TEAMMATES/teammates#13997 and track the resulting merged pull request, TEAMMATES/teammates#13998. This is a factual workflow example only.
This is not an endorsement, partnership, sponsorship, or affiliation with TEAMMATES.
PR Dashboard is open source under the MIT License.
MIT allows use, copying, modification, distribution, and commercial use, but the copyright and license notice must stay with copies or substantial portions of the software.
This project is not affiliated with GitHub.



