GitHub-starred-repos dashboard — v0.2. Static SPA + Serverless Search API on Vercel. Repo = single source of truth. No Vercel CLI deploys — pushing to main triggers the deploy.
No GitHub releases. No release tags. Version tracked in CHANGELOG.md only.
fetch_stars.py— pulls all starred repos from GitHub API, categorizes by keyword (word-boundary matched), writesrepos_output.jsonwithpushed_atandarchivedbuild_site.py— bakesrepos_output.jsonintoindex.html(SEO, project matcher, FAQ, view toggle) +llms.txt+llms-full.txt+ per-categoryllms-*.txt+sitemap.xml. Run after everyfetch_stars.pygenerate_assets.py— regeneratesicons/,favicon.ico,og-image.png,manifest.webmanifestfrom design tokens (PIL). Only re-run when brand changesapi/search.js— Serverless REST search endpoint for AI agents, tools, and MCP servers (CORS enabled).github/workflows/sync-stars.yml— runs weekly (cron0 0 * * 0on Sundays) + manualworkflow_dispatch(1–7 days), runs fetch + build, commits freshrepos_output.json+ generated site files if changed. Uses ephemeralsecrets.GITHUB_TOKEN- Site renders
repos_output.json— no backend database
| File | Role |
|---|---|
index.html |
Generated by build_site.py — do not hand-edit. Shell + SEO, project matcher UI, FAQ, category cloud |
app.js |
SPA: fetch → profile → metrics → category tabs → lang filter → sort → grid/compact view → project relevance matcher → local bookmarks |
style.css |
Warm amber "Bloom" aura theme (Hallmark), Inter Tight/Inter/JetBrains Mono/Instrument Serif, OKLCH tokens. Styles for cards, compact rows, project matcher drawer, toast notifications, ambient blooms |
api/search.js |
Vercel Edge/Serverless function for AI agents to query repos with query, category, lang, limit filters |
vercel.json |
cleanUrls, security headers, caching for repos_output.json, /api/*, /llms*.txt endpoints |
repos_output.json |
Generated — never hand-edit. Structure: username/total_repos/generated_at/profile/repos[] |
llms.txt |
Top 100 repos + Topic Taxonomy + Category Manifest for AI search engines |
llms-full.txt |
All repos + metadata |
llms-*.txt |
Category-specific LLM endpoints (llms-ai-agents.txt, llms-dev-tools.txt, etc.) |
sitemap.xml |
Generated by build_site.py with current <lastmod> and all LLM endpoints |
app.js: all repo-derived strings go throughescapeHTML()before template insertion.repo.urlinhreftoo — GitHub API is trusted, keep it that way- No
console.login production code - Git: HTTPS via gh credential manager. Identity:
272530059+AkashPriyadarshii@users.noreply.github.com .omc/,.codegraph/are local tooling junk — never commit (both in.gitignore)- No GitHub releases — version is tracked in
CHANGELOG.mdonly
node --check app.js api/search.js # JS syntax
python -m py_compile fetch_stars.py build_site.py generate_assets.py # Python syntax
python -c "import json; json.load(open('repos_output.json'))" # data parses
python build_site.py # regenerate site after data changes- Live site can lag repo: Vercel edge-caches
repos_output.jsonup tomax-age+ SWR window. A push redeploys, but a cached JSON may serve up to ~1h old — not "real time" - Cached JSON age on Vercel shows as
X-Vercel-Cache: HIT+Ageheader. Diagnose staleness withcurl -sI .../repos_output.json