How gyrese/lthhoot works
LTNHoot is a self-hosted, Kahoot-inspired quiz platform. A manager authenticates, selects or edits a quiz, launches a room, and shares its join code; players join, answer live rounds, and see rankings and a podium. The repository separates the web client, Socket.IO handlers and game services, with shared quiz/game types. Major documented capabilities include solo play, AI quiz generation, media search and uploads, folders, guest accounts, remote control, and multilingual UI. Some subsystem links are inferred from names and README descriptions because their implementation was not sampled.
Main entry points: socket-context.tsx Socket context · index.ts Socket server · index.tsx Manager dashboard · round-manager.ts Round manager
Components 26
Web experience
- Manager dashboard
packages/web/src/features/manager/components/ManagerDashboard/index.tsx - Solo quiz
packages/web/src/pages/solo/$quizzId.tsx - Live game screens
packages/web/src/features/game/components/GameWrapper.tsx - Remote control
packages/web/src/features/game/components/remote/RemoteControl.tsx - Socket context
packages/web/src/features/game/contexts/socket-context.tsx - Manager state
packages/web/src/features/game/stores/manager.tsx
Quiz authoring
- Quiz editor
packages/web/src/features/quizz/components/EditorWorkspace.tsx - AI generator
packages/web/src/features/quizz/components/AIGeneratorModal/index.tsx
Realtime backend
- Socket server
packages/socket/src/index.ts - Manager handlers
packages/socket/src/handlers/manager.ts - Game handlers
packages/socket/src/handlers/game.ts - Quiz handlers
packages/socket/src/handlers/quizz.ts - Results handlers
packages/socket/src/handlers/results.ts - Game coordinator
packages/socket/src/services/game/index.ts - Player manager
packages/socket/src/services/game/player-manager.ts - Round manager
packages/socket/src/services/game/round-manager.ts - Power-up manager
packages/socket/src/services/game/powerup-manager.ts - Quiz and config
packages/socket/src/services/config.ts - Game persistence
packages/socket/src/services/persistence.ts
Shared domain
- Shared game types
packages/common/src/types/game/index.ts
External services
- AI service
packages/socket/src/services/ai.ts - Image search
packages/socket/src/services/unsplash.ts
Other components
- Quiz host
- Player
- AI provider
- Image provider
Connections 31
- Quiz host → Manager dashboard: manages quizzes
- Manager dashboard → Socket context: sends commands
- Socket context → Socket server: Socket.IO events
- Socket server → Manager handlers: dispatches
- Manager handlers → Quiz and config: authenticates and reads
- Manager handlers → Manager state: returns config
- Manager dashboard → Quiz editor: opens editor
- Quiz editor → Socket context: quiz operations
- Socket server → Quiz handlers: dispatches
- Quiz handlers → Quiz and config: reads and writes quizzes
- AI generator → Socket context: requests generation
- Socket server → AI service: dispatches AI requests
- AI service → AI provider: generates content
- Quiz editor → Image search: searches media
- Image search → Image provider: searches images
- Quiz host → Live game screens: launches game
- Player → Live game screens: joins and answers
- Live game screens → Socket context: sends game events
- Remote control → Socket context: sends control events
- Socket server → Game handlers: dispatches
- Game handlers → Game coordinator: routes game actions
- Game coordinator → Player manager: manages players
- Game coordinator → Round manager: coordinates rounds
- Round manager → Power-up manager: applies power-ups
- Round manager → Shared game types: uses game contracts
- Player manager → Shared game types: uses player contracts
- Manager dashboard → Results handlers: requests results
- Socket server → Results handlers: dispatches
- Results handlers → Game persistence: reads results
- Round manager → Game persistence: saves game state
- Solo quiz → Socket context: plays quiz