{"id":29353746,"url":"https://github.com/Pranavsolanki01/Realtime-Communication","last_synced_at":"2025-12-30T22:13:45.028Z","repository":{"id":303086591,"uuid":"1014358932","full_name":"Pranavsolanki01/hello-app","owner":"Pranavsolanki01","description":"A cloud-native microservices application built using Spring Boot, Apache Kafka, MySQL, Docker, and Kubernetes. This project demonstrates the fundamentals of distributed systems using event-driven architecture, REST APIs, and modern container orchestration.","archived":false,"fork":false,"pushed_at":"2025-07-05T15:52:45.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-05T16:36:41.374Z","etag":null,"topics":["apache-kafka","cloudnative","cloudnative-services","docker","docker-compose","docker-container","java","kubernetes","kubernetes-cluster","kubernetes-deployment","microservice","microservices-architecture","spring-boot","springboot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Pranavsolanki01.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-07-05T15:08:03.000Z","updated_at":"2025-07-05T15:52:48.000Z","dependencies_parsed_at":"2025-07-05T16:53:04.488Z","dependency_job_id":null,"html_url":"https://github.com/Pranavsolanki01/hello-app","commit_stats":null,"previous_names":["pranavsolanki01/hello-app"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Pranavsolanki01/hello-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pranavsolanki01%2Fhello-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pranavsolanki01%2Fhello-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pranavsolanki01%2Fhello-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pranavsolanki01%2Fhello-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Pranavsolanki01","download_url":"https://codeload.github.com/Pranavsolanki01/hello-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Pranavsolanki01%2Fhello-app/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264379216,"owners_count":23598824,"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","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":["apache-kafka","cloudnative","cloudnative-services","docker","docker-compose","docker-container","java","kubernetes","kubernetes-cluster","kubernetes-deployment","microservice","microservices-architecture","spring-boot","springboot"],"created_at":"2025-07-09T02:09:08.948Z","updated_at":"2025-12-30T22:13:45.019Z","avatar_url":"https://github.com/Pranavsolanki01.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 👋 Realtime-Communication\n\nA cloud-native microservices application built using Spring Boot, Apache Kafka, MySQL, Docker, and Kubernetes. This project demonstrates the fundamentals of distributed systems using event-driven architecture, REST APIs, and modern container orchestration.\n\n---\n\n## 📌 Project Overview\n\nThe **Hello Application** is a microservices-based system that includes:\n\n- **Producer Service** – Publishes messages to Kafka.\n- **Consumer Service** – Consumes messages from Kafka and writes to MySQL.\n- **Hello Service** – Serves simple REST-based greetings.\n- **API Gateway** – Exposes a unified entry point for routing client requests to internal services.\n\nAll services are containerized and managed with Docker Compose and Kubernetes for scalable deployment.\n\n---\n\n## 📂 Folder Structure\n\n```\n      hello-app/\n      │\n      ├── producer-service/\n      │   ├── src/...\n      │   ├── Dockerfile\n      │\n      ├── consumer-service/\n      │   ├── src/...\n      │   ├── Dockerfile\n      │\n      ├── hello-service/\n      │   ├── src/...\n      │   ├── Dockerfile\n      │\n      ├── api-gateway/\n      │   ├── src/...\n      │   ├── Dockerfile\n      │\n      ├── docker/\n      │   ├── docker-compose.yml (Kafka + MySQL)\n      │\n      └── k8s/\n            ├── producer-deployment.yml\n            ├── consumer-deployment.yml\n            ├── mysql-deployment.yml\n            ├── kafka-deployment.yml\n            ├── gateway-ingress.yml\n\n```\n\n## 🧱 Architecture\n\n### Components:\n\n- **Microservices**: Spring Boot services (producer, consumer, hello-service)\n- **Event Broker**: Kafka (Confluent Platform)\n- **Database**: MySQL\n- **Gateway**: Spring Cloud Gateway\n\n```\n                          +------------------------+\n                          |      API Gateway       |\n                          |    (Spring Cloud)      |\n                          +-----------+------------+\n                                      |\n        +-----------------------------+-----------------------------+\n        |                             |                             |\n        v                             v                             v\n  +-------------+             +---------------+               +-------------+\n  | Hello       |             | Producer      |               |   Kafka     |\n  | Service     |             | Service       |--------------\u003e| (Broker)    |\n  +-------------+             +---------------+               +-------------+\n        |                                                          |\n        |                                                          v\n        |                                                  +---------------+\n        |                                                  |  Consumer     |\n        +-----------------------------------------------\u003e  |  Service      |\n                                                           | (writes to DB)|\n                                                           +-------+-------+\n                                                                   |\n                                                                   v\n                                                           +---------------+\n                                                           |    MySQL      |\n                                                           |   hello_db    |\n                                                           +---------------+\n\n```\n\n---\n\n## 🐳 Docker Setup\n\n### 📁 Prerequisites\n\n- [Docker](https://www.docker.com/)\n- [Docker Compose](https://docs.docker.com/compose/)\n\n### ⚙️ Steps to Run\n\n1. Open your terminal and navigate to the Docker setup folder:\n\n   ```bash\n   cd docker\n   ```\n\n2. Build and start all containers:\n\n   ```bash\n   docker compose up --build -d\n   ```\n####  Steps to Run Locally (Outside of the Docker)\n\n\n### 🌐 Services will be available on:\n\n- **API Gateway**: `http://localhost:8080`\n- **Producer Service**: `http://localhost:8081`\n- **Consumer Service**: `http://localhost:8082`\n- **Hello Service**: `http://localhost:8083`\n- **Kafka Broker**: `localhost:9092`\n- **MySQL Database**: `localhost:3307` (mapped to container's port `3306`)\n\n## ☸️ Kubernetes Setup\n\nAll Kubernetes manifests are in the `k8s/` directory.\n\n### 📂 Kubernetes Files\n\n```\n      k8s/\n      ├── producer-deployment.yml\n      ├── consumer-deployment.yml\n      ├── hello-deployment.yml\n      ├── kafka-deployment.yml\n      ├── mysql-deployment.yml\n      └── gateway-ingress.yml\n```\n\n### ⚙️ Steps to Deploy\n\n1. **Ensure your Kubernetes cluster is running**  \n   You can use tools like Docker Desktop (with Kubernetes enabled) or Minikube.\n\n2. **Apply all the Kubernetes manifests**  \n   Run the following command from the project root:\n\n   ```bash\n   kubectl apply -f k8s/\n\n   ```\n\n3. **Verify the resources are up and running**\n\n   ```bash\n   kubectl get pods\n   kubectl get svc\n   ```\n\n4. **If using an Ingress Controller (like NGINX), make sure it's installed and running**\n   The gateway will be exposed via the gateway-ingress.yml.\n\n## 📦 Technologies Used\n\n- **Java 21, Spring Boot**\n- **Apache Kafka**\n- **MySQL**\n- **Docker \u0026 Docker Compose**\n- **Kubernetes**\n- **Spring Cloud Gateway**\n\n## 👨‍💻 Author\n\n- **Pranav Singh Solanki**\n\n##### Feel free to open issues or contribute to the project!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPranavsolanki01%2FRealtime-Communication","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPranavsolanki01%2FRealtime-Communication","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPranavsolanki01%2FRealtime-Communication/lists"}