You have 60 seconds to read a real pull request from a popular open-source repo and decide: Accept or Reject. Submit your verdict and find out if you would have called it right.
- A random PR is fetched live from the GitHub API across 28 popular open-source repos (React, Vue, Next.js, VS Code, Linux, and more).
- You have 60 seconds to read the title, description, and optionally the diff.
- Hit Accept (or press
A) if you think it was merged, Reject (or pressR) if you think it was closed. - The reveal screen shows whether you were right, the actual outcome, and your running stats.
Stats (accuracy, streak, best streak) are stored locally in localStorage — no account needed.
npm installCreate a .env file with a GitHub personal access token:
GITHUB_TOKEN=ghp_...
Then start the dev server:
npm run devOpen http://localhost:3000.
| Route | Description |
|---|---|
/ |
Landing page |
/play |
Active game — timer, PR viewer, diff, vote buttons |
/reveal |
Result screen — correct/incorrect, outcome, stats |
/stats |
All-time stats dashboard |
app/
page.tsx # Landing page
play/page.tsx # Game screen
reveal/page.tsx # Result screen
stats/page.tsx # Stats dashboard
api/
pr/random/ # GET — fetches a random PR from GitHub (outcome hidden)
vote/ # POST — fetches the actual outcome from GitHub
lib/
prs.ts # Live GitHub API fetching + filtering
session.ts # localStorage stats helpers