https://github.com/sasmithx/cloud-deployment-in-action
✨ This repository is a hands-on example of cloud-enabled deployment with microservices, showcasing best practices in Dockerization, database connectivity, and full-stack integration across AWS, GCP, and local environments.
https://github.com/sasmithx/cloud-deployment-in-action
aurora-mysql aws axios docker gcp java material-ui microservices mongodb mysql react spring-boot typescript vite
Last synced: 9 months ago
JSON representation
✨ This repository is a hands-on example of cloud-enabled deployment with microservices, showcasing best practices in Dockerization, database connectivity, and full-stack integration across AWS, GCP, and local environments.
- Host: GitHub
- URL: https://github.com/sasmithx/cloud-deployment-in-action
- Owner: sasmithx
- License: mit
- Created: 2025-09-03T05:51:33.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-09-17T13:20:25.000Z (10 months ago)
- Last Synced: 2025-09-17T15:27:05.780Z (10 months ago)
- Topics: aurora-mysql, aws, axios, docker, gcp, java, material-ui, microservices, mongodb, mysql, react, spring-boot, typescript, vite
- Language: TypeScript
- Homepage:
- Size: 71.3 KB
- Stars: 3
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Cloud Enabled Deployment In Action with AWS, GCP
🚀 This project demonstrates a cloud-enabled ☁️ microservices-based deployment using Spring Boot 🍃, React ⚛️, AWS 🟨, GCP 🔵, and Docker 🐳.
It showcases how to build 🛠️, containerize 📦, and deploy 🚢 backend services and a frontend application with cloud-managed 🌐 and self-hosted 🖥️ databases.
This repository contains four projects:
- course-service (Spring Boot + MySQL)
- student-service (Spring Boot + MongoDB)
- media-service (Spring Boot + Local file storage, can be extended to S3/MinIO)
- frontend-app (React + TypeScript)
## Backend Services
### 1. course-service
- Entity: Course(id, name, duration)
- Endpoints:
- GET /courses
- GET /courses/{id}
- POST /courses
- DELETE /courses/{id}
- Default port: 8081
- Configure MySQL settings
### 2. student-service
- Document: Student(registrationNumber, fullName, address, contact, email)
- Endpoints:
- GET /students
- GET /students/{id}
- POST /students
- DELETE /students/{id}
- Default port: 8082
- Configure MongoDB settings
### 3. media-service
- Resource: files
- Endpoints:
- POST /files (multipart/form-data: file)
- GET /files (list)
- GET /files/{id} (fetch)
- DELETE /files/{id} (delete)
- Default port: 8083
- Uses local disk storage at `./data/media` by default (override with env var `MEDIA_STORAGE_DIR`).
## Frontend (frontend-app)
- React + TypeScript + MUI + Axios + Vite app with 3 sections: Courses, Students, Media
- Scripts:
- npm run dev (Vite dev server)
- npm run build (TypeScript build + Vite build)
- npm run preview (Preview built app)
## Build
- Backend: run `mvn -q -e -DskipTests package` at repo root to build services.
- Frontend: run `npm install` then `npm run dev` inside `frontend-app`.
---
## ⚙️ Development Environment
In **development mode**:
* **MySQL** and **MongoDB** run inside Docker containers with persistent volumes.
* Backend services are started using the `dev` profile.
### Start MySQL (with volume)
```bash
docker run -d --name mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql -p 15000:3306 mysql:lts
```
### Start MongoDB (with volume)
```bash
docker run --name mongo -v mongo-data:/data/db -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=mongo -p 16000:27017 -d mongo:latest
```
Both containers will persist data in their respective Docker volumes (`mysql-data`, `mongo-data`).
---
## 📌 Built With

[](https://react.dev/)





## 📌 Deploy And Containerize



---
##
Demo Video
- [Watch Demo](https://drive.google.com/file/d/10DJfSJDkzuR5-c9kWxQ5wTiJiTg0Em9-/view?usp=sharing)
##
Connecting Database Instances in AWS and GCP
- [View AWS, GCP Configurations](https://www.notion.so/Cloud-Deployment-In-Action-2631c3d19714802d8acde6264a28dad2?source=copy_link)
## Clone Project
```bash
https://github.com/sasmithx/Cloud-Deployment-In-Action.git
```
##
License
This project is licensed under the MIT License - see the [MIT License](LICENSE) file for details.
## 📄 Student Information
- **Name:** Sasmith Manwadu
- **Registration Number:** 2301682042
- **Email Address:** 888sasmithmanawadu@gmail.com