Skip to content

A microservices project which aims to replicate teacher-student communication in the classroom

Notifications You must be signed in to change notification settings

udeshyaG/microservices-classroom-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My Microservices Project Build Status

Click Here to view the Architecture Diagrams

Tech Used

  • Kubernetes 🕸 (Container Orchestration)
  • Docker 🐳 (Containerization)
  • Node, Express JS (Backend)
  • React ⚛ (Frontend)
  • Postgres 🐘 (Database)
  • Travis CI (Testing and Continuous Integration) 👷‍♂️

Kubernetes Cluster

Explanation

Service Tech Used Description
Client
  • React JS
  • Nginx Server
  • This is the front end of the app
  • The client container has Nginx installed with the built react code
  • Nginx serves the built react app from build folder
Auth
  • Node JS
  • Postgres SQL
  • Handles request to /api/auth
  • Registration and Login of Users
  • Check if user is student or teacher
Teachers
  • Node JS
  • Postgres SQL
  • /api/teachers Handles all functionality of teachers
  • Has separate DB. Hence independent of all services
  • Communicates with Students service using AMQP(Asynchronous Messaging Queue Protocol)
Students
  • Node JS
  • Postgres SQL
  • /api/students Handles all functionality of students
  • Has separate DB. Hence independent of all services
  • Communicates with Teachers service using AMQP
Ingress Nginx
  • Ingress Nginx Controller
  • Gateway between the outside traffic and our Kubernetes cluster
  • Routes traffic to appropriate service

Microservices Architecture

Explanation

Event Description
Annoucement
  • Teacher Creates an announcement. Stores in Teachers DB
  • announcement_created event is created. Passed to RabbitMQ via AMQP
  • RabbitMQ transfers this event to Student service
  • Student saves this announcement info in its DB
Comments
  • Student creates a comment. Stores in Student DB
  • comment_created event created. Passed to RabbitMQ via AMQP
  • RabbitMQ transfers this event to Teachers service
  • Teacher saves this announcement info in its DB
Auth
  • Auth services is independent. Does not create or receive any events
  • It maintains its own DB of users.

Teachers Service

  1. Teachers can view and create new announcements

  1. Teachers can see all comments made by students. Comments can also be deleted

Students Service

  1. Student can view all announcements

  1. Student can make a new comment on an announcement

Auth service

  1. Register or Login a new user (student and teacher)


Install and run locally

Setup the Ingress Nginx Controller

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.48.1/deploy/static/provider/cloud/deploy.yaml

Check the installation

kubectl get pods -n ingress-nginx

Create all the Kubernetes Objects

kubectl apply -f k8s/

Check out the app on localhost:80

About

A microservices project which aims to replicate teacher-student communication in the classroom

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published