{"id":16998598,"url":"https://github.com/sivaprasadreddy/spring-boot-microservices-course","last_synced_at":"2025-04-07T11:09:54.129Z","repository":{"id":231255859,"uuid":"781252357","full_name":"sivaprasadreddy/spring-boot-microservices-course","owner":"sivaprasadreddy","description":"YouTube Spring Boot Microservices Course Application","archived":false,"fork":false,"pushed_at":"2024-10-14T02:47:27.000Z","size":3321,"stargazers_count":60,"open_issues_count":10,"forks_count":26,"subscribers_count":7,"default_branch":"main","last_synced_at":"2024-10-15T04:05:33.798Z","etag":null,"topics":["alpinejs","docker-compose","grafana","keycloak","loki","maven","microservices","oauth2","postgresql","prometheus","rabbitmq","spring-boot","spring-cloud-gateway","testcontainers","thymeleaf"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sivaprasadreddy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-04-03T03:04:50.000Z","updated_at":"2024-10-13T19:59:08.000Z","dependencies_parsed_at":"2024-08-18T12:45:46.208Z","dependency_job_id":"90e5d76e-23c7-4f93-abc5-617a7b5dba55","html_url":"https://github.com/sivaprasadreddy/spring-boot-microservices-course","commit_stats":null,"previous_names":["sivaprasadreddy/spring-boot-microservices-course"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sivaprasadreddy%2Fspring-boot-microservices-course","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sivaprasadreddy%2Fspring-boot-microservices-course/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sivaprasadreddy%2Fspring-boot-microservices-course/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sivaprasadreddy%2Fspring-boot-microservices-course/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sivaprasadreddy","download_url":"https://codeload.github.com/sivaprasadreddy/spring-boot-microservices-course/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247640465,"owners_count":20971557,"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":["alpinejs","docker-compose","grafana","keycloak","loki","maven","microservices","oauth2","postgresql","prometheus","rabbitmq","spring-boot","spring-cloud-gateway","testcontainers","thymeleaf"],"created_at":"2024-10-14T04:05:42.565Z","updated_at":"2025-04-07T11:09:54.098Z","avatar_url":"https://github.com/sivaprasadreddy.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spring Boot Microservices Course\nThis repository contains the source code for the [Spring Boot Microservices Course](https://www.youtube.com/playlist?list=PLuNxlOYbv61g_ytin-wgkecfWDKVCEDmB).\n\n![Spring Boot Microservices course](docs/youtube-thumbnail.png)\n\nWe will build a BookStore application using Spring Boot, Spring Cloud, and Docker.\n\n![BookStore Microservices Architecture](docs/bookstore-spring-microservices.png)\n\n## Modules\n* **catalog-service**: \n  This services provides REST API for managing catalog of products(books).\n  \n  **TechStack:** Spring Boot, Spring Data JPA, PostgreSQL\n\n* **order-service**: \n  This service provides the REST API for managing orders and publishes order events to the message broker.\n\n  **TechStack:** Spring Boot, Spring Security OAuth2, Keycloak, Spring Data JPA, PostgreSQL, RabbitMQ\n\n* **notification-service**: \n  This service listens to the order events and sends notifications to the users.\n  \n  **TechStack:** Spring Boot, RabbitMQ\n\n* **api-gateway**: \n  This service is an API Gateway to the internal backend services (catalog-service, order-service).\n\n  **TechStack:** Spring Boot, Spring Cloud Gateway\n\n* **bookstore-webapp**: \n  This is the customer facing web application where customers can browse the catalog, place orders, and view their order details. \n\n  **TechStack:** Spring Boot, Spring Security OAuth2, Keycloak, Thymeleaf, Alpine.js, Bootstrap\n\n## Learning Objectives\n* Building Spring Boot REST APIs\n* Database Persistence using Spring Data JPA, Postgres, Flyway\n* Event Driven Async Communication using RabbitMQ\n* Implementing OAuth2-based Security using Spring Security and Keycloak\n* Implementing API Gateway using Spring Cloud Gateway\n* Implementing Resiliency using Resilience4j\n* Job Scheduling with ShedLock-based distributed Locking\n* Using RestClient, Declarative HTTP Interfaces to invoke other APIs\n* Creating Aggregated Swagger Documentation at API Gateway\n* Local Development Setup using Docker, Docker Compose and Testcontainers\n* Testing using JUnit 5, RestAssured, Testcontainers, Awaitility, WireMock\n* Building Web Application using Thymeleaf, Alpine.js, Bootstrap\n* Monitoring \u0026 Observability using Grafana, Prometheus, Loki, Tempo\n\n## Local Development Setup\n* Install Java 21. Recommend using [SDKMAN](https://sdkman.io/) for [managing Java versions](https://youtu.be/ZywEiw3EO8A).\n* Install [Docker Desktop](https://www.docker.com/products/docker-desktop/)\n* Install [IntelliJ IDEA](https://www.jetbrains.com/idea) or any of your favorite IDE\n* Install [Postman](https://www.postman.com/) or any REST Client\n\n## Other Learning Resources\n* [SivaLabs Blog](https://sivalabs.in)\n  * [Spring Boot Tutorials](https://www.sivalabs.in/spring-boot-tutorials/)\n  * [Kubernetes Tutorials](https://www.sivalabs.in/getting-started-with-kubernetes/)\n  * [Spring Security OAuth 2.0 Tutorials](https://www.sivalabs.in/spring-security-oauth2-tutorial-introduction/)\n  * [A Pragmatic Approach to Software Design](https://www.sivalabs.in/tomato-architecture-pragmatic-approach-to-software-design/)\n* [SivaLabs YouTube Channel](https://www.youtube.com/c/SivaLabs)\n  * [Spring Boot Tips Series](https://www.youtube.com/playlist?list=PLuNxlOYbv61jFFX2ARQKnBgkMF6DvEEic)\n  * [Spring Boot + Kubernetes Series](https://www.youtube.com/playlist?list=PLuNxlOYbv61h66_QlcjCEkVAj6RdeplJJ)\n  * [Spring Boot : The Missing Guide](https://www.youtube.com/playlist?list=PLuNxlOYbv61jZL1IiciTgWezZoqEp4WXh)\n  * [Java Testing Made Easy: Learn writing Unit, Integration, E2E \u0026 Performance Tests](https://www.youtube.com/playlist?list=PLuNxlOYbv61jtHHFHBOc9N7Dg5jn013ix)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsivaprasadreddy%2Fspring-boot-microservices-course","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsivaprasadreddy%2Fspring-boot-microservices-course","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsivaprasadreddy%2Fspring-boot-microservices-course/lists"}