Skip to content

CS3219-AY2526Sem1/cs3219-ay2526s1-project-g12

 
 

Repository files navigation

Review Assignment Due Date

CS3219 Project (PeerPrep) - AY2526S1

Group: G12

Services:

Frontend

Folder: PeerPrep

Contains the project files for our frontend service built with Vite

Development:

Copy the .env.template to .env and update variables.

npm install
npm run dev

API Gateway

Folder: api-gateway

Functionality:

  • Routes API traffic from users to the corresponding internal services
  • Handles the checking of access token cookies to enforce authentication and authorisation

Development:

Copy the .env.template to .env and update variables.

uv sync
uv run fastapi dev main.py

Collaboration Service

Folder: collaboration-svc

Functionality:

  • Facilitate room/session creation
  • Coordinating users

Development:

Copy the .env.template to .env and update variables.

uv sync
uv run fastapi dev routes.py

Expire Observer Service

Folder: expire-observer-svc

Functionality:

  • Handles TTL Matching Expire event from redis

Development:

Copy the .env.template to .env and update variables.

uv sync
uv run fastapi dev main.py

Matching Service

Folder: matching-svc

Functionality:

  • Handles user matching requests
  • Corrdinating user acknowledgement for requests

Development:

Copy the .env.template to .env and update variables.

uv sync
uv run fastapi dev routes.py

Question History Service

Folder: qns-hist-svc

Functionality:

  • Handles retrieval of users past attempts
  • Generate AI Summary Review on users past attempts

Development:

Copy the .env.template to .env and update variables.

uv sync
uv run fastapi dev routes.py

Question Service

Folder: qns-svc

Functionality:

  • Handles retrieval of questions for users
  • Create, Update and Deletion of Question for admins

Development:

Copy the .env.template to .env and update variables.

uv sync
uv run fastapi dev routes.py

Support:

Question Service has a supplimentary files for importing questions located under support\qns-svc-import

Signaling Service

Folder: signaling-svc

Functionality:

  • Coordinate WebRTC traffic between users

Development:

npm install
node server.js

User Service

Folder: user-svc

Functionality:

  • Handles authentication of users
  • Retrieve profile information for users

Development:

Copy the .env.template to .env and update variables.

uv sync
uv run fastapi dev main.py

Running Locally

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

Note:

  • 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.

Acknowledgements:

  • qns-svc/tests/conftest.py and qns-hist-svc/tests/conftest.py:

  • Gavin has adapted server.js inside signaling-svc from node_modules/y-webrtc/bin/server.js and modified it to support audio stream

  • Gavin has used ChatGPT to generate debugging logs to VoiceConnectionManager and signaling server

About

nus-cs3219-ay2526s1-cs3219-ay2526s1-project-project-template created by GitHub Classroom

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 46.4%
  • TypeScript 28.4%
  • Jupyter Notebook 23.3%
  • JavaScript 0.9%
  • Dockerfile 0.5%
  • CSS 0.3%
  • Other 0.2%