Folder: PeerPrep
Contains the project files for our frontend service built with Vite
Copy the .env.template to .env and update variables.
npm install
npm run dev
Folder: api-gateway
- Routes API traffic from users to the corresponding internal services
- Handles the checking of access token cookies to enforce authentication and authorisation
Copy the .env.template to .env and update variables.
uv sync
uv run fastapi dev main.py
Folder: collaboration-svc
- Facilitate room/session creation
- Coordinating users
Copy the .env.template to .env and update variables.
uv sync
uv run fastapi dev routes.py
Folder: expire-observer-svc
- Handles TTL Matching Expire event from redis
Copy the .env.template to .env and update variables.
uv sync
uv run fastapi dev main.py
Folder: matching-svc
- Handles user matching requests
- Corrdinating user acknowledgement for requests
Copy the .env.template to .env and update variables.
uv sync
uv run fastapi dev routes.py
Folder: qns-hist-svc
- Handles retrieval of users past attempts
- Generate AI Summary Review on users past attempts
Copy the .env.template to .env and update variables.
uv sync
uv run fastapi dev routes.py
Folder: qns-svc
- Handles retrieval of questions for users
- Create, Update and Deletion of Question for admins
Copy the .env.template to .env and update variables.
uv sync
uv run fastapi dev routes.py
Question Service has a supplimentary files for importing questions located under support\qns-svc-import
Folder: signaling-svc
- Coordinate WebRTC traffic between users
npm install
node server.js
Folder: user-svc
- Handles authentication of users
- Retrieve profile information for users
Copy the .env.template to .env and update variables.
uv sync
uv run fastapi dev main.py
We support running our services as containers using docker compose
Prerequisite
- Ensure that docker is installed
- Ensure 4 Redis instances and 3 PostgreSQL instance are setup for the various services
To startup the containers:
docker compose up -d --build
To tear everything down
docker compose down
- You are required to develop individual microservices within separate folders within this repository.
- 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.
-
qns-svc/tests/conftest.pyandqns-hist-svc/tests/conftest.py:- Credits to
gxpd-jjh. Re-used from: tortoise/tortoise-orm#1110 (comment)
- Credits to
-
Gavin has adapted
server.jsinsidesignaling-svcfromnode_modules/y-webrtc/bin/server.jsand modified it to support audio stream -
Gavin has used ChatGPT to generate debugging logs to VoiceConnectionManager and signaling server