How venugopalreddy787/jurge-engine works
Jurge Engine accepts Judge0-compatible code submissions, queues them for isolated execution, and exposes results by token. The main flow spans submission intake, persistence and queueing, language-specific workers, sandbox execution, and result retrieval; callbacks are optional. Separate runtime APIs and admin tools manage runtimes, language registration, metrics, and pool scaling. The graph follows the supplied README and sampled source; some service and dispatcher wiring is not shown, so uncertain call edges are omitted.
Main entry points: admin.service.js Admin service · containerManager.js Container pool · generic.worker.js Language worker · runtime.service.js Runtime service
Components 28
API and submissions
- HTTP server
src/server.js - Submission routes
src/routes/submission.routes.js - Submission controller
src/controllers/submission.controller.js
Execution pipeline
- Execution service
src/services/execution.service.js - Submission dispatcher
src/dispatcher/submissionDispatcher.js - Queue service
src/services/queue.service.js - Worker launcher
src/workers/launchWorkers.js - Language worker
src/workers/generic.worker.js - Java worker
src/workers/java.worker.js - Sandbox runner
src/sandbox/dockerRunner.js - Container pool
src/sandbox/containerManager.js
Runtime operations
- Runtime routes
src/routes/runtime.routes.js - Runtime controller
src/controllers/runtime.controller.js - Runtime service
src/services/runtime.service.js - Admin routes
src/routes/admin.routes.js - Admin controller
src/controllers/admin.controller.js - Admin service
src/services/admin.service.js - Language registry
src/utils/languageRegistry.js - Pool autoscaler
src/autoscaling/workerScaler.js
State and infrastructure
- BullMQ queues
src/queues/queue.js - Submission records
src/models/Submission.js - Runtime records
src/models/Runtime.js - Language configuration
src/models/LanguageConfig.js
Other components
- API client
- Docker
- Callback endpoint
- Redis
- MongoDB
Connections 44
- API client → HTTP server: sends requests
- HTTP server → Submission routes: mounts routes
- Submission routes → Submission controller: dispatches
- Submission controller → Execution service: creates submission
- Execution service → Submission records: persists payload
- Execution service → Submission dispatcher: dispatches job
- Submission dispatcher → Queue service: queues job
- Queue service → BullMQ queues: creates queues
- Worker launcher → Language worker: starts workers
- Worker launcher → Java worker: starts Java worker
- Language worker → BullMQ queues: consumes jobs
- Java worker → BullMQ queues: consumes jobs
- Language worker → Submission records: loads and saves
- Language worker → Sandbox runner: runs sandbox
- Sandbox runner → Container pool: acquires container
- Container pool → Docker: manages containers
- Container pool → Redis: tracks pool
- Language worker → Callback endpoint: posts results
- Submission controller → Submission records: reads results
- HTTP server → Runtime routes: mounts routes
- Runtime routes → Runtime controller: dispatches
- Runtime controller → Runtime records: reads runtime state
- Runtime controller → Runtime service: requests upgrade
- Runtime service → Runtime records: updates runtime state
- Runtime service → Container pool: checks pool
- Runtime service → Docker: builds runtime image
- HTTP server → Admin routes: mounts routes
- Admin routes → Admin controller: dispatches
- Admin controller → Admin service: delegates operations
- Admin service → Queue service: reads queue metrics
- Admin service → Container pool: reads pool metrics
- Admin service → Submission records: aggregates submissions
- Admin service → Runtime service: builds runtimes
- Admin service → Language configuration: registers language
- Admin service → Runtime records: records runtime
- Admin service → Language registry: registers language
- Admin service → BullMQ queues: creates language queue
- Admin service → Redis: notifies workers
- Worker launcher → Redis: restores registrations
- Pool autoscaler → BullMQ queues: checks idleness
- Pool autoscaler → Container pool: scales down pool
- Submission records → MongoDB: stores submissions
- Runtime records → MongoDB: stores runtime state
- Language configuration → MongoDB: stores language config