DEV Community

Cover image for JUDGELAYER: Building a Hackathon Judging Platform You Can Actually Trust
Tanya Garg
Tanya Garg

Posted on

JUDGELAYER: Building a Hackathon Judging Platform You Can Actually Trust

JUDGELAYER: Building a Hackathon Judging Platform Where Trust Is Part of the Product

Hackathons are exciting.

Hundreds of people build projects, teams submit their ideas, judges review them, and eventually someone wins.

But there is a part of hackathons that doesn't get talked about enough:

Can we actually trust the judging process?

Who can see a submission?

Can one judge see another judge's score?

Can a participant access private judging data?

What happens when the event is over and organizers need to understand how a result was produced?

These questions became the starting point for our DOGFOOD 2026 project:

JUDGELAYER โ€” the trust infrastructure behind hackathon judging

JUDGELAYER

Run the event. Protect the judging. Trust the results.

Instead of building another generic hackathon management dashboard, we wanted to build something around the trust layer behind judging.

๐Ÿ’ก The Idea

Our goal was simple:

Create a self-hosted platform that manages the complete hackathon submission and judging workflow while keeping access controlled and auditable.

The workflow looks like this:

SUBMIT
  โ†“
ASSIGN
  โ†“
REVIEW
  โ†“
PROTECT
  โ†“
AUDIT
  โ†“
EXPORT
Enter fullscreen mode Exit fullscreen mode

There are four main types of users:

  • Visitor โ€” explores public projects
  • Participant โ€” submits and manages a project
  • Judge โ€” reviews assigned projects
  • Organizer โ€” manages the event, judging and results

The interesting part isn't just that each role has a different dashboard.

The important part is that the backend actually enforces what each role is allowed to access.

One workflow. Multiple roles. Controlled access at every layer โ€” this is the Trust Core behind JUDGELAYER.

๐ŸŽฏ Why We Didn't Want a Normal Dashboard

While planning the project, it was tempting to build the usual hackathon platform:

Projects โ†’ Judges โ†’ Scores โ†’ Leaderboard

But that didn't feel enough.

A beautiful interface can hide a serious security problem.

For example, hiding a "View Score" button doesn't mean the score is protected.

If a participant can directly call an endpoint and retrieve judge data, the application isn't secure.

So we made role isolation one of the core architectural principles of JUDGELAYER.

The UI communicates the permissions.

The backend enforces them.

๐Ÿงฉ The Trust Layer

This became the main idea behind our product.

Inside the platform, we wanted users to understand the current security state without making the interface feel complicated.

For example, a judge can see:

TRUST LAYER

โœ“ Assigned projects only
โœ“ Peer scores hidden
โœ“ Participant judging data protected
โœ“ Review actions audited
Enter fullscreen mode Exit fullscreen mode

This is not just decorative UI.

The actual authorization logic lives on the backend.

That distinction was important to us.

๐Ÿ‘€ The Public Experience

We started with the simplest role: a visitor.

No login should be required just to explore an event.

The public gallery lets visitors discover projects and open their public submission information.

A project can contain things like:

  • Project name
  • Description
  • Team
  • Repository
  • Demo
  • Presentation

The idea is to keep the public experience open while keeping private judging information behind the appropriate access controls.

The public project discovery experience.

๐Ÿ“ Participant Workflow

Next comes the participant.

A participant gets their own submission workspace where they can manage their project.

We also added a Submission Health Check concept.

Before submitting, the platform can show whether important fields are ready:

SUBMISSION HEALTH

โœ“ Project name
โœ“ Description
โœ“ Repository
โœ“ Demo
โœ“ Presentation

READY TO SUBMIT
Enter fullscreen mode Exit fullscreen mode

This sounds like a small feature, but it improves the actual submission experience.

Instead of discovering a missing field after submitting, the participant gets feedback before the submission enters the judging pipeline.

โš–๏ธ The Judge Experience

This is where JUDGELAYER really starts to become different.

When a judge logs in, they don't get access to every project's private judging information.

They get a controlled queue of their assigned projects.

A judge can:

  1. Open an assigned project
  2. Review the project evidence
  3. Evaluate judging criteria
  4. Add supporting notes
  5. Submit the review

The interface also makes the judge's scope clear.

YOUR JUDGING SCOPE

Assigned projects only
Peer scores hidden
Private judging data protected
Actions audited
Enter fullscreen mode Exit fullscreen mode

The goal was to make judging feel like a focused review workspace rather than another admin panel.

A judge only sees the projects and information within their assigned scope.

๐Ÿ” The Security Test

One of the most important things we wanted to demonstrate wasn't a UI animation.

It was an actual access-control test.

Imagine Judge A is reviewing Project 42.

Judge B has also reviewed Project 42.

Judge A should not be able to retrieve Judge B's private score.

So we test it.

Judge A
   โ†“
Request Judge B's score
   โ†“
ACCESS DENIED
Enter fullscreen mode Exit fullscreen mode

The important part is that this isn't simply:

"We removed the button."

The backend rejects unauthorized access.

The same principle applies to participants attempting to access private judging information.

This is what we mean when we say:

Role isolation is enforced by the backend, not just represented by the UI.

Role isolation is enforced at the backend, not only hidden in the UI.

๐Ÿง‘โ€๐Ÿ’ผ Organizer Command Center

Organizers need a completely different view.

They need to understand what is happening across the event.

The organizer dashboard brings together:

  • Submission tracking
  • Judge management
  • Project assignments
  • Review progress
  • Results
  • Audit information
  • CSV exports

One feature we particularly liked was the Judge Coverage view.

