This repository contains the implementation of a comprehensive end-semester project for the Cloud Computing course. The project involves developing a microservices-based photo gallery application using the MERN stack (MongoDB, Express.js, React.js, Node.js) and deploying it on Google Cloud Platform (GCP) with Kubernetes.
The goal of the project is to create a scalable and efficient photo gallery application with the following features:
-
User Accounts Management: Implement user authentication and authorization using relational databases or NoSQL. This includes identity management as a separate microservice named UserAccMgmtServ.
-
Storage Management: Allocate 10MB of cloud storage to each user for storing photos. Implement a microservice named StorageMgmtServ to track user storage usage and generate alerts when storage reaches a certain threshold.
-
Usage Monitoring: Monitor user activity and track data volume usage. Alert users when they exceed specific usage limits (e.g., 25MB per day). Develop a microservice named UsageMntrServ for usage monitoring.
-
View Generation: Create an intuitive and visually appealing user interface (UI) to display photos. Implement a microservice named ViewGeneratorServ to interact with other microservices and generate the UI.
-
Additional Microservices: Develop additional microservices such as Controller and Model microservices to facilitate the proper functioning of the application.
-
Load Testing: Perform load testing to determine the application's scalability and performance under various load conditions. Utilize automated load testing tools to simulate concurrent user access and monitor system behavior.
-
Logging: Implement logging functionality to monitor user activities and system events. Store logs centrally using an appropriate logging microservice.
- Frontend: React.js, HTML, CSS, JavaScript, client/server-side libraries
- Backend: Node.js, Express.js
- Database: MongoDB
- Cloud Storage: Cloudinary
- Deployment: Google Cloud Platform (GCP), Kubernetes
- Additional Libraries: Redux Toolkit, React Router, Axios, React Toastify
-
Clone Repository: Clone this repository to your local machine.
git clone https://github.com/abubakar-javed/Microservices_photoGallery
-
Install Dependencies: Install dependencies for both frontend and backend.
cd frontend npm install cd ../microservices npm install
-
Configuration: Configure environment variables, database connections, and cloud storage settings as per the provided instructions.
-
Run Application: Start the frontend and backend servers.
# Start frontend server cd frontend npm start # Start backend server cd ../microservices npm run dev
-
Access Application: Access the photo gallery application via the provided URL. Register/login to explore the features and functionalities.
- Hassaan Qaisar
- Yasir Ghaffar
- AbuBakr Javed
- Rana Mahad
- Umair Asim
Special thanks to Sir Qaisar Riaz for providing the project requirements and guidance throughout the development process.