Inspiration

Dozens of public repos build up over the years, and it becomes impossible to remember which ones actually tell a visitor how to reach you and which ones are dead ends. This project turns that manual scroll-through-every-repo check into a one-click scan.

What it does

Type any GitHub username. ReadmeCTA Scanner pulls every public, non-fork repo for that user and checks each README for a contact/hire marker word (default: hire, editable). Results split into two columns -- repos that already have the marker, and repos that don't -- each linking straight to the repo.

How I built it

A single static HTML file: plain JavaScript, no framework, no build step. It calls GitHub's public REST API directly from the browser (/users/{username}/repos then /repos/{owner}/{repo}/readme per repo), base64-decodes each README, and does a case-insensitive substring search for the marker. No backend, no login, no API key.

Challenges I ran into

GitHub's unauthenticated API is capped at 60 requests/hour per IP, which a large repo list can burn through mid-scan. Rather than hide that, the app catches the 403 rate-limit response, shows the user exactly how many repos it checked before hitting the wall, and still renders whatever results it already had instead of throwing the scan away.

What I learned

Planning the scope, PRD, and technical spec before writing any code kept the build tight -- the whole thing stayed a single file because I'd already decided upfront what was in and out of the proof-of-concept boundary.

What's next

Optional authenticated requests to lift the rate limit, and an export of the "missing CTA" list as a ready-to-paste markdown checklist.

Share this project:

Updates

Submission history