{"id":14972009,"url":"https://github.com/saiupadhyayula/spring-boot-3-microservices-course","last_synced_at":"2025-04-06T03:05:33.045Z","repository":{"id":251458368,"uuid":"831622819","full_name":"SaiUpadhyayula/spring-boot-3-microservices-course","owner":"SaiUpadhyayula","description":"Spring Boot 3 Microservices Course Repository","archived":false,"fork":false,"pushed_at":"2024-08-09T08:59:13.000Z","size":332,"stargazers_count":265,"open_issues_count":3,"forks_count":156,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-06T03:05:28.330Z","etag":null,"topics":["angular","gateway","grafana","kafka","keycloak","kubernetes","loki","microservices","oauth2","schema-registry","spring-boot","tempo","testcontainers"],"latest_commit_sha":null,"homepage":"https://youtu.be/yn_stY3HCr8?si=EjrBEUl0P-bzSWRG","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/SaiUpadhyayula.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}},"created_at":"2024-07-21T05:59:54.000Z","updated_at":"2025-04-05T23:11:38.000Z","dependencies_parsed_at":"2024-08-09T10:10:35.039Z","dependency_job_id":null,"html_url":"https://github.com/SaiUpadhyayula/spring-boot-3-microservices-course","commit_stats":{"total_commits":12,"total_committers":1,"mean_commits":12.0,"dds":0.0,"last_synced_commit":"9cc3cc7c37ab25315d8d92bd58dae19fdfff3b65"},"previous_names":["saiupadhyayula/spring-boot-3-microservices-course"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SaiUpadhyayula%2Fspring-boot-3-microservices-course","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SaiUpadhyayula%2Fspring-boot-3-microservices-course/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SaiUpadhyayula%2Fspring-boot-3-microservices-course/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SaiUpadhyayula%2Fspring-boot-3-microservices-course/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SaiUpadhyayula","download_url":"https://codeload.github.com/SaiUpadhyayula/spring-boot-3-microservices-course/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247427005,"owners_count":20937200,"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":["angular","gateway","grafana","kafka","keycloak","kubernetes","loki","microservices","oauth2","schema-registry","spring-boot","tempo","testcontainers"],"created_at":"2024-09-24T13:46:11.532Z","updated_at":"2025-04-06T03:05:33.023Z","avatar_url":"https://github.com/SaiUpadhyayula.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spring Boot Microservices\nThis repository contains the latest source code of the spring-boot-microservices tutorial\n\nYou can watch the tutorial on Youtube [here](https://youtu.be/yn_stY3HCr8?si=EjrBEUl0P-bzSWRG)\n\n## Services Overview\n\n- Product Service\n- Order Service\n- Inventory Service\n- Notification Service\n- API Gateway using Spring Cloud Gateway MVC\n- Shop Frontend using Angular 18\n\n## Tech Stack\n\nThe technologies used in this project are:\n\n- Spring Boot\n- Angular\n- Mongo DB\n- MySQL\n- Kafka\n- Keycloak\n- Test Containers with Wiremock\n- Grafana Stack (Prometheus, Grafana, Loki and Tempo)\n- API Gateway using Spring Cloud Gateway MVC\n- Kubernetes\n\n\n## Application Architecture\n![image](https://github.com/user-attachments/assets/d4ef38bd-8ae5-4cc7-9ac5-7a8e5ec3c969)\n\n## How to run the frontend application\n\nMake sure you have the following installed on your machine:\n\n- Node.js\n- NPM\n- Angular CLI\n\nRun the following commands to start the frontend application\n\n```shell\ncd frontend\nnpm install\nnpm run start\n```\n## How to build the backend services\n\nRun the following command to build and package the backend services into a docker container\n\n```shell\nmvn spring-boot:build-image -DdockerPassword=\u003cyour-docker-account-password\u003e\n```\n\nThe above command will build and package the services into a docker container and push it to your docker hub account.\n\n## How to run the backend services\n\nMake sure you have the following installed on your machine:\n\n- Java 21\n- Docker\n- Kind Cluster - https://kind.sigs.k8s.io/docs/user/quick-start/#installation\n\n### Start Kind Cluster\n    \nRun the k8s/kind/create-kind-cluster.sh script to create the kind Kubernetes cluster\n\n```shell\n./k8s/kind/create-kind-cluster.sh\n```\nThis will create a kind cluster and pre-load all the required docker images into the cluster, this will save you time downloading the images when you deploy the application.\n\n### Deploy the infrastructure\n\nRun the k8s/manisfests/infrastructure.yaml file to deploy the infrastructure\n\n```shell\nkubectl apply -f k8s/manifests/infrastructure.yaml\n```\n\n### Deploy the services\n\nRun the k8s/manifests/applications.yaml file to deploy the services\n\n```shell\nkubectl apply -f k8s/manifests/applications.yaml\n```\n\n### Access the API Gateway\n\nTo access the API Gateway, you need to port-forward the gateway service to your local machine\n\n```shell\nkubectl port-forward svc/gateway-service 9000:9000\n```\n\n### Access the Keycloak Admin Console\nTo access the Keycloak admin console, you need to port-forward the keycloak service to your local machine\n\n```shell\nkubectl port-forward svc/keycloak 8080:8080\n```\n\n### Access the Grafana Dashboards\nTo access the Grafana dashboards, you need to port-forward the grafana service to your local machine\n\n```shell\nkubectl port-forward svc/grafana 3000:3000\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaiupadhyayula%2Fspring-boot-3-microservices-course","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaiupadhyayula%2Fspring-boot-3-microservices-course","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaiupadhyayula%2Fspring-boot-3-microservices-course/lists"}