Website hosted at https://web.peerpreplegends.com. QA hosted at link. Development serverless container on Cloud Run link.
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).
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.
- Install MongoDB Community Server for MongoDB.
- Install Docker Desktop.
- Install Node.js and NPM.
- Clone the repository.
- 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
- In each of the
.env
file, include your own MongoDB Connection String URI asCLOUD_DATABASE_URL
, and optionally you can input your customPORT
number. Do check out documentation on getting the Connection String URI. - 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.
- In the
/frontend/src/api.js
, do allocate your deployed endpoints. #TODO - Now you can deploy frontend as well.
- After that, you can access your frontend deployed endpoint and you should see the landing page.
- Clone the repository.
- 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
- In each of the
.env
file, include your own customPORT
number if you wish. If you wish to use your MongoDB Cloud Database, you may also inpurt your MongoDB Connectiong String URI asCLOUD_DATABASE_URL
. Do check out documentation on getting the Connection String URI. - 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
-
In the
/frontend/src/api.js
, set all instances of production URLs tonull
. 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. -
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
- 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
- You can access your http://localhost:3000 and you will see the landing page.
Read more on our backend README and frontend README.