Thanks to visit codestin.com
Credit goes to github.com

Skip to content

NextJudge/NextJudge

NextJudge

The competitive programming platform and command-line interfaceβ€”for everyone.

Last commit :) Licese

NextJudge is a suite of services, tools, and applications for creating programming platforms (framework), facilitating programming contests (cli tool), and showcasing programming prowess (platform). Our primary product is the nextjudge.org platform, built with competitive programming in mind.

The NextJudge toolchain comprises a secure code-execution engine, an API gateway, a web application, a CLI tool, and a data layer, all of which are 100% self-hostable.

Why? πŸ€”

As avid programmers, we were tired of competitive programming platforms, interview-prep sites, and educational learning tools providing seemingly everything, except the core experience of what we want to do. Programming, that is.

If you want to prepare for your Jane Street interview, you have to head over to leetcode.com, if you want to practice typescript exercises, you have to head to typehero.dev, and finally, if you want to participate in competitive programming competitions, you have to head to codeforces.com.

We're building NextJudge to be a platform, tool, and experience for everyone. Want to host a mock compeition for ICPC practice? It's no problem with NextJudge. Don't like our UI? You can host your own instance for your own use cases. And finally, want to add new features? We're 100% open source, of course. No matter what your use case is, NextJudge has something for everyone.

Getting Started πŸš€

Repository structure πŸ“

NextJudge is a monorepo with the following structure:

.
β”œβ”€β”€ src
β”‚   β”œβ”€β”€ cli - command-line interface for interacting with the platform
β”‚   β”œβ”€β”€ data-layer - HTTP wrapper over underlying database
β”‚   β”œβ”€β”€ judge - runs and judges code submissions
β”‚   β”œβ”€β”€ web - web application for the platform
β”œβ”€β”€ deploy.sh - script to deploy all services using Docker compose
β”œβ”€β”€ build-frontend.sh - script to build the frontend application
β”œβ”€β”€ dev-deploy.sh - script to deploy all services using Docker compose with hot reload
β”œβ”€β”€ fully-reset.sh - script to flush the database and remove all volumes
β”œβ”€β”€ docker-compose.yml - Docker compose file for running all services
β”œβ”€β”€ docker-compose.dev.yml - Docker compose file for running all services with hot reload
β”œβ”€β”€ CONTRIBUTING.md - guidelines for contributing to the project
β”œβ”€β”€ LICENSE - MIT License
└── CODE_OF_CONDUCT.md - guidelines for community behavior

Tip

You can run the .sh scripts in the root directory with ./name-of-script.sh.

Quick Start πŸƒπŸΎβ€β™‚οΈ

Deployment πŸ“¦

The top-level ./deploy.sh will instantiate all modules using Docker compose internally.

./deploy.sh

Local Development πŸ› οΈ

To run the services locally while developing, you can use Docker with hot reload.

The source code is mounted, and a process is set up to detect changes and restart the service when you save files.

You can run the following script to start the services:

./dev-deploy.sh

To flush the database and remove all volumes (completely refreshing the Docker environments), run the following script:

./fully-reset.sh

Configuration βš™οΈ

Installation πŸ”§

Clone the repo:

git clone https://github.com/NextJudge/NextJudge.git

Contributing 🀝

Currently, while we are in primary stages of development, we are not accepting contributions.

However, we will be opening up the project for contributions in the near future. Community contributions are what made us decide to open-source the project in the first place. We're excited to make this project a community-driven project.

Until then, please read CONTRIBUTING.md for our code of conduct and the process for submitting both pull requests and issues to the project.

About

A competitive programming platform built for everyone.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •