EvalDesk – Digitizing the Way We Judge


What Inspired This

Every university event I've attended ends the same way - judges scribbling scores on paper, someone punching numbers into a calculator, and a crowd waiting 20 minutes for results that are still sometimes wrong. That bothered me. Not just as a student, but as someone who builds things. There was a clear gap: judging at university events was manual, opaque, and stuck in the past. EvalDesk is my answer to that gap - a platform that makes judging fast, fair, and actually insightful.


What I Learned

This project pushed me beyond tutorials and into real engineering decisions:

  • Designing secure Google OAuth + JWT authentication flows that actually hold up in production
  • Structuring clean, scalable REST APIs with Node.js + Express
  • Implementing role-based access control across three user types: Admin, Judge, and Participant each with completely separate views and permissions
  • Managing complex React state without it becoming a mess
  • Deploying and debugging two separate Vercel services (frontend + backend) that need to talk to each other reliably

How I Built It

Tech Stack:

  • Frontend: React (Vite)
  • Backend: Node.js + Express
  • Database: MongoDB
  • Auth: Google OAuth + JWT
  • Deployment: Vercel (two separate projects)

The flow is clean:

  1. User signs in with Google : no passwords, no friction
  2. Backend validates identity and issues a signed JWT
  3. Every protected route checks that token before responding
  4. Judges score teams through a simple, distraction-free interface
  5. Scores are aggregated instantly and stored in MongoDB
  6. Admins see everything : live scores, analytics, and full event control , on a real-time dashboard

Separating the frontend and backend deployments wasn't just an architectural choice it made the system cleaner, more scalable, and easier to maintain independently.


Challenges I Faced

Honestly, the hardest part wasn't building it was deploying.

  • OAuth redirect URI mismatches that only appeared in production, not locally
  • CORS errors between two different Vercel domains that took real debugging to resolve
  • Environment variables that had to be carefully managed across two separate projects without ever leaking sensitive keys
  • Token expiry edge cases : handling what happens when a judge's session expires mid-scoring
  • Role-based rendering in React : showing the right UI to the right user without exposing protected logic on the client side

Every one of these issues taught me something local development never could. Production is a different beast, and shipping EvalDesk made me a better engineer.


What EvalDesk Actually Does

EvalDesk replaces paper sheets and post-event spreadsheets with a structured, real-time digital workflow. Judges score from any device. Results are instant and transparent. Admins have full visibility.

But more than the features : this is a solution that's ready to use. Real events. Real judges. Real results.

Future versions are already mapped out: AI-generated feedback for participants, predictive performance analytics, and exportable reports for event organizers.

This isn't just a hackathon project. It's the beginning of how university events should run.

Built With

  • api
  • css
  • css-frameworks-&-libraries-react-(vite)
  • express.js
  • express.js-database-mongodb
  • git
  • github
  • google
  • html
  • javascript
  • json-web-tokens-(jwt)-cloud-&-deployment-vercel-(frontend)
  • jwt
  • mongodb
  • mongoose
  • mongoose-authentication-google-oauth-2.0
  • node.js
  • oauth
  • postman
  • react
  • rest
  • rest-api-(custom-built)-tools-&-dev-environment-git
  • tailwindcss
  • vercel
  • vercel-(backend-?-serverless-functions)-apis-&-services-google-identity-api
  • vite
  • vs-code
Share this project:

Updates

Submission history