How littleorange666/orangejudge works
OrangeJudge is a self-hosted competitive-programming judge. Users submit solutions through the web interface; the application records submissions, schedules judging, runs code in a sandbox, and makes results available. Separate capabilities cover accounts, problem authoring, and contests. The graph emphasizes documented and indexed call relationships; some subsystem internals are unsampled, so uncertain links are omitted. The README identifies the sandbox and database services but does not document their protocols.
Main entry points: datas.py Application data · tasks.py Judge tasks · submitting.py Submission intake · executing.py Language execution
Components 20
Web application
- Flask application
main.py - Web routes
modules/routers/general.py - API routes
modules/routers/api/general.py - Contest routes
modules/routers/api/contests.py - Login routes
modules/routers/login.py
Platform domains
- Accounts and login
modules/login.py - Submission intake
modules/submitting.py - Contest management
modules/contests.py - Problem authoring
modules/problemsetting.py
Judging runtime
- Judge tasks
modules/tasks.py - Language execution
modules/executing.py - Sandbox service
- Judge logic
modules/judge.py
Shared services
- Application data
modules/datas.py - Domain models
modules/objs.py - Configuration
modules/config.py - Shared utilities
modules/tools.py - File locks
modules/locks.py - Publications
modules/pubs.py
Other components
- User
Connections 26
- User → Flask application: uses
- Flask application → Web routes: registers routes
main.py - Web routes → Submission intake: submits code
modules/routers/general.py - Web routes → Application data: reads submissions
modules/routers/general.py - API routes → Submission intake: handles submissions
modules/routers/api/general.py - API routes → Contest management: handles contest actions
modules/routers/api/general.py - API routes → Judge tasks: requests rejudge
modules/routers/api/general.py - Contest routes → Contest management: manages contests
modules/routers/api/contests.py - Login routes → Accounts and login: authenticates
modules/routers/login.py - Accounts and login → Application data: reads and writes
modules/login.py - Submission intake → Application data: records submission
modules/submitting.py - Submission intake → Judge tasks: schedules judging
modules/submitting.py - Submission intake → Contest management: checks contest
modules/submitting.py - Judge tasks → Language execution: runs submissions
modules/tasks.py - Judge tasks → Application data: updates results
modules/tasks.py - Language execution → Sandbox service: runs code
- Judge tasks → Judge logic: uses judge results
modules/tasks.py - Problem authoring → Language execution: tests programs
modules/problemsetting.py - Problem authoring → Application data: persists problems
modules/problemsetting.py - Contest management → Application data: persists contest data
modules/contests.py - Language execution → Configuration: loads judge settings
modules/executing.py - Language execution → Shared utilities: uses utilities
modules/executing.py - Shared utilities → File locks: locks files
modules/tools.py - Judge tasks → Publications: publishes updates
modules/tasks.py - Flask application → Configuration: loads settings
main.py - Application data → Domain models: serializes domain data
modules/datas.py