Find the GitHub repos people will be talking about next.
UND-RDR is a live discovery index for underrated open-source projects: 1,000 active repos under 1,000 stars, ranked for momentum, usefulness, and that "wait, why is nobody talking about this?" feeling.
Open the live site · Browse the data · Submit a repo
GitHub is enormous. The best small projects usually do not look famous yet: they have a sharp README, a weirdly useful idea, a burst of stars, a maintainer shipping fast, or a niche that suddenly starts mattering.
UND-RDR watches for those signals and turns them into a fast, editorial browsing surface.
- Spotlight first: the default feed prioritizes momentum-heavy, near-1K, recently active, high-signal repos.
- Actually under the radar: the active shelf stays under 1,000 stars, with graduates preserved separately.
- Fast discovery loops: open a repo, inspect signal, jump to related projects, save it, keep going.
- Useful categories, not taxonomy cosplay: AI Agents, MCP, Memory / RAG, Local Models, macOS, Browser Automation, Dev Tools, Security, Data / Docs, and Voice / Media.
- Private collecting: GitHub sign-in unlocks a personal Watchlist and named Collections without touching the public dataset.
- Reviewed data flow: public submissions create review issues; automation opens PRs instead of quietly mutating production data.
| Surface | What it is for |
|---|---|
| Discover | The main feed: spotlight, Fresh, Rising, Hidden, Near 1K, and Graduated views |
| Repo cards | Stars, momentum, status, category, save actions, and direct GitHub links |
| Detail drawer | Longer context, README preview, related repos, and next/previous browsing |
| Profile | Private Watchlist and Collections for signed-in users |
| Data | Dataset health, validation status, source files, fastest risers, and archives |
| Submit | Protected intake for repos that should be reviewed |
active repos: 1000
active under 1K: 1000
archive repos: 193
risen repos: 32
duplicate ids: 0
npm install
npm run devUseful checks:
npm run build
npm run lint
npm run validate:data| Status | Meaning |
|---|---|
| Underrated | Still under 1,000 stars |
| Rising | Growing quickly or showing strong momentum |
| Near 1K | Close to crossing the 1,000-star threshold |
| Crossed 1K | Graduated from underrated |
| Archived/Inactive | Unavailable, archived, disabled, or stale |
The active dataset lives at:
public/data/all_repos.json
Archive shelves live at:
public/data/archive_repos.json
public/data/risen_repos.json
The app protects this file as the source of truth:
- raw repo data is not rewritten by the public UI,
- submissions do not directly mutate the dataset,
- accepted submissions go through a reviewer command,
- daily GitHub refreshes open PRs for review,
- validation checks repo count, required fields, and duplicate ids.
UND-RDR has live GitHub sign-in through Supabase Auth. Signed-in users can save repos to a private Watchlist and create named Collections from the Profile workspace. The account tables use row-level security, so each user can only read and manage their own saved repos.
The public dataset is still static and protected. Account actions never mutate public/data/all_repos.json.
Implementation notes:
src/lib/accountStorage.ts
docs/supabase-auth-collections.md
Public submissions go through the live endpoint:
/api/submit-repo
The endpoint:
- accepts full GitHub repo URLs,
- blocks invalid URLs,
- blocks repos already in the dataset,
- blocks repos already waiting in an open review issue,
- creates a GitHub issue labeled
undrdr-submissionandneeds-review, - never changes the live dataset directly.
Public contact is submit@undrdr.com. DNS and mailbox readiness are tracked in:
docs/email-intake.md
Reviewer guide:
SUBMISSIONS.md
Preview an accepted issue:
npm run submissions:add -- --issue 12 --dry-runApply an accepted issue:
npm run submissions:add -- --issue 12The script fetches GitHub metadata, refuses duplicates, writes a backup, appends one normalized repo record, validates data, comments on the issue, labels it accepted plus added-to-index, and closes the issue.
Mark a submission that needs more information:
npm run submissions:review -- --issue 12 --outcome needs-data --comment "Need more signal before accepting."Close a duplicate or rejected submission:
npm run submissions:review -- --issue 12 --outcome duplicate --comment "Already tracked or already pending."
npm run submissions:review -- --issue 12 --outcome rejected --comment "Not a fit for UND-RDR right now."For owner-curated additions, paste GitHub links into:
data/repo-candidates.txt
Preview candidates:
npm run candidates:checkAdd valid new candidates:
npm run candidates:addThe candidate workflow fetches live GitHub metadata, skips duplicates, writes a backup, appends only new repos, and runs validation. Details are in:
docs/repo-candidates.md
Recent curated batches:
data/under-the-radar-github-repos-100-20260524.txt
data/next-100-ai-tooling-candidates-20260521.txt
The May 24 CSV batch was parsed from /Users/kika_hub/Downloads/under_the_radar_github_repos_100.csv. The importer checked 100 repos, added 91 new candidates, skipped 9 already tracked repos, and later shelf rotation restored the active public dataset to the 1,000-repo cap.
The May 21 batch added 100 under-the-radar AI tooling repos, moving the protected dataset from 913 to 1,013 repos.
The private browser Curator page at /#/curator is protected by the production CURATOR_ACCESS_TOKEN environment variable. It is for owner batch intake only and still creates review issues instead of editing the live dataset directly.
The GitHub Actions workflow at:
.github/workflows/github-repo-check.yml
runs daily and can also be triggered manually. It checks all repos, updates stars/status signals, validates the dataset, and opens an update PR from:
automation/github-repo-snapshot
It does not push dataset changes directly to main.
Each update PR includes a review summary with new 1K graduates, near-1K repos, fastest risers, and unavailable or failed GitHub checks. Pre-update backups are uploaded as short-lived workflow artifacts, while only the dataset and public report are committed.
Install dependencies:
npm installRun the app:
npm run devBuild:
npm run buildValidate the dataset:
npm run validate:dataRun a sample GitHub metadata check:
npm run check:github:sampleRun the full GitHub metadata check locally as a dry run:
npm run check:githubApply a full local GitHub metadata refresh:
npm run check:github:apply| Path | Purpose |
|---|---|
src/App.tsx |
Main discovery UI and client-side interactions |
src/App.css |
Visual system, responsive layout, cards, mobile polish |
src/lib/accountStorage.ts |
Optional Supabase-backed account storage with local fallback |
api/submit-repo.ts |
Protected repo submission intake |
public/data/all_repos.json |
Protected source dataset |
public/data/update-report.json |
Latest GitHub check report |
public/llms.txt |
AI-answer summary for GEO crawlers |
public/ai-summary.json |
Machine-readable site and dataset summary |
scripts/check-github-repos.mjs |
Daily metadata refresh logic |
scripts/add-submission-to-dataset.mjs |
Accepted submission workflow |
scripts/import-repo-candidates.mjs |
Private curator batch-add workflow |
scripts/audit-prune-candidates.mjs |
Read-only prune review audit |
scripts/validate-data.mjs |
Dataset validation |
docs/data-schema.md |
Recommended data schema |
docs/domain-readiness.md |
Domain migration notes |
docs/launch-checklist.md |
Launch and move checklist |
docs/seo-geo.md |
SEO/GEO metadata and AI crawler notes |
docs/supabase-auth-collections.md |
Account, Watchlist, and Collections backend notes |
UND-RDR is live at:
https://undrdr.com
The project previously lived under akaKika.com/undrdr. Keep legacy redirects alive while search, social previews, and external links settle.
UND-RDR exposes human and AI-readable discovery surfaces:
index.htmlincludes canonical metadata, Open Graph/Twitter cards, WebSite/WebApplication/Dataset/FAQ JSON-LD, and links to AI summary files.public/llms.txtgives answer engines a direct summary, dataset snapshot, categories, FAQ, and citation wording.public/ai-summary.jsonprovides a structured machine-readable summary of the entity, dataset, categories, features, and trust signals.public/sitemap.xmlpoints to the site, AI summary files, and public data endpoints.src/main.tsxloads Google Analytics only whenVITE_GA_MEASUREMENT_IDis configured.
- React
- TypeScript
- Vite
- Pixi.js
- Vercel
- Supabase Auth and Postgres
- GitHub Actions
UND-RDR should feel like a curated discovery system: clean, fast, editorial, data-first, and useful. It should help people move from one interesting GitHub project to the next without overwhelming them.
