Skip to content

marcustw/cs3219-project

 
 

Repository files navigation

CS3219 Project - PeerPrep (By Team G23)

Website hosted at https://web.peerpreplegends.com. QA hosted at link. Development serverless container on Cloud Run link.

Introduction

We will be embarking on the project Peerprep, a peer support system where users are engaged with collaborative whiteboard-style programming to practice for technical interviews. The app is expected to handle collaborative whiteboard-style programming. With IPP, everyone can code together on the same file at the same time. You can share with anyone, view edited code in real time, chat and comment for discussions. The app also supports some basic features as well e.g., user authentication and save and retrieve relevant data. Questions will be taken from leetcode (free questions), we will keep the sample size of our questions small as we are in the minimal viable product stage. The questions will be categorized based on difficulty (e.g easy, medium, hard).

Motivation

Aspiring Software Engineering students often have trouble with technical interviews. Some may find it stressful to be assessed live coding, while others find it tough to articulate their thoughts properly while coding at the same time, including us too! In that perspective, we want to create an interview Preparation Platform where students can find peers to practice whiteboard style interview questions together, as well as fostering a local community for tackling technical challenges together.

We felt that the idea of PeerPrep was really an interesting one and that it can be purposeful for ourselves. We feel that the challenges faced aforementioned can be overcome through rigorous practicing, and we want to implement such a platform for students to engage in.

Instructions for Set up

Requirements:

  1. Install MongoDB Community Server for MongoDB.
  2. Install Docker Desktop.
  3. Install Node.js and NPM.

For Deployment

  1. Clone the repository.
  2. Place the required .env configuration files in the following directories of:
  • backend/users/.env
  • backend/match/.env
  • backend/message/.env
  • backend/editor/.env
  • backend/questions/.env
  1. In each of the .env file, include your own MongoDB Connection String URI as CLOUD_DATABASE_URL, and optionally you can input your custom PORT number. Do check out documentation on getting the Connection String URI.
  2. Deploy the backend as microservices in your preferred cloud provider. Our team used Google Cloud Platform (GCP). Do check out the documentation for gcloud guide. You can install Cloud SDK here if you are using GCP.
  3. In the /frontend/src/api.js, do allocate your deployed endpoints. #TODO
  4. Now you can deploy frontend as well.
  5. After that, you can access your frontend deployed endpoint and you should see the landing page.

Instructions for running locally

  1. Clone the repository.
  2. Place the required .env configuration files in the following directories of:
  • backend/users/.env
  • backend/match/.env
  • backend/message/.env
  • backend/editor/.env
  • backend/questions/.env
  1. In each of the .env file, include your own custom PORT number if you wish. If you wish to use your MongoDB Cloud Database, you may also inpurt your MongoDB Connectiong String URI as CLOUD_DATABASE_URL. Do check out documentation on getting the Connection String URI.
  2. Install all required dependencies for backend microservices and frontend. In root directory,
# change modify access of install-all.sh
$ chmod +x ./install-all.sh

# install all dependencies
$ ./install-all.sh
  1. In the /frontend/src/api.js, set all instances of production URLs to null. This is because we will be using the development URLs (localhost). Do also change the port number of your own microservices for the dev URLs.

  2. Use Docker-Compose Use Docker-Compose to build all the microservices and frontend as container images.

$ docker-compose build

Use Docker-Compose to spin up the containers.

$ docker-compose up -d
  1. Otherwise you can run each each microservice and frontend separately by going to the folder and run npm run dev. For example, if you want to run editor microservice,
$ cd backend/editor && npm run dev

If you want to run frontend,

$ cd frontend && npm run start
  1. You can access your http://localhost:3000 and you will see the landing page.

Read more on our backend README and frontend README.

About

Peerprep v2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 46.0%
  • JavaScript 41.2%
  • Shell 7.1%
  • CSS 2.6%
  • HTML 1.4%
  • Smarty 1.1%
  • Dockerfile 0.6%