{"id":15134504,"url":"https://github.com/samah222/bookstore-microservices","last_synced_at":"2026-01-20T15:05:20.945Z","repository":{"id":237236840,"uuid":"787314845","full_name":"samah222/BookStore-microservices","owner":"samah222","description":"BookStore microservice using Spring Boot","archived":false,"fork":false,"pushed_at":"2025-04-02T12:30:11.000Z","size":2174,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T13:31:18.066Z","etag":null,"topics":["api-gateway","config-server","docker","docker-compose","intellij","java","javamailsender","maven","mysql","open-api-v3","rabbitmq","service-discovery","spring-actuator","spring-aop","spring-boot","spring-cloud","spring-data-jpa","spring-validation"],"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/samah222.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-04-16T09:39:29.000Z","updated_at":"2025-04-02T13:04:21.000Z","dependencies_parsed_at":"2024-05-05T20:44:49.492Z","dependency_job_id":null,"html_url":"https://github.com/samah222/BookStore-microservices","commit_stats":null,"previous_names":["samah222/bookstore-microservices"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samah222%2FBookStore-microservices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samah222%2FBookStore-microservices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samah222%2FBookStore-microservices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/samah222%2FBookStore-microservices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/samah222","download_url":"https://codeload.github.com/samah222/BookStore-microservices/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247411194,"owners_count":20934650,"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":["api-gateway","config-server","docker","docker-compose","intellij","java","javamailsender","maven","mysql","open-api-v3","rabbitmq","service-discovery","spring-actuator","spring-aop","spring-boot","spring-cloud","spring-data-jpa","spring-validation"],"created_at":"2024-09-26T05:21:47.468Z","updated_at":"2026-01-20T15:05:20.914Z","avatar_url":"https://github.com/samah222.png","language":"Java","readme":"# BookStore microservices\n\nBookStore microservice is a project ro manage Book store which has user management, Books and order services. It\nconsists of the following:\n\n![screenshot](BookStore-zipkin.png)\n\n## Table of Contents\n\n- [Config Server](#Config_Server)\n- [Eureka Server](#Eureka_Server)\n- [API_Gateway](#API_Gateway)\n- [Book Service](#Book_Service)\n- [Order Service](#Order_Service)\n- [User Service](#User_Service)\n- [Mail Server](#Mail_Server)\n- [Zipkin](#Zipkin)\n- [Technologies Used](#Technologies_Used)\n\n### Config Server\n\nIt provides a centralized location for storing and distributing\nconfiguration properties for all bookstore services (eureka server, API gateway,\nbook, order and user) with different profiles(dev, test and prod).\n\n### Eureka Server\n\nIt acts as service discovery for microservices, which is a way for applications and microservices to locate\neach other on a network automatically.\n\n### API Gateway\n\nIt acts as a centralized entry point for all bookstore microservice.\nIt manages the incoming requests and routes them based on key\nfactors such as request path, headers, and query parameters, among others.\n\n### Book Service\n\nBook microservice is responsible for managing books. This service provides APIs for CRUD operations on books,\nincluding adding new books, retrieving book details, updating book information, and deleting books.\nIt uses a relational database MySQL to store book data.\n\n### Order Service\n\nOrder microservice is responsible for managing orders. This service handles creating new orders,\nretrieving order details, updating order status, and canceling orders. It uses database transactions\nto ensure data consistency when processing orders.\n\n### User Service\n\nUser Service is responsible for managing user accounts and authentication. Implement APIs for user registration,\nchange password, password reset, and profile management. It uses RabbitMQ to publish the mail data. So, any\nconsumer (email server or SMS gateway) can consume the messages and send them.\n\n### Mail Server\n\nIt is JavaMail server, that use RabbitMQ to consume the sent emails from all other service. RabbitMQ acts\nas a mediator between producers of messages and consumers who receive and process those messages.\n\n## Zipkin\n\nZipkin is a distributed tracing system that helps gather and visualize data from microservices architectures.\nIt is used in Bookstore microservices to gain insights into the performance and behavior of all services.\n\n## Technologies Used\n\nBookstore microservice project uses many frameworks of Spring Boot as:\n\n- Spring web: to build REST APIs\n- Spring Cloud (Config, Eureka server,OpenFeign): spring cloud provides many sub-projects\n  to manage the microservice, such as providing central config server, service discovery and load-blancer, and\n  REST client to enable the services communicate with each others\n- Spring JPA: to manage DB operations\n- Actuator: to monitor the service and get metrics\n- JavaMailSender: to send emails e.g. user registration token, password change tokens\n- Spring Validation: to validate objects including Hibernate validator.\n- Spring AOP: to encapsulate and modularize cross-cutting concerns (e.g. logging)\n\nIn addition of Spring boot, the project uses the following:\n\n- MYSQL database: used as the relational DB for all services\n- RabbitMQ: to publish the mail for the consumers\n- Docker and Docker-compose: the project provides one docker-compose file so, the whole application can easily build and\n  run\n- springdoc-openapi: automate the generation of API documentation.\n- Zipkin: to gather timing data needed to troubleshoot latency problems for all services.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamah222%2Fbookstore-microservices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamah222%2Fbookstore-microservices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamah222%2Fbookstore-microservices/lists"}