Introduction
Leaderboard System
A flexible, plugin-based leaderboard system for tracking and visualizing contributor activities across multiple data sources.
Overview
The Leaderboard system is designed to:
- Track Activities: Automatically collect and track contributor activities from various sources (GitHub, Slack, etc.)
- Plugin Architecture: Extensible plugin system for adding new data sources
- Static Site Generation: Fast, static websites built with Next.js
- Data Transparency: All data stored in human-readable formats (Markdown, JSONL)
- Self-Hosted: Complete control over your data and infrastructure
Key Features
π Plugin System
Add new data sources by creating simple JavaScript plugins. No need to modify core code.
π Multiple Views
- Overall leaderboard rankings
- Individual contributor profiles
- Activity timelines and breakdowns
- Custom aggregates and metrics
π¨ Customizable Themes
Override the default theme with your organization's branding using a simple CSS file.
π Human-Editable Data
Contributor profiles stored as Markdown files with YAML frontmatterβeasy to edit by hand.
π Static Export
No server required. Deploy to any static hosting service (Netlify, Vercel, GitHub Pages, etc.).
Architecture
The system consists of three main components:
- Plugin Runner: Node.js CLI tool that fetches data from various sources
- Database: LibSQL database for efficient querying during build
- Next.js App: Static site generator that creates the frontend
Data Sources β Plugin Runner β LibSQL Database β Next.js Build β Static Site
Quick Start
# Clone the repository
git clone https://github.com/ohcnetwork/leaderboard.git
cd leaderboard
# Install dependencies
pnpm install
# Generate seed data (for testing)
pnpm db:seed --output=./data
# Run plugin runner
pnpm data:scrape
# Build the site
pnpm build
# Start local preview
cd apps/leaderboard-web
pnpm start
Use Cases
- Open Source Organizations: Track contributor engagement across repositories
- Development Teams: Visualize team member contributions and activities
- Community Building: Recognize and celebrate active community members
- Gamification: Add points and badges to encourage participation