project
CP Dashboard
Turns spreadsheet chaos into a live leaderboard
- 3
- judges unified
- live
- results stream
- 3
- backend services
the problem
My college tracked competitive programming across LeetCode, CodeForces, and CodeChef the way most colleges do: a shared spreadsheet, updated by hand, wrong within a week. Three platforms, hundreds of students, no single answer to "who's actually improving?"
what i built
A web platform that pulls performance from all three judges into one sortable leaderboard. Results don't land in a batch — they stream in live, row by row, so you can watch the board reorder itself as fetches complete.
Under the hood it's three FastAPI services, one per platform, each dealing with that judge's quirks (rate limits, unofficial APIs, inconsistent handles) so the frontend never has to. Next.js + TanStack Table on the front, PostgreSQL keeping history so trends survive the fetch cycle.
how it works
what broke, what held
results
- One leaderboard replacing per-platform spreadsheet tabs
- Live row-by-row result streaming instead of batch refreshes
- History in PostgreSQL — trends, not snapshots
built with