How shadrackkimutai/questly works
Questly is a self-hosted, real-time quiz platform: a host configures and starts a game, players join with a room code and answer questions, and the host can review results. The map separates the web client, socket event handling, game runtime, and quiz/results management. The README documents quiz types, media, language support, and file-based configuration; sampled source confirms portions of socket game and manager behavior. Some unsampled route and service wiring is therefore represented only where the tree and documented capabilities support it.
Main entry points: socket-context.tsx Socket client · src/index.ts Socket server entry · game/index.ts Game service · pages Player and host pages
Components 25
Web client
- Web application
packages/web/src/main.tsx - Player and host pages
packages/web/src/pages - Game interface
packages/web/src/features/game/components - Client game state
packages/web/src/features/game/stores - Socket client
packages/web/src/features/game/contexts/socket-context.tsx
Socket service
- Socket server entry
packages/socket/src/index.ts - Game handlers
packages/socket/src/handlers/game.ts - Quiz handlers
packages/socket/src/handlers/quiz.ts - Manager handlers
packages/socket/src/handlers/manager.ts - Results handlers
packages/socket/src/handlers/results.ts - Shared game contracts
packages/common/src/types/game
Game runtime
- Game registry
packages/socket/src/services/registry.ts - Game service
packages/socket/src/services/game/index.ts - Round manager
packages/socket/src/services/game/round-manager.ts - Player manager
packages/socket/src/services/game/player-manager.ts
Quiz and results management
- Quiz editor
packages/web/src/features/quiz/components - Editor state
packages/web/src/features/quiz/contexts/quiz-editor-context.tsx - Host configuration
packages/web/src/features/manager/components/configurations - Results review
packages/web/src/features/manager/components/ResultModal - PDF export
packages/web/src/features/manager/utils/exportResultPdf.ts - Manager authentication
packages/socket/src/services/manager.ts - Configuration service
packages/socket/src/services/config.ts
Other components
- Players
- Host
- Quiz and game files
Connections 28
- Players → Player and host pages: join game
- Host → Player and host pages: manage game
- Web application → Player and host pages: routes
- Player and host pages → Game interface: render
- Game interface → Socket client: send events
- Socket client → Socket server entry: connects
- Socket server entry → Game handlers: dispatches
- Socket server entry → Quiz handlers: dispatches
- Socket server entry → Manager handlers: dispatches
- Socket server entry → Results handlers: dispatches
- Game handlers → Game service: game actions
- Game service → Game registry: manages games
- Game service → Round manager: runs rounds
- Game service → Player manager: manages players
- Round manager → Player manager: reads players
- Socket client → Client game state: updates
- Host configuration → Socket client: sends settings
- Quiz editor → Editor state: edits
- Editor state → Socket client: submits quiz
- Quiz handlers → Configuration service: quiz operations
- Manager handlers → Manager authentication: authenticates
- Manager handlers → Configuration service: loads config
- Configuration service → Quiz and game files: reads and writes
- Results handlers → Configuration service: result operations
- Results review → PDF export: exports
- Results review → Socket client: requests results
- Shared game contracts → Game handlers: defines contracts
- Shared game contracts → Client game state: defines contracts