{"id":31824362,"url":"https://github.com/sasmithx/cloud-deployment-in-action","last_synced_at":"2025-10-11T15:23:06.891Z","repository":{"id":315249648,"uuid":"1049531477","full_name":"sasmithx/Cloud-Deployment-In-Action","owner":"sasmithx","description":"✨ 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.","archived":false,"fork":false,"pushed_at":"2025-09-17T13:20:25.000Z","size":73,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-17T15:27:05.780Z","etag":null,"topics":["aurora-mysql","aws","axios","docker","gcp","java","material-ui","microservices","mongodb","mysql","react","spring-boot","typescript","vite"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sasmithx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-03T05:51:33.000Z","updated_at":"2025-09-17T13:20:30.000Z","dependencies_parsed_at":"2025-09-17T15:38:56.584Z","dependency_job_id":null,"html_url":"https://github.com/sasmithx/Cloud-Deployment-In-Action","commit_stats":null,"previous_names":["sasmithx/cloud-deployment-in-action"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/sasmithx/Cloud-Deployment-In-Action","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sasmithx%2FCloud-Deployment-In-Action","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sasmithx%2FCloud-Deployment-In-Action/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sasmithx%2FCloud-Deployment-In-Action/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sasmithx%2FCloud-Deployment-In-Action/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sasmithx","download_url":"https://codeload.github.com/sasmithx/Cloud-Deployment-In-Action/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sasmithx%2FCloud-Deployment-In-Action/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279007597,"owners_count":26084333,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-11T02:00:06.511Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aurora-mysql","aws","axios","docker","gcp","java","material-ui","microservices","mongodb","mysql","react","spring-boot","typescript","vite"],"created_at":"2025-10-11T15:23:04.392Z","updated_at":"2025-10-11T15:23:06.880Z","avatar_url":"https://github.com/sasmithx.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Cloud Enabled Deployment In Action with AWS, GCP\n\n🚀 This project demonstrates a cloud-enabled ☁️ microservices-based deployment using Spring Boot 🍃, React ⚛️, AWS 🟨, GCP 🔵, and Docker 🐳.\nIt showcases how to build 🛠️, containerize 📦, and deploy 🚢 backend services and a frontend application with cloud-managed 🌐 and self-hosted 🖥️ databases.\n\nThis repository contains four projects:\n\n- course-service (Spring Boot + MySQL)\n- student-service (Spring Boot + MongoDB)\n- media-service (Spring Boot + Local file storage, can be extended to S3/MinIO)\n- frontend-app (React + TypeScript)\n\n## Backend Services\n\n### 1. course-service\n- Entity: Course(id, name, duration)\n- Endpoints:\n    - GET /courses\n    - GET /courses/{id}\n    - POST /courses\n    - DELETE /courses/{id}\n- Default port: 8081\n- Configure MySQL settings\n\n### 2. student-service\n- Document: Student(registrationNumber, fullName, address, contact, email)\n- Endpoints:\n    - GET /students\n    - GET /students/{id}\n    - POST /students\n    - DELETE /students/{id}\n- Default port: 8082\n- Configure MongoDB settings\n\n### 3. media-service\n- Resource: files\n- Endpoints:\n    - POST /files (multipart/form-data: file)\n    - GET /files (list)\n    - GET /files/{id} (fetch)\n    - DELETE /files/{id} (delete)\n- Default port: 8083\n- Uses local disk storage at `./data/media` by default (override with env var `MEDIA_STORAGE_DIR`).\n\n## Frontend (frontend-app)\n- React + TypeScript + MUI + Axios + Vite app with 3 sections: Courses, Students, Media\n- Scripts:\n    - npm run dev (Vite dev server)\n    - npm run build (TypeScript build + Vite build)\n    - npm run preview (Preview built app)\n\n## Build\n\n- Backend: run `mvn -q -e -DskipTests package` at repo root to build services.\n- Frontend: run `npm install` then `npm run dev` inside `frontend-app`.\n\n---  \n\n## ⚙️ Development Environment\n\nIn **development mode**:\n\n* **MySQL** and **MongoDB** run inside Docker containers with persistent volumes.\n* Backend services are started using the `dev` profile.\n\n### Start MySQL (with volume)\n\n```bash\n\ndocker run -d --name mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mysql -p 15000:3306 mysql:lts\n```\n\n### Start MongoDB (with volume)\n\n```bash\n\ndocker 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\n```\n\nBoth containers will persist data in their respective Docker volumes (`mysql-data`, `mongo-data`).\n\n---\n\n## 📌 Built With\n\n![Springboot](https://img.shields.io/badge/Spring_Boot-6DB33F?style=for-the-badge\u0026logo=spring-boot\u0026logoColor=white)\n[![React.js](https://img.shields.io/badge/React-000000?style=for-the-badge\u0026logo=react\u0026logoColor=61DAFB)](https://react.dev/)\n![TypeScript](https://img.shields.io/badge/TypeScript-007ACC?style=for-the-badge\u0026logo=typescript\u0026logoColor=white)\n![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge\u0026logo=node.js\u0026logoColor=white)\n![NPM](https://img.shields.io/badge/NPM-%23000000.svg?style=for-the-badge\u0026logo=npm\u0026logoColor=white)\n![MySQL](\thttps://img.shields.io/badge/MySQL-005C84?style=for-the-badge\u0026logo=mysql\u0026logoColor=white)\n![MongoDB](https://img.shields.io/badge/MongoDB-%234ea94b.svg?style=for-the-badge\u0026logo=mongodb\u0026logoColor=white)\n\n## 📌 Deploy And Containerize\n\n![AWS](https://img.shields.io/badge/AWS-000000?style=for-the-badge\u0026logo=amazonaws\u0026logoColor=FF9900)\n![Google Cloud](https://img.shields.io/badge/Google_Cloud-4285F4?style=for-the-badge\u0026logo=google-cloud\u0026logoColor=white)\n![Docker](https://img.shields.io/badge/Docker-2CA5E0?style=for-the-badge\u0026logo=docker\u0026logoColor=white)\n\n---\n\n##  \u003cimg src=\"https://raw.githubusercontent.com/Tarikul-Islam-Anik/Animated-Fluent-Emojis/master/Emojis/Travel%20and%20places/High%20Voltage.png\" style=\"width: 50px; height: 50px;\" alt=\"\"\u003eDemo Video\n\n- [Watch Demo](https://drive.google.com/file/d/10DJfSJDkzuR5-c9kWxQ5wTiJiTg0Em9-/view?usp=sharing)\n\n##  \u003cimg src=\"https://user-images.githubusercontent.com/74038190/216122003-1c7d9078-357a-47f5-81c7-1c4f2552e143.png\" style=\"width: 50px; height: 50px;\" alt=\"\"\u003eConnecting Database Instances in AWS and GCP\n\n- [View AWS, GCP Configurations](https://www.notion.so/Cloud-Deployment-In-Action-2631c3d19714802d8acde6264a28dad2?source=copy_link)\n\n## Clone Project\n\n\n```bash\n  https://github.com/sasmithx/Cloud-Deployment-In-Action.git\n```\n## \u003cimg src=\"https://user-images.githubusercontent.com/74038190/216122069-5b8169d7-1d8e-4a13-b245-a8e4176c99f8.png\" style=\"width: 50px; height: 50px;\" alt=\"\"\u003eLicense\nThis project is licensed under the MIT License - see the [MIT License](LICENSE) file for details.\n\n\u003cbr\u003e\n\n## 📄 Student Information\n\n- **Name:** Sasmith Manwadu\n- **Registration Number:** 2301682042\n- **Email Address:** 888sasmithmanawadu@gmail.com\n\n\u003cbr\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/AWS-000000?style=for-the-badge\u0026logo=amazonaws\u0026logoColor=FF9900\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Google_Cloud-4285F4?style=for-the-badge\u0026logo=google-cloud\u0026logoColor=white\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Docker-2CA5E0?style=for-the-badge\u0026logo=docker\u0026logoColor=white\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Ubuntu-E95420?style=for-the-badge\u0026logo=ubuntu\u0026logoColor=white\" /\u003e\n\u003c/div\u003e \u003cbr\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsasmithx%2Fcloud-deployment-in-action","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsasmithx%2Fcloud-deployment-in-action","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsasmithx%2Fcloud-deployment-in-action/lists"}