Skip to content

πŸ’»πŸ‘¨πŸ»β€πŸ’»πŸ“ Online Judge Platform, an advanced system where users can solve coding problems and improve their programming skills.

Notifications You must be signed in to change notification settings

AbhishekBhosale46/OnlineJudge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 

Repository files navigation

πŸ’»πŸ‘¨πŸ»β€πŸ’»πŸ“ Online Judge Platform

Welcome to the Online Judge Platform, an advanced system where users can solve coding problems and improve their programming skills. The project is structured into three main components:

1] Primary Backend: Manages user authentication, problem listings, and solution submissions.

2] Judge Server: Handles asynchronous execution of user code submissions.

3] Judger: Executes code submissions inside Docker containers, ensuring programs stay within specified time and memory limits.

Table of Contents

System Diagram

Python DjangoREST Postgres FastAPI RabbitMQ Docker

System Diagram

Features

  • User Authentication: Secure login and registration functionalities.

  • Problem Listings: A comprehensive list of coding problems for users to solve.

  • Solution Submissions: Users can submit their solutions to the problems.

  • Asynchronous Execution: Solutions are executed asynchronously to ensure scalability.

  • Dockerized Judging: Code submissions are run in isolated Docker containers to ensure security and resource management.

  • Verdict Generation: The system provides detailed feedback on submissions, including pass/fail status, time, and memory usage.

Repositories

The project is divided into three separate repositories for better modularity and maintenance. Follow the installation instructions in each repository to set up the components.:

1] Primary Backend

  • Repository : Primary Backend Repo
  • Description: This repository contains the core backend of the platform. It manages user authentication, problem listings, and solution submissions. It uses Django Rest Framework to create secure and scalable RESTful APIs.

2] Judge Server

  • Repository : Judge Server Repo
  • Description: This repository contains the server responsible for the asynchronous execution of user code submissions. It is built using FastAPI and utilizes RabbitMQ for task assignment and horizontal scalability of workers.

3] Judger

  • Repository : Judger Repo
  • Description: This repository contains the judger system designed to compile and run C++, Java, and Python programs inside Docker containers. It ensures programs stay within specified time and memory limits, handles cleanup of generated files and artifacts, and compares input files with expected and actual output to provide appropriate verdicts.

Contributing

Contributions are welcome! Please follow the guidelines in the respective repositories.

About

πŸ’»πŸ‘¨πŸ»β€πŸ’»πŸ“ Online Judge Platform, an advanced system where users can solve coding problems and improve their programming skills.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published