For example:

PROJECT #042

Judge 01     โœ“ Reviewed
Judge 04     โœ“ Reviewed
Judge 07     โ— Pending

Coverage: 2 / 3
Enter fullscreen mode Exit fullscreen mode

This gives organizers an immediate understanding of which projects still need attention.

The organizer gets a complete view of event progress and judging coverage.

๐Ÿ•ต๏ธ Auditability

Security isn't only about blocking something.

It is also about being able to explain what happened.

That's why JUDGELAYER includes an audit trail.

Instead of showing a completely raw log, we wanted the events to be understandable:

18:42:09
JUDGE-07
Opened Project #042

18:44:31
JUDGE-07
Submitted Review

18:44:32
SYSTEM
Score recorded

18:44:33
ACCESS CONTROL
Unauthorized score access blocked
Enter fullscreen mode Exit fullscreen mode

This creates a timeline of the judging process.

After the event, organizers don't just see the final result.

They can understand the important actions that happened along the way.

Every important judging action becomes part of the event history.

๐Ÿ—๏ธ How We Built It

We kept the architecture intentionally simple and self-hostable.

Frontend

  • React
  • TypeScript
  • Vite
  • Tailwind CSS
  • shadcn/ui

Backend

  • FastAPI
  • Python
  • SQLAlchemy
  • Pydantic

Database

  • SQLite

Deployment

  • Docker
  • Docker Compose

The goal was to make the entire platform runnable locally without depending on external cloud services.

That also made the project easier to test with seeded fixture data.

๐Ÿ”„ Architecture

At a high level, the system looks like:

                โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                โ”‚     FRONTEND    โ”‚
                โ”‚    React + TS   โ”‚
                โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ”‚
                         โ–ผ
                โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                โ”‚      API        โ”‚
                โ”‚    FastAPI      โ”‚
                โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ”‚
              โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
              โ–ผ          โ–ผ          โ–ผ
        AUTH / RBAC    JUDGING     AUDIT
              โ”‚          โ”‚          โ”‚
              โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ–ผ
                  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                  โ”‚   SQLite    โ”‚
                  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
Enter fullscreen mode Exit fullscreen mode

The key design principle is:

Authorization happens before sensitive data is returned.

๐ŸŽจ Designing the Interface

We also didn't want JUDGELAYER to look like a generic hackathon admin panel.

So we created a visual concept around a Trust Command Center.

Instead of filling the screen with dozens of cards, the interface uses:

  • Strong typography
  • Thin borders
  • Compact system metadata
  • Status indicators
  • Clean data tables
  • Focused dashboards
  • A central Trust Layer concept

The UI should communicate:

Security. Control. Transparency.

Not just:

"Here are some statistics."

๐Ÿงช Testing the Important Flows

We focused our testing around the workflows that matter most.

For example:

  Public Gallery
      โœ“

Fixture Project Visible
      โœ“

Closed Event Rejects Submission
      โœ“

Judge Reads Own Score
      โœ“

Judge Cannot Read Peer Score
      โœ“

Participant Cannot Read Judge Score
      โœ“

Organizer Can Export CSV
      โœ“
Enter fullscreen mode Exit fullscreen mode

These aren't just visual features.

They represent actual acceptance scenarios for the platform.

๐Ÿค– AI Helped Us Build Faster โ€” But the Product Had to Work

Like many modern development projects, we used AI-assisted development during the build.

But we didn't want the result to be:

"AI generated a dashboard."

The real test was whether the application could actually perform the workflows we designed.

So we treated AI as a development accelerator โ€” helping with implementation, debugging, UI iteration and documentation โ€” while the final product still had to be tested through the actual application.

That's why our demo focuses on real screens and real interactions, rather than only showing mockups.

๐Ÿšง What We Learned

The biggest lesson from building JUDGELAYER was that security is not a page you add at the end.

It affects the entire application.

The moment you introduce multiple roles, you have to think about:

  • What data can this user see?
  • What actions can they perform?
  • What happens if they directly call an API?
  • What should be recorded?
  • What should remain private?

Thinking about these questions early changed the way we designed both the backend and the interface.

๐Ÿš€ What's Next?

JUDGELAYER could eventually grow beyond a DOGFOOD submission.

Some directions we'd like to explore include:

  • More advanced judge conflict management
  • Better review analytics
  • Custom judging criteria
  • Multi-stage judging
  • Review calibration
  • More detailed audit exploration
  • Organization-level event management

But the foundation would remain the same:

Keep the judging process controlled, transparent and trustworthy.

๐Ÿ Final Thoughts

Building JUDGELAYER made us look at hackathons from a slightly different perspective.

We usually focus on:

Who built the best project?

But before we can answer that question, we need to trust the process that produces the answer.

That's what JUDGELAYER is about.

Not just collecting submissions.

Not just assigning judges.

Not just calculating scores.

But creating a system where every role has the right access, every important action can be traced, and the final results can be trusted.

Submit.
Assign.
Review.
Protect.
Audit.
Export.

That's JUDGELAYER.

Run the event. Protect the judging. Trust the results.

๐Ÿ”— Project

GitHub: https://github.com/Tanya-garg10/JUDGELAYER-Self-Hosted-Hackathon-Submission-Judging-Platform.git

Live Demo: https://judgelayer-self-hosted-hackathon.onrender.com/

Demo Video: https://drive.google.com/file/d/1ThHje2t4vV-GU83m-5o8wF9sB3_hbNaF/view

If you're building hackathon infrastructure or working on systems where access control and auditability matter, we'd love to hear what you think.

Top comments (0)