Your abandoned repos deserve a proper funeral.
Live: commitmentissues.dev
Paste a public GitHub URL. Get a shareable Certificate of Death — cause of death, last words, repo age, exportable graphics. No account required.
Home:
Certificate:
About:
- Certificate of Death — A4-style layout with cause, last words, repo age, and derived stats
- Exports — Multiple aspect ratios (feed, square, story-style) for Instagram, X, Facebook
- Mobile share — Native share sheet on mobile with story-friendly format
- Hall of Shame — Curated leaderboard of famously abandoned repos
- Recently Buried — Live feed of the latest public burials
- Chrome extension — Tombstone badge injected on any GitHub repo page (MVP)
| Framework | Next.js 14 (App Router) |
| Fonts | UnifrakturMaguntia, Courier Prime, Inter |
| Hosting | Vercel |
| Storage | Upstash Redis (counters + recent burials) |
| Data | GitHub public API |
Prerequisites: Node 18+
git clone https://github.com/dotsystemsdevs/commitmentissues.git
cd commitmentissues
npm install
npm run devOpen http://localhost:3000.
Add a GitHub token to raise API rate limits (optional but recommended):
GITHUB_TOKEN=ghp_yourtokenGenerate one at GitHub → Settings → Developer settings → Personal access tokens. Fine-grained or classic tokens both work.
Note: The Recently Buried feed requires Upstash Redis (
KV_REST_API_URL+KV_REST_API_TOKEN). Without it, the feed is hidden and the buried counter falls back to the historical baseline.
| Step | What happens |
|---|---|
| Input | You submit a public GitHub URL |
| Data | The app fetches public metadata via the GitHub API |
| Score | A death index and narrative are computed in src/lib/scoring.ts |
| Output | Certificate rendered on-screen, exportable as PNG |
Hall of Shame entries are hand-curated; Recently Buried reflects real usage.
npm test- Read
.github/CONTRIBUTING.mdbefore opening a PR - Use the issue and PR templates
- CI runs lint, tests, and build on pull requests to
master
src/
├── app/
│ ├── page.tsx
│ ├── about/
│ └── api/
│ ├── repo/
│ ├── stats/
│ └── recent/
├── components/
│ ├── CertificateCard.tsx
│ ├── Leaderboard.tsx
│ ├── SearchForm.tsx
│ └── LoadingState.tsx
└── lib/
├── scoring.ts
├── rateLimit.ts
├── recentStore.ts
└── types.ts
extension/ ← Chrome extension (MV3, load unpacked)
A MV3 extension lives under extension/. It injects a tombstone badge on GitHub repo pages and links to the full certificate.
- Open
chrome://extensions/ - Enable Developer mode
- Click Load unpacked and select the
extension/subfolder
- Open a GitHub repo page (e.g.
https://github.com/vercel/next.js) - Verify a tombstone badge appears near the repo header
- Click the badge to open the full certificate on
commitmentissues.dev - Navigate to another repo without a full reload; verify no duplicate badge appears
If the API is rate-limited or unavailable, the badge falls back to Reaper busy.
- Release notes:
docs/releases/ - Screenshots:
docs/screenshots/ - Repository conventions:
docs/repository-conventions.md
MIT — see repository license file.
Built by Dot Systems.


