Skip to content

itnccuong/OJUS

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OJUS

This repo contains a full-stack coding platform built with React + TypeScript (Vite) on the frontend and Node.js + Express + Prisma on the backend. It allows users to register, submit solutions to coding problems, and get results in real time, and also contribute problems to the platform.

Purpose

• Provide a self-hosted Online Judge system where users can practice coding problems.
• Showcase knowledge of microservices with Docker, RabbitMQ, and containerized language environments.
• Demonstrate experience in designing and implementing large-scale applications.

Tech Stack

• Frontend: React, TypeScript, Vite, React-Bootstrap
• Backend: Node.js, Express, Prisma ORM, MySQL
• Execution: Docker Compose for language containers (C, C++, Python, Java, Node)
• Messaging: RabbitMQ for asynchronous job processing
• Deployment: Docker, GitHub Actions

Getting Started

  1. Clone this repo.
  2. Install dependencies (frontend, backend):
    • In ./backend:
      › npm install
    • In ./frontend:
      › npm install
  3. Set up environment variables in .env for database connection and DO credentials.
  4. Start Docker containers (language environments):
    › docker compose -f docker-compose.langs.yaml up -d
  5. Start backend (API, Worker):
    › npm run dev
  6. Start frontend:
    › npm run dev

Features

• User authentication and admin roles
• Problem creation with testcases stored in DO Spaces
• Real-time submissions (compile & judge)
• RESTful APIs auto-generated by TSOA

Contributing

Fork, commit, and open a pull request. Thank you for checking out the project!

Demo

  • You can try our website : OJUS

About

Online Judge HCMUS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 99.0%
  • Other 1.0%