The Book Store Microservices Project allows users to browse available books, manage their shopping cart, and place orders through a set of independently running services. Each service handles a specific responsibility such as catalog management, inventory tracking, user accounts, or order processing and communicates through RESTful endpoints. The system is designed to be scalable, modular, and easy to extend. Users can interact with the application through the exposed APIs, a UI layer, or both.
See the Development Setup Guide for instructions on how to run the project locally.
As a customer, I want to browse available books, so that I can discover titles to purchase.
Given: A catalog of books is available
When: The user/service requests the list of books
When: The user/service selects a specific book
Then: The system returns the book’s details, including title, author, price, and availability
As a customer, I want to add books to my cart, so that I can purchase multiple items at once.
Given: The user is viewing a book’s details
When: The user/service selects “Add to Cart”
When: The book is in stock per the Inventory Service
Then: The selected book is added to the user’s cart
As a customer, I want to place an order, so that I can complete my purchase.
Given: The user has items in the cart
When: The user/service initiates checkout
When: Payment information is submitted
Then: An order is created and inventory is reduced accordingly
Book – Represents a book entity in the catalog with attributes like title, author, and price. Serves as a resource for other services.
User – Represents a customer or admin interacting with the system. Holds personal information and links to a cart.
Cart – Stores books selected by a user before checkout. Interfaces with Inventory and Order services.
Order – Represents a completed purchase. Tracks items, user, and order status. Communicates with Inventory to update stock.
InventoryItem – Tracks stock levels of each book. Interfaces with Cart and Order services to ensure availability.
{
"title": "Book",
"description": "A book available in the store catalog",
"type": "object",
"properties": {
"bookId": {
"type": "string",
"description": "Unique identifier for the book"
},
"title": {
"type": "string",
"description": "Title of the book"
},
"author": {
"type": "string",
"description": "Author of the book"
},
"price": {
"type": "number",
"description": "Price of the book in USD"
}
},
"required": ["bookId", "title", "author", "price"]
}Nate Osterfeld (Product Owner, Backend Dev)
Ben Wilhelm (UI Dev)
Ethan Zins (Backend Dev)
Miles Cresci (Frontend Dev)