How turing-complete1509/algoarena works
AlgoArena is an online judge: users browse problems, authenticate, submit code or custom input, and receive execution results. The API persists submissions and queues evaluation; a worker runs code in Docker and records outcomes. The graph also preserves admin problem management and AI hints. Source excerpts show key API, controller, and worker behavior; some UI and infrastructure connections are documented in the README rather than verified from unsampled source.
Main entry points: api.js API client · App.jsx App routes · server.js Express API · submissionController.js Submission handling
Components 24
Web client
- App routes
frontend/src/App.jsx - Auth state
frontend/src/context/AuthContext.jsx - Login and register
frontend/src/pages/Login.jsx - Problem dashboard
frontend/src/pages/Dashboard.jsx - Coding workspace
frontend/src/pages/Workspace.jsx - Admin dashboard
frontend/src/pages/AdminDashboard.jsx - API client
frontend/src/services/api.js
API and domain
- Express API
backend/src/server.js - Authentication
backend/src/controllers/authController.js - Token guard
backend/src/middleware/authMiddleware.js - Problem management
backend/src/controllers/problemController.js - Submission handling
backend/src/controllers/submissionController.js - AI hint endpoint
backend/src/routes/aiRoutes.js - User records
backend/src/models/User.js - Problem records
backend/src/models/Problem.js - Test case records
backend/src/models/TestCase.js - Judge submissions
backend/src/models/Submission.js - Custom submissions
backend/src/models/CustomSubmission.js
Code execution
- Execution queue
backend/src/config/queue.js - Judge worker
backend/worker.js
External services
- Redis and BullMQ
- Docker runtime
- Gemini AI
Other components
- User
Connections 32
- User → App routes: uses
README.md - App routes → Problem dashboard: routes to
frontend/src/App.jsx - App routes → Coding workspace: routes to
frontend/src/App.jsx - App routes → Login and register: routes to
frontend/src/App.jsx - App routes → Admin dashboard: routes to
frontend/src/App.jsx - App routes → Auth state: provides
frontend/src/App.jsx - Login and register → Auth state: updates
frontend/src/pages/Login.jsx - Login and register → API client: calls
frontend/src/pages/Login.jsx - Problem dashboard → API client: fetches problems
frontend/src/pages/Dashboard.jsx - Coding workspace → API client: submits code
frontend/src/pages/Workspace.jsx - Admin dashboard → API client: manages problems
frontend/src/pages/AdminDashboard.jsx - API client → Express API: sends API requests
README.md - Express API → Authentication: mounts routes
backend/src/server.js - Express API → Problem management: mounts routes
backend/src/server.js - Express API → Submission handling: mounts routes
backend/src/server.js - Express API → AI hint endpoint: mounts routes
backend/src/server.js - Authentication → User records: reads and creates
backend/src/controllers/authController.js - Token guard → User records: loads user
backend/src/middleware/authMiddleware.js - Problem management → Problem records: reads and writes
backend/src/controllers/problemController.js - Problem management → Test case records: reads and writes
backend/src/controllers/problemController.js - Submission handling → Judge submissions: creates and reads
backend/src/controllers/submissionController.js - Submission handling → Custom submissions: creates and reads
backend/src/controllers/submissionController.js - Submission handling → Test case records: fetches cases
backend/src/controllers/submissionController.js - Submission handling → Execution queue: adds jobs
backend/src/controllers/submissionController.js - Execution queue → Redis and BullMQ: uses broker
README.md - Judge worker → Redis and BullMQ: consumes jobs
README.md - Judge worker → Judge submissions: updates status
backend/worker.js - Judge worker → Custom submissions: updates status
backend/worker.js - Judge worker → Docker runtime: runs code in
backend/worker.js - Coding workspace → API client: requests hints
frontend/src/pages/Workspace.jsx - API client → AI hint endpoint: posts hint request
frontend/src/services/api.js - AI hint endpoint → Gemini AI: generates hints
backend/src/routes/aiRoutes.js