Hydro is an online judge platform designed for competitive programming and computer science education that emphasizes ease of installation, cross-platform compatibility, and extensibility.
The platform addresses the need for schools and organizations to run programming contests and assignments by providing a complete system for problem management, code submission, and automated judging. It uses a modular plugin architecture that allows functionality to be extended or modified without compromising the ability to upgrade to newer versions. The system supports multiple isolated spaces within a single installation, enabling different classes or institutions to maintain separate problem sets and user bases while sharing infrastructure. Hydro handles all common problem types including traditional input-output problems, special judge problems, file-based I/O, answer submission, interactive problems, and function-based problems.
Hydro suits educators and administrators who want to deploy an online judge without extensive Linux expertise, as it offers one-command installation across mainstream Linux distributions and supports both x86_64 and ARM64 architectures including Raspberry Pi and Apple Silicon. The system scales to handle thousands of users through stateless architecture that allows arbitrary addition or removal of judge nodes, with automatic load balancing across available machines. Data backup and restoration are handled through simple command-line operations. The platform provides fine-grained permission control that can be assigned per contest or assignment, or to user groups representing classes or departments.
The project maintains active development with regular commits and continuous integration workflows. The codebase is written in TypeScript and distributed as an npm package, indicating a modern development approach aligned with Node.js ecosystems. Documentation exists in both Chinese and English, with the project maintaining a separate hosted version at hydro.ac for users who prefer not to self-host. The README explicitly invites community contributions through pull requests and issue reports for bugs and feature suggestions.