How omegaup/omegaup works
omegaUp is a web-based educational programming platform for learners and educators. A typical learner uses the browser to find a problem or enter a contest/course arena, submit code, and view grading results and scoreboards. The frontend communicates with the PHP API; controllers implement domain operations and use DAOs for persistent records. Contest, course, group, certificate, and editorial features are distinct product branches. The README identifies Quark as the external grader. Some subsystem links are based on documented responsibilities and the file tree; unsampled implementation details and uncertain wiring are omitted.
Main entry points: Controllers API controllers · worker.py Editorial worker · arena Problem arena UI · api.ts Frontend API client
Components 21
Web client
- omegaUp website
frontend/www - Problem arena UI
frontend/www/js/omegaup/arena - Frontend API client
frontend/www/js/omegaup/api.ts
API domain
- API entry point
frontend/www/api/ApiEntryPoint.php - API controllers
frontend/server/src/Controllers - Identity and sessions
frontend/server/src/Controllers/Identity.php - AI editorial API
frontend/server/src/Controllers/AiEditorial.php
Learning workflows
- Problem catalog
frontend/server/src/Controllers/Problem.php - Contests
frontend/server/src/Controllers/Contest.php - Courses and assignments
frontend/server/src/Controllers/Course.php - Groups and scoreboards
frontend/server/src/Controllers/Group.php - Certificates
frontend/server/src/Controllers/Certificate.php
Code execution
- Submissions and runs
frontend/server/src/Controllers/Submission.php - Grader integration
frontend/server/src/Grader.php - Quark grader
State and integrations
- Data access objects
frontend/server/src/DAO - MySQL database
frontend/server/src/MySQLConnection.php - Editorial worker
stuff/ai_editorial_worker/worker.py - Redis queue
- OpenAI service
Other components
- Learner / educator
Connections 20
- Learner / educator → omegaUp website: uses
- omegaUp website → Problem arena UI: opens arena
- Problem arena UI → Frontend API client: requests data
- Frontend API client → API entry point: calls API
- API entry point → API controllers: dispatches
- API controllers → Identity and sessions: authenticates
- API controllers → Problem catalog: serves problems
- API controllers → Contests: serves contests
- API controllers → Courses and assignments: serves courses
- API controllers → Groups and scoreboards: serves groups
- API controllers → Certificates: serves certificates
- Problem arena UI → Submissions and runs: submits code
- Submissions and runs → Grader integration: requests grading
- Grader integration → Quark grader: dispatches runs
- API controllers → Data access objects: reads and writes
- Data access objects → MySQL database: queries
- AI editorial API → Redis queue: queues jobs
- Editorial worker → Redis queue: consumes jobs
- Editorial worker → OpenAI service: generates editorials
- Editorial worker → Frontend API client: publishes editorial