🏆 A GitHub Pages website displaying commits and pull requests Hall of Fame.
- 📊 Interactive Charts: Beautiful bar charts showing user rankings and line charts for monthly trends
- 🎯 Flexible Filtering: Filter by year, month, and metric type (commits or pull requests)
- 🌙 Dark Theme: Modern glassmorphism design with smooth animations
- 🔄 Auto-Updated: Data is fetched daily via GitHub Actions
- 📱 Responsive: Works great on desktop, tablet, and mobile
Configure which GitHub organizations to track using the GH_ORGS repository variable. See Configuration for details.
Visit the GitHub Pages deployment: https://froozeify.github.io/git-ladder/
-
Clone the repository:
git clone https://github.com/froozeify/git-ladder.git cd git-ladder -
Install dependencies:
npm install
-
Serve locally:
npm run serve
-
Open
http://localhost:3000in your browser
To manually fetch the latest data from GitHub:
-
Create a
.envfile from the example:cp .env.example .env # Edit .env with your configuration -
Run the fetch script:
npm run fetch-data
The script automatically loads configuration from .env.
git-ladder/
├── .github/workflows/
│ └── fetch-and-deploy.yml # Deployment workflow (Push & Schedule)
├── data/
│ └── stats.json # Generated statistics (not committed)
├── scripts/
│ └── fetch-stats.js # Data fetching script (auto-loads .env)
├── src/
│ ├── css/
│ │ └── style.css # Styling
│ └── js/
│ ├── DataService.js # Data loading/processing
│ ├── ChartManager.js # Chart.js wrapper
│ └── App.js # Main application
├── index.html # Main page
├── .env.example # Example configuration
└── package.json
Follow these steps to configure your repository:
- Go to your repository's Settings → Pages
- Under "Build and deployment", set Source to GitHub Actions
- Go to Settings → Secrets and variables → Actions
- Click the Variables tab
- Click New repository variable
- Add:
- Name:
GH_ORGS - Value: Comma-separated list of organizations (e.g.,
glpi-project,glpi-network)
- Name:
- Click New repository variable
- Add:
- Name:
GH_YEARS - Value: Number of years to fetch (default:
3)
- Name:
For tracking private repositories:
- Create a Personal Access Token with
reposcope - Go to Settings → Secrets and variables → Actions
- Click the Secrets tab → New repository secret
- Add:
- Name:
GH_PAT - Value: Your personal access token
- Name:
Note: Secret and variable names cannot start with
GITHUB_, which is why we useGH_prefix.
For local data fetching:
# Create and configure .env file
cp .env.example .env
# Edit .env with your GH_ORGS, GH_YEARS, and GH_TOKEN
# Run the fetch script
npm run fetch-data- HTML5 / CSS3 / JavaScript (ES6+): No build step required
- Chart.js: Beautiful, responsive charts
- GitHub Actions: Automated data fetching and deployment
- GitHub Pages: Free static hosting (artifact-based deployment)
- Octokit: Official GitHub API client
The deployment uses GitHub's artifact-based Pages deployment:
- Daily Trigger: GitHub Actions runs the workflow at midnight UTC
- Data Fetch: The script fetches commits/PRs from configured organizations
- Build Artifact: The entire site (including generated data) is packaged
- Deploy: The artifact is deployed directly to GitHub Pages
This approach means:
- ✅ No data files committed to the repository
- ✅ Fresh data on every deployment
- ✅ Clean git history
- Fork the repository
- Create branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Chart.js for the visualization library
- Inter Font for the typography