GitStat
GitHub contributor health dashboard — visualise team velocity, commit patterns, and AI-generated contributor insights.

Overview
GitStat is a GitHub contributor health dashboard built to surface team velocity, burnout signals, and AI-generated insights about individual contributors. It was built under hackathon conditions (36 hours) and later shipped to production at git-stat-olive.vercel.app.
Problem Statement
Engineering teams lack real-time visibility into contributor health and code velocity. Burnout often goes undetected until it's too late. GitStat addresses this by aggregating GitHub activity data into an actionable health score per contributor.
Project Context
Unimerge Hackathon — Runner-Up
Architecture
React + Vite SPA on the frontend, Express + Node.js REST API on the backend (deployed to Render). GitHub OAuth handles secure authentication. Supabase (PostgreSQL) stores user sessions and cached contributor data. Gemini 1.5 Flash generates AI summaries of contributor activity.
Technical Decisions
- →GitHub OAuth instead of PAT tokens — ensures user-scoped data access without exposing repo secrets
- →Supabase for auth session storage — avoided rolling a custom session layer under time pressure
- →Gemini 1.5 Flash over GPT-4 — cost-free tier with sufficient context window for contributor summaries
- →Vite over CRA — faster cold starts during iterative hackathon development
- →Express CORS middleware configured per-origin — required to allow the Vercel frontend to call the Render backend across different domains
Key Outcomes & Contributions
Full analytics dashboard with GitHub OAuth, contributor health scoring, and AI-generated summaries. Resolved complex CORS and OAuth deployment issues at speed.
Challenges
- !CORS errors between Vercel-deployed frontend and Render-deployed backend — resolved by adding dynamic origin allowlist in Express CORS config
- !GitHub OAuth redirect URI mismatch in production — production callback URL was not registered, required adding the Vercel domain to GitHub OAuth App settings
- !GitHub API rate limits — implemented response caching in Supabase to avoid repeated calls within the same session
- !Burnout prediction heuristic — designed a composite scoring function based on commit frequency variance, PR merge latency, and review-to-commit ratio
Learnings
- ✦OAuth callback URIs must be registered for every deployment environment — staging and production need separate entries
- ✦CORS debugging is significantly easier with structured logging on the Express layer
- ✦Hackathon deployments benefit from keeping frontend and backend on the same domain or using a reverse proxy
- ✦Gemini's API quota is generous enough for demo-scale AI features at zero cost
