A static, secure, and automated leaderboard for tracking GitHub contributions across repositories and organizations.
- Git-Scraping: Data is fetched securely via GitHub Actions. No tokens are exposed to the client.
- Static Site: Built with React + Vite, deployable anywhere (GitHub Pages, Netlify, S3).
- Configurable: Easily track specific repos, organizations, or users via a JSON config.
- Automated: Updates automatically on a schedule.
You have two options for configuration:
Option A: File-based (Standard)
Edit leaderboard.config.json in this repository.
{
"repos": [
"facebook/react",
"vercel/next.js"
],
"orgs": [
"google"
],
"users": ["dnouv", "other-user"],
"startDate": "2025-12-01"
}Note: If users is empty, all contributors are tracked. If populated, only listed users are tracked.
Note: startDate filters contributions created after this date.
Option B: Issue-based (No Commits) To avoid polluting your commit history when adding users:
- Create a new Issue in your repository.
- Add the label
leaderboard-configto it. - Paste your JSON config inside a code block in the issue body:
{ "repos": ["facebook/react"], "orgs": [], "users": ["new-user-1", "new-user-2"], "startDate": "2025-12-01" } - The workflow will automatically prefer this issue's content over the file.
- Go to your Repository Settings > Secrets and variables > Actions.
- Add a New Repository Secret named
GITHUB_TOKEN.- Note: The default
GITHUB_TOKENprovided by Actions might be sufficient for public repos, but for private repos or higher rate limits, use a Personal Access Token (PAT).
- Note: The default
- Install dependencies:
npm install - Create a
.envfile withGITHUB_TOKEN=your_token - Fetch data:
npm run update-data - Start app:
npm run dev
The .github/workflows/update-leaderboard.yml workflow is a complete CI/CD pipeline that:
- Runs every 6 hours (or manually).
- Fetches latest data using your config and saves it to
public/data.json. - Commits the data back to the repo (Git-Scraping history).
- Builds the static site (React + Vite).
- Uploads Artifacts:
static-site: The fully built website (HTML/CSS/JS), ready to host anywhere.data-backup-{run_id}: A standalone copy of the fetched data.
You can download these artifacts from the "Actions" tab in your repository.