This system designed to handle the Problem creation, code submission, evaluations and notifies the execution status.
- Client Sends Request: A client submits a code for evaluation.
- Submission Service:
- Receives the submission request.
- Fetches problem details from the Problem Admin Service.
- Stores submission details in the database.
- Enqueues the submission payload in a Redis queue.
- Sends a confirmation response to the client.
- Evaluator Service:
- Consumes the submission from the Redis queue.
- Evaluates the code based on test cases.
- Enqueues the evaluation result in another Redis queue.
- Submission Service:
- Consumes the evaluation result.
- Updates submission details in the database.
- Notifies the WebSocket service about the evaluation status.
- WebSocket Service:
- Sends real-time updates to the client about the code execution status.
- Problem Admin Service: Manages problem details.
- Submission Service: Handles submission creation, queuing, and updates.
- Evaluator Service: Evaluates submitted code.
- WebSocket Service: Provides real-time updates.
- Problem Admin Service: JavaScript, ExpressJS, MongoDB
- Submission Service: JavaScript, Fastify, Redis(queue), MongoDB
- Evaluator Service: TypeScript, ExpressJS, Redis(queue)
- WebSocket: socket.io, Redis(cache)