AI-powered GitHub contribution intelligence platform. Analyze repositories, issues, pull requests, and portfolio impact with live GitHub data and rule-based portfolio insights.
- Dashboard — GitHub profile overview with repository stats
- Analytics — Language distribution, stars, and activity charts
- Repositories — Search, filter, and explore all public repos
- Issues & Pull Requests — Aggregated views across repositories
- Profile & Portfolio Review — Consistency score, insights, and recommendations
- Leaderboard — Compare top open source contributors by IQ score
- GitHub OAuth — Optional server-side sign-in with JWT (requires OAuth app)
| Layer | Stack |
|---|---|
| Frontend | React 19, Vite, Tailwind CSS, Recharts, Zustand |
| Backend | Spring Boot 3.2, Java 21, Spring Security, JWT, OAuth2 |
| Database | PostgreSQL 15 |
- Node.js 18+
- Java 21+
- Docker (for PostgreSQL)
- Maven (or use the bundled
apache-maven-3.9.6)
docker compose up -dCopy .env.example to .env and fill in values. For username-only mode (no OAuth), you can skip GitHub OAuth credentials.
cp .env.example .envcd backend
mvn spring-boot:runThe API runs at http://localhost:8080.
cd frontend
npm install
npm run devOpen http://localhost:5173.
- Click Connect GitHub on the landing page
- Enter any public GitHub username
- Explore Dashboard, Analytics, Repositories, Issues, PRs, and Profile
- Create a GitHub OAuth App
- Set callback URL to
http://localhost:8080/login/oauth2/code/github - Add
GITHUB_CLIENT_IDandGITHUB_CLIENT_SECRETto.env - Start backend and frontend
- Click Sign in with GitHub on the landing page
OpenSource-IQ/
├── frontend/ # React SPA
│ └── src/
│ ├── pages/ # Dashboard, Analytics, Profile, Leaderboard, etc.
│ ├── services/ # GitHub API clients with caching
│ └── store/ # Zustand auth state
├── backend/ # Spring Boot API
│ └── src/main/java/com/opensourceiq/
│ ├── controller/
│ ├── entity/
│ └── security/
└── docker-compose.yml # PostgreSQL
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /api/public/dashboard |
Public | Sample dashboard stats |
| GET | /api/auth/me |
JWT | Current authenticated user |
| GET | /oauth2/authorization/github |
Public | Start GitHub OAuth flow |
The frontend fetches data directly from the GitHub REST API (60 requests/hour unauthenticated). Analytics and leaderboard data are cached in localStorage for 5–10 minutes to reduce API calls.
MIT