Back to projects

Real Time Multiplayer

Quizmo

A Kahoot-style multiplayer quiz platform built for Lithuanian community events. Players join via QR code, compete in real time, and see live leaderboards.

Quizmo home screen with topic picker
Home screen with 11 quiz topics including daily news

Status

Live

Platform

Web (any device)

Frontend

Vercel

Backend

Hetzner VPS

Why I built this

As president of the Lithuanian Youth Society in Denmark, I needed an interactive quiz tool for community events. Kahoot's free tier was too limited and English-only. I built Quizmo for full control: Lithuanian language, custom scoring, and themed content about our culture, history, and sports.

How it works

1

Pick topics and game mode

Game mode selection
4 game modes: Classic, Elimination, Team, Survival
Play mode selection
Big screen for events or play on phones
2

Players join and pick avatars

Game lobby with QR code
Room code and QR code for instant join
Avatar picker
Custom avatar builder with characters and backgrounds
3

Real time gameplay with power-ups

Gameplay with power-ups and timer
Kahoot-style answers with Freeze, Shield, and 2x Points
News quiz question
Daily news quizzes auto-generated via Claude AI
4

Results, reactions, and podium

Round results
Live scores after each question
Leaderboard
Streak tracking and rankings
Final podium
Animated podium with final scores

Key features

5 game modes

Classic, Elimination, Team, Survival (single-player with lives and accelerating timer)

Power-ups

Freeze, Shield, Double points

Bilingual (EN/LT)

Server-side translation, zero flash, cached batch requests

Daily news quizzes

7 topics auto-generated from BBC/Reuters/NYT via Claude AI

7 question types

Standard, bluff, audio, video, fastest-finger, year-guesser, wager

PWA + quiz editor

Installable on mobile, create and edit quizzes in browser

Tech stack

Frontend

Next.jsReactTypeScriptTailwind CSS

Real time

Node.jsSSE

Started SSE, migrated to WebSocket for persistent connections

AI and APIs

Claude AIGoogle Translate

Infrastructure

VercelHetzner

Architecture

Dual deploy: Next.js on Vercel, WebSocket multiplayer server on Hetzner VPS (PM2 managed). Vercel rewrites proxy /mp/* requests for free HTTPS.

Started with SSE, migrated to WebSocket to solve Vercel's 25s serverless timeout. Persistent connections with auto-reconnect.

Clock skew correction: server sends its timestamp with each question so all devices show the same countdown.

What I learned

  • -Real-time multiplayer needs explicit handling for race conditions, disconnects, and clock skew.
  • -SSE is underrated. Simpler than WebSockets and works great behind proxies.
  • -Building for a real community gives you feedback loops you can't get from side projects nobody uses.
Next.jsReactTypeScriptTailwind CSSNode.jsSSEClaude AIGoogle TranslateVercelHetzner