-
-
This is the home page of EvalDesk, from where users can sign in and explore all the features.
-
This section showcases all the features that EvalDesk provides to organizations conducting university events.
-
This section enables the admin to create and manage events, assign juries, oversee teams, and monitor analytics.
-
This is where admin puts all the csv data of the teams and portal converts it and gives each team a unique QR code for easy Evaluation
-
This is the page where the admin allocates teams to juries by domain and team category mapping.
-
This is the Event Analytics page where the admin can view performance metrics, ensure fairness, and declare event winners.
-
This section is restricted to jury members, allowing them to submit scores by scanning a team’s QR code directly in the portal.
-
This is the Evaluation Board where juries enter, review, and submit scores for teams.
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:
- User signs in with Google : no passwords, no friction
- Backend validates identity and issues a signed JWT
- Every protected route checks that token before responding
- Judges score teams through a simple, distraction-free interface
- Scores are aggregated instantly and stored in MongoDB
- 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
- 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
Log in or sign up for Devpost to join the conversation.