~/gurukrithick
all projects

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

FastAPINext.jsPostgreSQLPythonTanStack TableTailwind CSS