How gaurav-patil-13/wargames works
WARGAMES is a browser-based CTF learning platform. Users authenticate, browse their progress-unlocked Linux, Bash, Docker, and Networking levels, start an isolated challenge container, use its live shell, and submit a flag to earn XP and unlock the next level. The React pages drive Express APIs and a separate Socket.IO terminal channel; backend services manage challenge containers and progress backed by PostgreSQL. The README documents the major flows and integrations; some route and socket internals were not sampled, so their wiring is shown only where documented.
Main entry points: server.js HTTP and socket server · dockerService.js Container and shell service · App.jsx Routes and session gate · levels.js Level and flag routes
Components 21
Browser app
- Routes and session gate
frontend/src/App.jsx - Session provider
frontend/src/utils/auth.jsx - Login and registration
frontend/src/pages/Login.jsx - Level dashboard
frontend/src/pages/Dashboard.jsx - Challenge controls
frontend/src/pages/Challenge.jsx - Browser terminal
frontend/src/components/TerminalPane.jsx - HTTP API client
frontend/src/utils/api.js
Backend API
- HTTP and socket server
backend/src/server.js - Authentication routes
backend/src/routes/auth.js - JWT authentication
backend/src/middleware/auth.js - Level and flag routes
backend/src/routes/levels.js - Container routes
backend/src/routes/containers.js - Terminal socket handler
backend/src/sockets/terminal.js
Challenge runtime
- Level catalog
backend/src/data/levels.js - Challenge environments
challenges - Container and shell service
backend/src/services/dockerService.js
Platform state
- Unlock and XP service
backend/src/services/progressService.js - Database access
backend/src/db.js
Other components
- Learner
- PostgreSQL
- Docker Engine
Connections 30
- Learner → Routes and session gate: uses
- Routes and session gate → Session provider: checks session
- Routes and session gate → Level dashboard: routes
- Routes and session gate → Challenge controls: routes
- Learner → Login and registration: signs in
- Login and registration → Session provider: requests session
- Level dashboard → HTTP API client: fetches levels
- Challenge controls → HTTP API client: calls endpoints
- Challenge controls → Browser terminal: opens shell
- Browser terminal → Terminal socket handler: terminal events
- HTTP API client → HTTP and socket server: HTTP requests
- HTTP and socket server → Authentication routes: dispatches
- HTTP and socket server → Level and flag routes: dispatches
- HTTP and socket server → Container routes: dispatches
- HTTP and socket server → Terminal socket handler: registers handler
- Authentication routes → JWT authentication: protects profile
- Level and flag routes → JWT authentication: protects routes
- Container routes → JWT authentication: protects routes
- Terminal socket handler → JWT authentication: verifies token
- Level and flag routes → Level catalog: reads catalog
- Level and flag routes → Unlock and XP service: checks and records
- Container routes → Level catalog: loads level
- Container routes → Container and shell service: starts or destroys
- Terminal socket handler → Container and shell service: opens shell
- Container and shell service → Challenge environments: builds image from
- Container and shell service → Docker Engine: builds and controls
- Unlock and XP service → Database access: reads and writes
- Authentication routes → Database access: reads and writes users
- Container and shell service → Database access: records containers
- Database access → PostgreSQL: queries