Live leaderboard ranking Claude Code projects by weekly star momentum.
jerrysoer.github.io/ship-ranked
Every day a cron job snapshots GitHub star counts for ~400 projects built with Claude Code. The chart shows stars gained over a rolling 7-day window. A repo with 12 total stars but +10 this week ranks above a repo with 500 total stars but only +2.
No algorithm. No editorial picks. Just what people are starring right now.
GitHub API ──> pipeline.js ──> Supabase ──> React SPA
(Vercel cron) (Postgres) (GitHub Pages)
Frontend: React 19 + Vite SPA on GitHub Pages Backend: Vercel serverless functions (cron, OG images, share pages) Database: Supabase with row-level security (public read, server write)
src/
App.jsx Main SPA — podium, chart rows, filters, deep-link
lib/supabase.js Client-side Supabase (anon key, read-only)
index.css Theme variables + animations
api/
cron/fetch-projects.js Daily pipeline trigger (CRON_SECRET auth)
og.js Dynamic OG image (SVG)
share.js Share page with meta tags + redirect
lib/
pipeline.js Core logic — fetch, filter, rank, snapshot
scripts/
fetch-projects.js Local CLI runner for testing the pipeline
npm installCreate .env.local:
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your-anon-key
Run the Supabase schema:
# Paste supabase-schema.sql into your Supabase SQL editorStart dev server:
npm run devThe app works without Supabase — it falls back to mock data.
The API routes need these in Vercel project settings:
SUPABASE_URL
SUPABASE_SERVICE_ROLE_KEY
GH_DATA_TOKEN # GitHub PAT for API searches
CRON_SECRET # Auto-set by Vercel for cron auth
The daily cron (0 14 * * * — 2 PM UTC) runs lib/pipeline.js:
- Searches GitHub for repos with
CLAUDE.md,topic:claude-code, ortopic:vibe-coding - Filters for active projects (pushed in last 90 days, description >10 chars)
- Compares current stars against the oldest snapshot in a 7-day window
- Ranks by
stars_gained_7ddescending - Computes rank deltas vs. yesterday
- Upserts to
ranked_projects+ranked_snapshots
Run locally:
npm run fetchShare pages redirect to the SPA with a project param:
https://ship-ranked.vercel.app/p/owner--repo
→ redirects to
https://jerrysoer.github.io/ship-ranked/?project=owner--repo
→ scrolls to project, gold highlight for 3s
Frontend auto-deploys to GitHub Pages on push to main via .github/workflows/deploy.yml.
Backend auto-deploys to Vercel on push to main.
React 19, Vite 6, Supabase, Vercel, GitHub Pages, Umami Analytics