DOJ
Online Judge for OI & ACM/ICPC
Feature
- AJAX based Single Page Application (Web)
- WebSocket submission result query
- Markdown (with TeX and shortcode supports) editor
- Interactive problems
- Special Judge
Requirement
- NodeJS 8.x or higher (yarn is recommended)
- MongoDB 3.x or higher
- Docker
Installation
- pull image
docker pull doveccl/doj
- copy ./config folder and edit your own configurations
- create file
production.json
and add configurations to overridedefault.json
judger.json
andserver.json
are configuration templates- for security, please set an unique
secret
- simply run command below to start DOJ
run -it --privileged -p 80:<configured_port,default: 7974> -v /<path_to_your>/config:/doj/config doveccl/doj --server --judger
# or use -d instead of -it for background running
- open http://localhost to test your new OJ, initial root user
admin/admin
could be used for management
Development
- clone DOJ to local
- use
yarn install
ornpm install
to install dependencies - use
yarn dev:web
ornpm run dev:web
for web debugging - use
yarn dev --server
ornpm run dev --server
for server debugging - use
yarn dev --judger
ornpm run dev --judger
for judger debugging - you can debug server together with judger by flag
--server --judger
- Linux is required for judger debugging
- to build project, run
yarn build
ornpm run build
Separate server and judgers
server
is the gate of database
single server with multi-judgers is an efficient way to handle with plenty of submissions
- run
docker <...args> doveccl/doj --server
to setup single server without judgers - run
docker <...args> doveccl/doj --judgers
on several machines to setup multi-judgers without server - server and judgers should share the same
secret
configuration field