Skip to content

winner106/online-judge1

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Online Judge

A LeetCode clone. See it live at http://34.149.185.114/!

Tech Stack

  • Backend: NestJS, MySQL, Redis, RabbitMQ
  • Frontend: React
  • Deployment: Docker, Kubernetes

Features

Screenshots

Home

Home

Problems management

Problems

Problem

Submissions

Submission

Scoreboard

User profile

Deployment

Prerequisites

The provided Kubernetes manifests are meant to be applied to Google Kubernetes Engine cluster. You need to prepare the following things:

  • Create a cluster in Google Kubernetes Engine
  • Configure kubectl and gcloud CLI to connect to the cluster, you can follow this guide.
  • Reserve a static IP address for the Ingress, you can follow this guide. The name of this IP will be put in the Ingress's manifest, under kubernetes.io/ingress.global-static-ip-name annotation.

Steps

  • If there is an .env.example file in the manifest directory, copy it to a .env file within the same directory then fill in the values. Here is an example.

  • The environment variables for the frontend is an exception, it should be set in its Dockerfile. I am still working on this.

  • Go to the deployment scripts directory, then run the following in order:

    • ./deploy-infrastructure.sh
    • ./deploy-database-migrator.sh
    • ./deploy-backend.sh
    • ./deploy-frontend.sh
    • ./deploy-ingress.sh

About

A LeetCode clone built with NestJS & React.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 98.4%
  • Other 1.6%