π 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:
5)
- 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 6:00 UTC daily
- 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
GitHub may disable scheduled workflows after 60 days of repository inactivity. If the daily data refresh stops working:
- Check if the workflow is disabled: Go to Actions β Click the workflow β Look for a yellow banner indicating it's disabled
- Re-enable if needed: Click "Enable workflow" button
- Ensure repository activity: Any push, issue, or PR activity resets the 60-day counter
You can also manually trigger the workflow anytime via Actions β Fetch Data and Deploy to Pages β Run workflow.
For more details, see GitHub's documentation on disabling workflows.
- 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