Home Work About Skills Contact
case study · 02

College Sports Management App

A full-stack platform built for GEC Jhalawar’s annual sports event — live scores, rosters, and match history in one system, rebuilt twice before it was right.

Role
Solo build — backend, frontend, infra
Stack
FastAPI, React, Tailwind, PostgreSQL
Scope
92 source files, Docker-deployed
Context
GEC Jhalawar sports event
the problem

College sports events run on group chats and printed sheets.

GEC Jhalawar’s annual sports event involves multiple sports, rosters, and a schedule that changes as matches happen. Tracking live scores and results across all of it usually means a mix of WhatsApp updates and a physical scoresheet — accurate, but slow to check and easy to lose track of mid-event.

the approach

Two builds. The second one is the one that stuck.

I actually built this twice. The first version was a Tkinter desktop app — comprehensively rewritten at one point with modern animations, per-sport scoring, roster management, and toast notifications. It worked, but a desktop app didn’t fit how the event actually needed to be checked — from different devices, by different people, at the same time.

The second build moved to the web: a FastAPI backend, a React + Tailwind frontend, PostgreSQL for storage, and WebSockets so score updates push out live instead of waiting on a page refresh. The whole thing runs in Docker, across 92 source files by the time the backend scaffold was complete.

FastAPIReactTailwind CSSPostgreSQLWebSocketsDocker
what got in the way

Losing the files and starting over.

Partway through the web rebuild, the project files were lost. Rather than reconstruct piece by piece from memory, I rebuilt it as a second, more deliberate pass — which is part of why the backend scaffold ended up more complete and better structured than the first attempt.

issue — bcrypt version pinning conflicts breaking auth on fresh installs.
fix — locked compatible bcrypt/passlib versions in the dependency file.
issue — project files lost mid-build on the web rebuild.
fix — rebuilt the backend scaffold from scratch with a cleaner file structure.
where it stands

Backend scaffold complete, live scoring in place.

The rebuilt web version reached a complete backend scaffold with live score updates over WebSockets. The Tkinter version remains a fully working standalone alternative for offline use during the event itself.

let’s talk

Have something worth building? Let’s talk it through.