O2sa/DevImpact
O2sa/DevImpact has 38 GitHub stars and 42 forks. GitHot measured +1 stars in 24 hours. Last checked 2026-11-14 20:01 UTC. Last push 2026-11-13.
What you can do
- 🔍 Compare two GitHub users side-by-side
- 📊 Visual score breakdown (charts & insights)
- 🧠 Smart ranking system
- 🌍 Localization support (EN / AR)
Measured star growth
- in 24h
- +1
- in 7 days
- Collecting history
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
About
A smart tool to compare developers by real impact in open-source — not just stars and followers
Web & AppsREADME.md
Original
🚀 DevImpact
DevImpact is an open-source platform that compares software developers based on their real impact in the open-source ecosystem — not just raw numbers.
It evaluates developers using a smart scoring system that considers:
- Repository quality 📦
- Pull request impact 🔀
- Community contributions 💬
🌟 Why DevImpact?
Traditional metrics (followers, stars, commit counts) are often misleading.
DevImpact focuses on:
- ✅ Quality over quantity
- ✅ Real contributions to valuable projects
- ✅ Fair comparison between developers
🧠 Scoring System Overview
Each developer is evaluated using three main scores:
📦 Repo Score (Builder Impact)
Measures the quality and impact of repositories owned by the user.
Factors include:
- Stars ⭐
- Forks 🍴
- Watchers
🔀 PR Score (Contribution Impact)
Measures contributions to other developers' repositories.
✔ Only merged PRs are counted ✔ PRs to the user's own repositories are excluded
Factors include:
- Target repository quality
- PR size (additions/deletions)
- Repository popularity
- Contribution diversity
💬 Contribution Score (Community Impact)
Measures community engagement.
Includes:
- Issues opened in external repositories
- Discussions participation
⚠️ Does NOT include commits or PRs (to avoid duplication)
🏆 Final Score
The final score is a weighted combination:
Final Score =
0.45 × Repo Score +
0.45 × PR Score +
0.10 × Contribution Score
👉 The ContributionScore is capped to prevent abuse.
⚖️ Key Design Principles
- ❌ No self-inflation (own PRs excluded)
- 📉 Diminishing returns to prevent spam
- 🎯 External impact is prioritized
- ⚖️ Balanced scoring between builders and contributors
🖥️ Features
- 🔍 Compare two GitHub users side-by-side
- 📊 Visual score breakdown (charts & insights)
- 🧠 Smart ranking system
- 🌍 Localization support (EN / AR)
- ⚡ Fast API powered by GitHub GraphQL
- 🧩 Extensible scoring system
🛠️ Tech Stack
- Framework: Next.js (App Router, Server & Client Components)
- Language: TypeScript
- Styling: Tailwind CSS
- Data & APIs: GitHub GraphQL API via Octokit
- Database & Cache: PostgreSQL & Redis (read-through cache)
- Visualizations: Recharts
- Testing: Vitest
🏛️ Architecture & System Design
DevImpact is structured around a Feature-Driven Scalable Architecture (src/features/*, src/lib/*, src/components/*, src/app/*).
For full details on the system design, directory structure, module boundaries, and step-by-step contributor guides, see the Architecture Guide (ARCHITECTURE.md).
🚀 Getting Started
⚡ Option A: Run Full Platform via Docker (Fastest)
Run the entire platform (Web App UI + PostgreSQL + Redis) in 2 simple steps:
# 1. Copy environment template and set GITHUB_TOKEN
cp .env.example .env
# 2. Start full platform
docker compose -f ops/docker/docker-compose.yml up -d --build
Then open http://localhost:3000 in your browser!
📦 Option B: Run Locally with Node.js & pnpm
Install dependencies:
pnpm installConfigure environment:
cp .env.example .envStart local database & Redis:
pnpm db:up && pnpm redis:upRun development server:
pnpm run devCalculate leaderboard scores manually:
pnpm leaderboard:calculate
Worldwide Leaderboard
/leaderboard/worldwide ranks users from every country together. The number of users shown is controlled at runtime by WORLDWIDE_LEADERBOARD_DISPLAY_LIMIT (default 100; missing, non-numeric, zero or negative values fall back to the default). Country leaderboards keep using LEADERBOARD_DISPLAY_LIMIT (default 500).
Leaderboard Worker & Infrastructure
The leaderboard score updates run via a dedicated background worker container using Docker & Supercronic.
For complete local setup, Docker Compose instructions, GHCR publishing, and VPS deployment documentation, see ops/README.md.
# Quick worker setup (pulls & runs published image)
cp .env.example .env
docker compose -f ops/docker/leaderboard-compose.yml pull
docker compose -f ops/docker/leaderboard-compose.yml up -d
🌍 Localization
- Supported languages: English 🇺🇸 (LTR), Arabic 🇸🇦 (RTL)
- Automatically detects user language via browser & cookies
- Allows manual switching with instant direction toggling
- Easy to add new languages via
src/locales/(validated withpnpm validate-locales)
🤝 Contributing
Contributions are welcome! Check out our Contributing Guide (CONTRIBUTING.md) and Architecture Guide (ARCHITECTURE.md) to get started.
How to contribute:
- Fork the repository
- Create a feature branch
- Run tests and type checks (
pnpm test && npx tsc --noEmit) - Commit your changes
- Open a pull request
Contribution ideas:
- Improve scoring algorithm
- Add new metrics
- Enhance UI/UX
- Add new languages 🌍
⚠️ Limitations
- GitHub API rate limits
- Some private contributions are not accessible
- Scoring system is heuristic (not perfect)
💡 Inspiration
DevImpact was created to answer a simple question:
“Who really has more impact in open-source?”
⭐ Support
If you like this project:
- If you find this project useful, give it a star ⭐ — it helps more developers discover DevImpact and supports the project’s growth.
- 🐛 Report issues
- 💡 Suggest features