/online-judge1

A LeetCode clone built with NestJS & React.

Primary LanguageTypeScript

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