Skip to content

Commit 8bede24

Browse files
polish repo documentation and project structure
- Rewrite README to reflect the real product (Next.js 15, real fonts, accurate folder structure, full API table, available scripts). - Rename package to commitmentissues, add full metadata, add typecheck script, align eslint-config-next with Next 15.3.9, drop unused @vercel/kv dependency. - Tighten CONTRIBUTING / SECURITY / PR template with concrete steps. - Refresh docs/repository-conventions.md as table-form. - Add /legal to sitemap; expand public/llms.txt with full endpoint list and source link. - Add root CHANGELOG.md (Keep-a-Changelog) folding ROADMAP and docs/releases content. - Add .env.example documenting all optional env vars. - Dedupe .gitignore. - Remove stray Group 128.png Figma export, unused .gitkeep, and superseded ROADMAP.md / docs/releases/v1.0.0.md. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent ffea21d commit 8bede24

16 files changed

Lines changed: 418 additions & 740 deletions

.env.example

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# =============================================================================
2+
# Commitment Issues — environment variables
3+
# -----------------------------------------------------------------------------
4+
# Copy this file to `.env.local` and fill in the values you want to use.
5+
# Every variable below is OPTIONAL — the app boots and works without any of
6+
# them. With nothing set, you get GitHub's anonymous rate limits (60 req/hr)
7+
# and the live counters / "recently buried" feed are disabled.
8+
# =============================================================================
9+
10+
# Public site URL — used in metadata, OG images, and badge URLs.
11+
NEXT_PUBLIC_BASE_URL=http://localhost:3000
12+
13+
# -----------------------------------------------------------------------------
14+
# GitHub API
15+
# -----------------------------------------------------------------------------
16+
# Personal access token for GitHub. Raises the rate limit from 60 to 5000
17+
# req/hr. Public-repo data only — no scopes required.
18+
# Generate at: https://github.com/settings/tokens
19+
GITHUB_TOKEN=
20+
21+
# -----------------------------------------------------------------------------
22+
# Upstash Redis (used for rate limiting, recent burials, candle counts, stats)
23+
# -----------------------------------------------------------------------------
24+
# Create a free Redis database at https://console.upstash.com and paste the
25+
# REST URL + token. Without these, the live counter stays at the historical
26+
# baseline and the "recently buried" feed falls back to the Hall of Shame.
27+
KV_REST_API_URL=
28+
KV_REST_API_TOKEN=

.github/CONTRIBUTING.md

Lines changed: 39 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,67 +1,78 @@
11
# Contributing
22

3-
Thanks for helping improve `commitmentissues.dev`.
3+
Thanks for taking the time. The bar is "small, focused, and consistent with what's already there."
44

55
## Ground rules
66

7-
- Keep PRs small and focused.
8-
- One concern per PR (bugfix, feature, docs, or refactor).
9-
- Preserve the existing product tone and UI style.
10-
- Do not introduce heavy dependencies unless clearly justified.
7+
- One concern per PR — bugfix, feature, docs, or refactor.
8+
- Match the existing tone, design system, and file conventions (see below).
9+
- No heavyweight dependencies unless clearly justified in the PR description.
10+
- No telemetry, accounts, or anything that requires the user to log in.
1111

1212
## Local setup
1313

1414
```bash
15+
git clone https://github.com/dotsystemsdevs/commitmentissues.git
16+
cd commitmentissues
1517
npm install
1618
npm run dev
1719
```
1820

