Survey Corps
Expanse is an online learning platform designed to make education accessible, interactive, and personalized. It offers:
- Course management for students and educators.
- Collaborative learning through discussion forums.
- Real-time quizzes with automated assessments.
- Secure user authentication and role-based access control.
- Efficient file storage and retrieval.
- Real-time analytics for performance tracking.
Built with a scalable microservices architecture, Expanse ensures seamless interactions, reliable communication, and consistent user experience across services.
- Node.js (v14+)
- Python (v3.8+)
- Docker & Docker Compose
- PostgreSQL & MongoDB
- Navigate to the backend directory:
cd backend
- Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
- Install backend dependencies:
pip install -r requirements.txt
- Run the backend server:
uvicorn main:app --reload
- Navigate to the frontend and Authentication service directory:
cd frontend-with-auth
- Create a .env file by referencing from .env.example.
- For Google Client ID and Secret head over to this URL
Setup OAuth consent screen and Create OAuth client ID. Once done you will get Google Client ID and Secret.
https://console.cloud.google.com/apis/credentials
- For Google Client ID and Secret head over to this URL
- Install frontend and Authentication Service dependencies:
npm install npm install -g prisma
- Setup Prisma for Authentication Service and userDB setup
npx prisma generate
- Start the development server:
npm run dev
- Access the application at:
http://localhost:3000
- Navigate to the root directory:
docker-compose up --build
- Access the app via:
http://localhost:3000
-
Navigate to the root directory:
minikube start
-
Run the below command:
kubectl apply -f kubernetes/config/ -f kubernetes/deployments/ -f kubernetes/hpa/ -f kubernetes/services/
-
Check the status of the pods:
kubectl get pods -o wide
-
Once the pods are running, access the app via:
http://localhost:3000
-
Navigate to the root directory:
minikube start
-
Run the below command:
kubectl apply -f kubernetes/config/ -f kubernetes/deployments/ -f kubernetes/hpa/ -f kubernetes/services/
-
Check the status of the pods:
kubectl get pods -o wide
-
Once the pods are running, port forward each service:
kubectl port-forward service/courses-topics 8080:8080 kubectl port-forward service/discussion-forum 8081:8081 kubectl port-forward service/quiz-service 8082:8082
-
Install metrics-server
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
-
Verify if metrics server is running
kubectl get pods -n kube-system
-
Edit the metrics server deployment yaml
kubectl get deployment metrics-server -n kube-system -o yaml > metrics-server.yaml
-
Open it up on VSCode
code metrics-server.yaml
-
Apply the new metrics server configurations
kubectl apply -f metrics-server.yaml
-
Run the below command to check CPU utilization
kubectl get hpa -w
- Run the Apache Benchmark to simulate load
ab -n 10000 -c 100 http://localhost:8082/get-score
The full project report is available in the root folder:
Project Report
Watch the video showcasing the project here:
Project Demo Video