How dhananjai543/booknest works
BookNest is a Spring-based library backend: members browse the catalog and submit loan requests through the gateway; loan placement checks copy availability, persists accepted loans, and publishes an asynchronous notification event. Catalog and availability are distinct domain capabilities, while discovery, identity, and monitoring support the services. The loan and availability excerpts show their internal calls; catalog persistence and several infrastructure connections are documented or only apparent from the module list, so uncertain links are omitted or marked unverified.
Main entry points: ApiGatewayApplication.java API gateway · LoanService.java Loan service · AvailabilityController.java Availability API · BookController.java Book API
Components 17
Entry and Identity
- API gateway
api-gateway/src/main/java/com/booknest/apigateway/ApiGatewayApplication.java - Keycloak
Catalog
- Book API
book-catalog-service/src/main/java/com/booknest/bookcatalogservice/controller/BookController.java - Book service
book-catalog-service/src/main/java/com/booknest/bookcatalogservice/service/BookService.java - Book repository
book-catalog-service/src/main/java/com/booknest/bookcatalogservice/repository/BookRepository.java
Borrowing
- Loan API
loan-service/src/main/java/com/booknest/loanservice/controller/LoanController.java - Loan service
loan-service/src/main/java/com/booknest/loanservice/service/LoanService.java - Loan repository
loan-service/src/main/java/com/booknest/loanservice/repository/LoanRepository.java - Availability API
availability-service/src/main/java/com/booknest/availabilityservice/controller/AvailabilityController.java - Availability service
availability-service/src/main/java/com/booknest/availabilityservice/service/AvailabilityService.java - Copy repository
availability-service/src/main/java/com/booknest/availabilityservice/repository/AvailabilityRepository.java
Platform Services
- Kafka broker
- Notification listener
notification-service/src/main/java/com/booknest/notificationservice/NotificationListener.java - Eureka registry
discovery-server/src/main/java/com/booknest/discoveryserver/DiscoveryServerApplication.java - Prometheus
- Grafana
Other components
- Library member
Connections 16
- Library member → API gateway: uses
README.md - API gateway → Keycloak: secures with
- API gateway → Book API: routes to
README.md - API gateway → Loan API: routes to
README.md - API gateway → Availability API: routes to
README.md - Book API → Book service: delegates to
book-catalog-service/src/main/java/com/booknest/bookcatalogservice/controller/BookController.java - Book service → Book repository: persists via
- Loan API → Loan service: delegates to
loan-service/src/main/java/com/booknest/loanservice/controller/LoanController.java - Loan service → Availability API: checks copies
loan-service/src/main/java/com/booknest/loanservice/service/LoanService.java - Availability API → Availability service: delegates to
availability-service/src/main/java/com/booknest/availabilityservice/controller/AvailabilityController.java - Availability service → Copy repository: reads copies
availability-service/src/main/java/com/booknest/availabilityservice/service/AvailabilityService.java - Loan service → Loan repository: saves loans
loan-service/src/main/java/com/booknest/loanservice/service/LoanService.java - Loan service → Kafka broker: publishes event
loan-service/src/main/java/com/booknest/loanservice/service/LoanService.java - Kafka broker → Notification listener: delivers event
notification-service/src/main/java/com/booknest/notificationservice/NotificationListener.java - Prometheus → Grafana: feeds dashboards
README.md - Eureka registry → API gateway: supports discovery