19-
Optional for higher GitHub API limits:
20-
21-
```env
22-
GITHUB_TOKEN=ghp_yourtoken
23-
```
21+
Open [http://localhost:3000](http://localhost:3000). Every environment variable is optional — see [`.env.example`](../.env.example).
2422

2523
## Before opening a PR
2624

27-
Run:
28-
2925
```bash
3026
npm run lint
27+
npm run typecheck
3128
npm test
3229
```
3330

34-
If you changed runtime behavior, also run:
31+
If you changed runtime behaviour (anything outside docs / tests), also run:
3532

3633
```bash
3734
npm run build
3835
```
3936

37+
CI runs the same three commands plus `build` on every push and PR to `main`.
38+
4039
## Branch and PR flow
4140

42-
1. Fork repo
43-
2. Create feature branch (`feat/...`, `fix/...`, `docs/...`, `chore/...`)
44-
3. Commit with clear message
45-
4. Open PR to `main`
41+
1. Fork the repo.
42+
2. Create a branch named `feat/...`, `fix/...`, `docs/...`, or `chore/...`.
43+
3. Keep commits small. Conventional Commit prefixes are appreciated but not required.
44+
4. Open the PR against `main`. Fill in the PR template — what changed, why, and screenshots if anything visual moved.
4645

47-
## Issue hygiene
46+
## File and folder conventions
4847

49-
- Use issue templates when available.
50-
- Include reproduction steps for bugs.
51-
- Include acceptance criteria for feature requests.
48+
- React components: `PascalCase.tsx` in `src/components/`.
49+
- Hooks: `useCamelCase.ts` — co-located with the component if scoped to one feature, otherwise in `src/hooks/`.
50+
- Library / pure logic: `camelCase.ts` in `src/lib/`. Keep this layer free of React imports.
51+
- API routes follow the App Router convention: `src/app/api/<name>/route.ts`.
52+
- Docs and config: `kebab-case.md`.
53+
- Folders: lowercase.
5254

5355
## Scope expectations
5456

5557
Good first contributions:
5658

57-
- UI polish and micro-interactions
58-
- Small bug fixes
59-
- Docs improvements
60-
- Tests around `src/lib/scoring.ts`
59+
- UI polish, micro-interactions, accessibility fixes.
60+
- Small bug fixes with a clear repro.
61+
- New rules in [`scoring.ts`](../src/lib/scoring.ts) — with a test case.
62+
- Docs and screenshot updates.
63+
64+
Please check in before opening:
65+
66+
- Larger refactors or architecture changes.
67+
- New runtime dependencies.
68+
- Anything that adds backend state (we already lean heavily on Redis).
6169

6270
Avoid in first PRs:
6371

64-
- Large rewrites
65-
- Broad architecture refactors
66-
- Unrelated cleanup mixed into feature work
72+
- Sweeping rewrites mixed into a feature.
73+
- Unrelated cleanup bundled into a fix.
74+
- Style-only changes that fight the design tokens in [`globals.css`](../src/app/globals.css).
75+
76+
## Reporting bugs and requesting features
6777

78+
Use the issue templates in [`.github/ISSUE_TEMPLATE/`](ISSUE_TEMPLATE). Include a reproduction for bugs and acceptance criteria for features.

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
## What changed
22

3-
-
3+
<!-- One or two sentences. -->
44

55
## Why
66

7-
-
7+
<!-- Link the issue, or explain the user-facing reason. -->
88

99
## Checklist
1010

11-
- [ ] I tested my change locally (`npm run lint` and `npm test`)
12-
- [ ] I kept the scope focused and avoided unrelated refactors
13-
- [ ] I updated docs/screenshots if behavior or UI changed
14-
- [ ] I confirmed no secrets are added
11+
- [ ] `npm run lint` passes
12+
- [ ] `npm run typecheck` passes
13+
- [ ] `npm test` passes
14+
- [ ] Tested locally (`npm run dev`)
15+
- [ ] Scope is focused — no unrelated refactors bundled in
16+
- [ ] Docs / screenshots updated if behaviour or UI changed
17+
- [ ] No secrets, API keys, or `.env*.local` files added
1518

16-
## Screenshots (if UI change)
17-
18-
<!-- Add before/after images or a short clip -->
19+
## Screenshots
1920

21+
<!-- Before / after, or short clip, if any UI moved. Delete the section if not applicable. -->

.github/SECURITY.md

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,35 @@
11
# Security Policy
22

3-
If you discover a security issue, please do **not** open a public issue.
3+
If you find a security issue, please **do not open a public issue or PR**. Reports are read and acted on quickly.
44

5-
## Report privately
5+
## Reporting
66

7-
- Use GitHub security advisories for this repository, or
7+
Use one of the following:
8+
9+
- [GitHub security advisories](https://github.com/dotsystemsdevs/commitmentissues/security/advisories/new) — preferred.
810
- Email: `dot.systems@proton.me`
911

10-
Please include:
12+
Include:
13+
14+
- A clear description of the issue.
15+
- Steps to reproduce, or a proof-of-concept.
16+
- Affected version or commit SHA.
17+
- Potential impact, and a suggested fix if you have one.
18+
19+
## What we treat as in scope
20+
21+
- Server-side bugs in any route under `src/app/api/`.
22+
- Input handling on the public surface — repo URLs, usernames, badge / certificate parameters.
23+
- CSP / header regressions in [`next.config.mjs`](../next.config.mjs).
24+
- Anything that could leak server-side environment variables, exfiltrate stored data, or impersonate the service.
25+
26+
## Out of scope
1127

12-
- A clear description of the issue
13-
- Steps to reproduce
14-
- Potential impact
15-
- Suggested fix (if available)
28+
- Vulnerabilities in upstream dependencies that don't affect our usage.
29+
- Social-engineering or physical-access attacks.
30+
- Anything requiring already-compromised end-user devices.
1631

17-
We will acknowledge reports as quickly as possible and work on a fix.
32+
## Response
1833

34+
We aim to acknowledge reports within 72 hours and to ship a fix or mitigation as soon as practical.
35+
Coordinated disclosure is appreciated.

.gitignore

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,39 @@
11
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
22

3-
# dependencies
3+
# Dependencies
44
/node_modules
55
/.pnp
66
.pnp.js
77
.yarn/install-state.gz
88

9-
# testing
9+
# Testing
1010
/coverage
1111

12-
# next.js
12+
# Next.js
1313
/.next/
14-
/.next-dev/
1514
/out/
1615

17-
# production
16+
# Production
1817
/build
1918

20-
# misc
19+
# Misc
2120
.DS_Store
2221
*.pem
2322

24-
# local agent / IDE worktrees (do not commit)
23+
# Local agent / IDE worktrees
2524
.claude/
2625

27-
# debug
26+
# Debug
2827
npm-debug.log*
2928
yarn-debug.log*
3029
yarn-error.log*
3130

32-
# local env files
31+
# Local env files
3332
.env*.local
3433

35-
# vercel
34+
# Vercel
3635
.vercel
3736

38-
# typescript
37+
# TypeScript
3938
*.tsbuildinfo
4039
next-env.d.ts
41-
42-
.vercel
43-
44-
.env*.local

CHANGELOG.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Changelog
2+
3+
All notable changes to this project are documented in this file.
4+
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project uses [Semantic Versioning](https://semver.org/).
5+
6+
## [Unreleased]
7+
8+
### Planned
9+
10+
- Upgrade Next.js 15.x → 16.x (deferred CVEs).
11+
- Optional Redis cache layer in front of `/api/certificate-image`.
12+
- Repo comparison — bury two repos side by side.
13+
- Chrome extension — tombstone badge injected on GitHub repo pages.
14+
- Language-specific causes of death ("Died of PHP fatigue", "Last seen in CoffeeScript").
15+
16+
### Out of scope by design
17+
18+
- Private repo support — public data only.
19+
- Accounts / login — the funeral is anonymous.
20+
- Paywalls — coffee button stays, monetization doesn't.
21+
22+
## [1.0.0] — 2026-04-24
23+
24+
First public open-source release of `commitmentissues.dev`.
25+
26+
### Added
27+
28+
- Certificate of Death generator — A4 layout with cause of death, last words, repo age, and derived stats.
29+
- Profile graveyard scanner — Dead / Struggling / Alive grouping with one-click certificate links.
30+
- Live README badge — `/api/badge?username=…` SVG with dead / struggling / alive counts.
31+
- Hall of Fame marquee — curated list of famously abandoned repos with click-to-light wreath counters.
32+
- Multi-format export — A4, Instagram (4:5, 1:1), X (16:9), Facebook (1.91:1), Story (9:16).
33+
- Mobile native share sheet (Web Share API) and desktop fallback (X intent + copy link + downloads).
34+
- Live counters — buried + profiles scanned, persisted in Upstash Redis.
35+
- Top-of-page burial ticker — falls back to Hall of Shame when Redis is empty.
36+
- Random dead repo button (powered by GitHub search).
37+
- `/about` and `/legal` pages with consistent typography and back navigation.
38+
- Algorithmic scoring with curated overrides for famously abandoned repos.
39+
- `next/og` certificate renderer at `/api/certificate-image/[owner]/[repo]` for README embeds.
40+
- Hardened security headers via `next.config.mjs` (CSP, frame ancestors, referrer policy, etc.).
41+
- GitHub issue templates, PR template, CI (`lint`, `test`, `build`), `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, `SECURITY.md`.
42+
- Unit tests for the scoring algorithm.
43+
44+
### Fixed
45+
46+
- Audited the 28 Hall of Fame entries against live GitHub — fixed transferred / renamed orgs (`angular/angular.js`, `facebook/flux`, `joyent/node`, `yahoo/mojito`, `mikeal/request`).
47+
- Removed entries pointing to repos that no longer exist (`nicowillis/ratchet`, `microsoft/winjs`, `adobe/phonegap`).
48+
- Synced curated `KNOWN_REPO_CAUSES` keys in `scoring.ts` to the corrected paths.
49+
- Reset-to-form behavior on the error screen (no longer retries the broken URL).
50+
51+
### Migrated
52+
53+
- Live data backend moved from `@vercel/kv` to `@upstash/redis`.
54+
- Legacy routes (`/pricing`, `/faq`, `/privacy`, `/terms`) redirect to `/` or `/about`.
55+
56+
[Unreleased]: https://github.com/dotsystemsdevs/commitmentissues/compare/v1.0.0...HEAD
57+
[1.0.0]: https://github.com/dotsystemsdevs/commitmentissues/releases/tag/v1.0.0

Group 128.png

-1.21 KB
Binary file not shown.

0 commit comments

Comments
 (0)