How ouyangyanhuo/hydronext works
Hydro is a modular programming-contest and online-judge platform. Its central user workflow is to browse or configure a problem, submit a solution, have it compiled and evaluated, and inspect the resulting record; contests, homework, training, and multi-domain administration extend that workflow. The map also includes documented imports, plugins, and contest integrations. README capabilities guide the unsampled areas; source excerpts are partial, so links there show product stages rather than unverified method-level calls.
Main entry points: handler Domain handlers · record.ts Submission records · server.ts HTTP / WS server · db.ts MongoDB data
Components 25
Web experience
- Web interface
packages/ui-default - Next UI
packages/ui-next/src - Problem editor
packages/ui-default/components/problemconfig
Hydro core
- HTTP / WS server
framework/framework/server.ts - Domain handlers
packages/hydrooj/src/handler - Contest / homework
packages/hydrooj/src/model/contest.ts - Problem model
packages/hydrooj/src/model/problem.ts - Submission records
packages/hydrooj/src/model/record.ts - Users / domains
packages/hydrooj/src/model/domain.ts - MongoDB data
packages/hydrooj/src/service/db.ts - File storage
packages/hydrooj/src/service/storage.ts
Judging
- Task processing
packages/hydrooj/src/model/task.ts - Judge worker
packages/hydrooj/src/service/worker.ts - Judge engine
packages/hydrojudge/src/judge - Execution sandbox
packages/hydrojudge/src/sandbox - Test data
packages/hydrooj/src/lib/testdataConfig.ts
Extensions
- Problem importers
packages/fps-importer/index.ts - Virtual judge
packages/hydrojudge/src/hosts - Plugin API
packages/hydrooj/src/plugin-api.ts - Code replay
packages/code-replay/index.ts - External scoreboard
packages/scoreboard-xcpcio/index.ts
Other components
- Student / admin
- Remote judge hosts
- S3-compatible storage
- XCPC scoreboard
Connections 28
- Student / admin → Web interface: uses
- Student / admin → Next UI: uses
- Web interface → HTTP / WS server: sends requests
- Next UI → HTTP / WS server: sends requests
- HTTP / WS server → Domain handlers: dispatches routes
- Problem editor → HTTP / WS server: saves configuration
- Domain handlers → Problem model: reads / updates
- Domain handlers → Contest / homework: reads / updates
- Domain handlers → Users / domains: checks identity / scope
- Domain handlers → Submission records: creates / reads
- Problem model → MongoDB data: persists problem data
- Contest / homework → MongoDB data: persists contest data
- Submission records → MongoDB data: persists records
- Users / domains → MongoDB data: persists accounts / domains
- Domain handlers → Task processing: queues evaluation
- Task processing → Judge worker: dispatches work
- Judge worker → Judge engine: runs evaluation
- Judge engine → Execution sandbox: executes programs
- Judge engine → Test data: uses test data
- Judge worker → Submission records: updates result
- Domain handlers → File storage: manages files
- File storage → S3-compatible storage: reads / writes objects
- Problem importers → Domain handlers: imports problem packages
- Virtual judge → Remote judge hosts: fetches remote problems
- Plugin API → Domain handlers: extends routes
- Submission records → Code replay: provides submission context
- External scoreboard → Submission records: observes judged records
- External scoreboard → XCPC scoreboard: publishes standings