[Open Source] Online Judge System, an Online Code Judging Platform Supporting Both Online and Offline Contest Scenarios
![[Open Source] Online Judge System, an Online Code Judging Platform Supporting Both Online and Offline Contest Scenarios](https://yy123.ink/api/img/1782591532615-uttdqt.jpg)
1. Project Overview
Jiangnan Online Judge
Jiangnan Online Judge (JOJ) is an online judging system. Users can submit source code written in various programming languages, such as C, C++, and Java. The system compiles and executes the submitted code, then verifies its correctness using predefined test data.
2. Open Source License
Released under the BSD open-source license.
3. Screenshots
The new version uses Golang and React with a decoupled frontend and backend architecture. It features a completely redesigned architecture, online code execution and testing, an improved user experience, and shared question data downloads.
Refer to the documentation to switch to the v2 branch and try it out.


4. Feature Overview
Functional characteristics
- OI Mode - Supports OI-style judging and subtask-based judging.
- Live Scoreboard - Provides a rolling scoreboard after a contest ends.
- VIP User Mechanism - Questions can be restricted to VIP users only.
- Group Features - Users can create groups and organize contests within them.
- Testlib Special Judge - Supports writing special judge programs using testlib.h.
- Online and Offline Contest Scenarios - Adds restrictions for offline contests, such as limiting eligible contest accounts and preventing participating accounts from modifying their personal information.
- Offline Contest Printing - Provides code printing functionality for offline contests.
- Problem Printing - After creating a contest, problem information can be exported to PDF with one click for printing.
- Download Contest Submissions - Useful for plagiarism detection.
- Announcement Pop-up Notifications - During contests, administrators can send pop-up notifications about new announcements to all online users.
- Record Failed Test Data - Allows users to view test data that caused submitted solutions to fail.
- News Portal Homepage - Displays news, announcements, and other information on the homepage.
- Multi-Language Support - Currently supports C, C++, Java, and Python3.
- Supports (KaTeX) mathematical formulas.
- Multiple Sample Cases in Problem Descriptions - Allows multiple sample cases to be provided in a single problem description.
- Publish Editorials for Contests.
- Problem Tags - Add tags to problems for easier searching.
- Developed Based on the MVC Framework - Easy to learn and get started with.
- Polygon Problem-Setting System - A fully featured problem-setting system for creating problems, generating test data, validating problems, and more.
- Web-Based Problem Data Management - Add, delete, modify, and query problem test data online.
- Leaderboard - Ranks users based on the number of problems solved and other statistics.
- Contest Scoreboard - Calculates scores for contest participants and ranks them accordingly.
5. Tech Stack
Environment Requirements
Install in a Linux environment. The judging server was developed for Linux and cannot run on Windows.
Set up an LNMP (or LAMP) environment: PHP 7.x, MySQL, Nginx / Apache2.
This tutorial is divided into One-Click Installation Script、Manual Installation Process. Choose either of these two installation methods.
If you want the judging server to start automatically at boot, refer to Startup on Boot after installation.