← ALL WORK
CASE STUDY · BASF · INTRANET · SECURITY DAY UAE & EGYPT 2024

Quiz Portal

A live, team-based quiz platform that ran on stage at two BASF Security Day events — real-time presence, per-team question shuffling, and a session engine that ends the game exactly when it should.

CLIENT
ROLE
Sole developer, end to end
STACK
NestJS · Socket.IO · React
HOSTING
Self-managed AWS EC2
THE PROBLEM

A live event quiz has one unforgiving requirement: it has to work in the room, in real time, in front of everyone — teams copying from each other, someone's browser dying mid-question, the clock running out with answers half-submitted. Consumer quiz apps handle none of that gracefully. This one had to, twice, on stage.

SCREENSHOT SLOT — LIVE SESSION VIEW (CLIENT-SAFE CAPTURE PENDING)
WHAT IT DOES

Sessions in seconds

The host sets duration and team count; the system generates a join code and each team gets its own session view. No accounts, no app installs — the right call for a room of 100 people on event wifi.

Anti-copying by design

Every team draws the same questions from the bank in a different shuffle — glancing at the next table's screen tells you nothing. Scoring runs +5 / −2 with negative marking, so guessing costs.

Live presence on stage

A Socket.IO gateway tracks which teams are online, in progress, or finished — the host watches the whole room's state in real time, projected, while the countdown runs.

Nobody stalls the game

A scheduled job checks every active session: when the timer expires, unfinished teams are auto-submitted; when every team finishes early, the session closes itself. The host never has to make that call — and full history keeps every team's answers reviewable afterwards.

UNDER THE HOOD

NestJS + Prisma: a quiz module owning session creation, question randomization and distribution, answer submission, scoring, and history — with a Socket.IO WebSocket gateway for presence and a cron-based lifecycle service watching every active session on a five-second tick. JWT guards separate hosts from teams.

React + TypeScript on TanStack Router, split into a host dashboard and a dedicated quiz-taking flow with a live countdown. Runs on its own EC2 instance, provisioned and managed solo.

Need something that can't fail in the room?

Real-time, live-audience software is a different discipline. This one shipped twice.

TELL ME ABOUT IT