- You can choose to develop individual microservices within separate folders within this repository OR use individual repositories (all public) for each microservice.
- In the latter scenario, you should enable sub-modules on this GitHub classroom repository to manage the development/deployment AND add your mentor to the individual repositories as a collaborator.
- The teaching team should be given access to the repositories as we may require viewing the history of the repository in case of any disputes or disagreements.
We develop the following micro-services:
/backend/user
: Express service for user accounts, authentication./backend/question
: Express service for question metadata, attempt history./backend/matching
: Express service for user game matching, via websockets and Redis Streams./backend/collaboration
: Express service for collaborative editing, via YJS and websockets./backend/chat
: Express service for peer-2-peer chatting./frontend
: A UI view layer for the application, built with React Router and Vite, and served with Nginx.
We run this application using Kubernetes, and host this application on Google Kubernetes Service. The documentation can be found here.
Should you desire to rebuild the images, make use of the various commands in our Makefile
.
Ideally, you should have Docker running, and you should run the commands in this sequence:
-
make setup
(Optional)- This sets up dependencies and creates the necessary persistent volumes.
-
make up
- In addition to the above, it also:
- Runs the migrations/seeding for each service's database within their own Docker container, once running.
- Builds and starts the services in order.
- In addition to the above, it also: