# hissamr/bookmind architecture

> Architecture diagram of the GitHub repository hissamr/bookmind, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hissamr/bookmind
- Repository: https://github.com/hissamr/bookmind

## Overview

BookMind is a Spring Boot REST API for book discovery and commerce. Users browse and filter a catalog, authenticate, manage carts and wishlists, and work with orders; administrators also manage catalog and order status. The sampled services show business logic delegating to Spring Data repositories, while the README documents additional API capabilities. AI summaries and recommendations are marked coming soon, so their wiring is not assumed. The excerpts do not establish checkout-to-order dispatch or external database/cache calls.

Main entry points: [`src/main/java/com/bookmind/service/WishListService.java`](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/service/WishListService.java) (Wishlist service), [`src/main/java/com/bookmind/repository/BookRepository.java`](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/repository/BookRepository.java) (Book repository), [`src/main/java/com/bookmind/controller/CartController.java`](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/controller/CartController.java) (Cart API), [`src/main/java/com/bookmind/controller/WishListController.java`](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/controller/WishListController.java) (Wishlist API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_application["Application entry"]
  node_book_api["Book API"]
  node_cart_api["Cart API"]
  node_order_api["Order API"]
  node_wishlist_api["Wishlist API"]
  node_auth_api["Authentication API"]
  node_summary_api["Summary API"]
end

subgraph group_commerce["Commerce Services"]
  node_catalog["Catalog service<br/>[BookService.java]"]
  node_cart["Cart service<br/>[CartService.java]"]
  node_orders["Order service<br/>[OrderService.java]"]
  node_wishlists["Wishlist service"]
  node_summary_service["Summary service"]
end

subgraph group_identity["Identity and Security"]
  node_auth["Authentication service"]
  node_security["JWT security"]
  node_user_provider["Current-user provider"]
  node_security_config["Security configuration"]
end

subgraph group_data["Persistence and AI"]
  node_book_repo["Book repository"]
  node_cart_repo["Cart repositories"]
  node_order_repo["Order repositories"]
  node_wishlist_repo["Wishlist repository"]
  node_user_repo["User repository"]
  node_google_ai["Google AI client"]
end

node_shopper(("Shopper / Admin"))
node_ai_provider(("AI provider"))
node_database[("Relational database")]

node_shopper -->|"browses / manages"| node_book_api
node_shopper -->|"manages cart"| node_cart_api
node_shopper -->|"manages orders"| node_order_api
node_shopper -->|"manages lists"| node_wishlist_api
node_shopper -->|"authenticates"| node_auth_api
node_shopper -->|"requests summaries"| node_summary_api
node_book_api -->|"invokes"| node_catalog
node_catalog -->|"searches / persists"| node_book_repo
node_cart_api -->|"invokes"| node_cart
node_cart_api -->|"gets user ID"| node_user_provider
node_cart -->|"reads / writes"| node_cart_repo
node_cart -->|"loads books"| node_book_repo
node_order_api -->|"invokes"| node_orders
node_orders -->|"reads / writes"| node_order_repo
node_wishlist_api -->|"invokes"| node_wishlists
node_wishlist_api -->|"gets user ID"| node_user_provider
node_wishlists -->|"reads / writes"| node_wishlist_repo
node_wishlists -->|"loads / saves users"| node_user_repo
node_wishlists -->|"loads books"| node_book_repo
node_auth_api -->|"invokes"| node_auth
node_auth -->|"reads / writes users"| node_user_repo
node_auth_api -->|"uses authenticated context"| node_security
node_security_config -->|"configures filter"| node_security
node_summary_api -->|"invokes"| node_summary_service
node_summary_service -.->|"delegates summary"| node_google_ai
node_google_ai -.->|"requests generation"| node_ai_provider
node_book_repo -->|"reads / writes"| node_database
node_cart_repo -->|"reads / writes"| node_database
node_order_repo -->|"reads / writes"| node_database
node_wishlist_repo -->|"reads / writes"| node_database
node_user_repo -->|"reads / writes"| node_database

click node_application "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/BookMindApplication.java"
click node_book_api "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/controller/BookController.java"
click node_cart_api "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/controller/CartController.java"
click node_order_api "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/controller/OrderController.java"
click node_wishlist_api "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/controller/WishListController.java"
click node_auth_api "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/controller/AuthenticationController.java"
click node_summary_api "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/controller/BookSummaryController.java"
click node_catalog "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/service/BookService.java"
click node_cart "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/service/CartService.java"
click node_orders "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/service/OrderService.java"
click node_wishlists "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/service/WishListService.java"
click node_auth "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/service/AuthenticationService.java"
click node_security "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/security/JwtAuthenticationFilter.java"
click node_user_provider "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/security/AuthenticatedUserProvider.java"
click node_security_config "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/config/SecurityConfiguration.java"
click node_book_repo "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/repository/BookRepository.java"
click node_cart_repo "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/repository/CartRepository.java"
click node_order_repo "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/repository/OrderRepository.java"
click node_wishlist_repo "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/repository/WishListRepository.java"
click node_user_repo "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/repository/UserRepository.java"
click node_summary_service "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/service/BookSummaryService.java"
click node_google_ai "https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/service/GoogleAiClient.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_application,node_book_api,node_cart_api,node_order_api,node_wishlist_api,node_auth_api,node_summary_api toneBlue
class node_catalog,node_cart,node_orders,node_wishlists,node_summary_service,node_database toneAmber
class node_auth,node_security,node_user_provider,node_security_config toneMint
class node_book_repo,node_cart_repo,node_order_repo,node_wishlist_repo,node_user_repo,node_google_ai toneRose
class node_shopper,node_ai_provider toneIndigo
```

## Components

### REST API

- [Application entry](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/BookMindApplication.java): `src/main/java/com/bookmind/BookMindApplication.java`
- [Book API](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/controller/BookController.java): `src/main/java/com/bookmind/controller/BookController.java`
- [Cart API](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/controller/CartController.java): `src/main/java/com/bookmind/controller/CartController.java`
- [Order API](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/controller/OrderController.java): `src/main/java/com/bookmind/controller/OrderController.java`
- [Wishlist API](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/controller/WishListController.java): `src/main/java/com/bookmind/controller/WishListController.java`
- [Authentication API](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/controller/AuthenticationController.java): `src/main/java/com/bookmind/controller/AuthenticationController.java`
- [Summary API](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/controller/BookSummaryController.java): `src/main/java/com/bookmind/controller/BookSummaryController.java`

### Commerce Services

- [Catalog service](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/service/BookService.java): `src/main/java/com/bookmind/service/BookService.java`
- [Cart service](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/service/CartService.java): `src/main/java/com/bookmind/service/CartService.java`
- [Order service](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/service/OrderService.java): `src/main/java/com/bookmind/service/OrderService.java`
- [Wishlist service](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/service/WishListService.java): `src/main/java/com/bookmind/service/WishListService.java`
- [Summary service](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/service/BookSummaryService.java): `src/main/java/com/bookmind/service/BookSummaryService.java`

### Identity and Security

- [Authentication service](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/service/AuthenticationService.java): `src/main/java/com/bookmind/service/AuthenticationService.java`
- [JWT security](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/security/JwtAuthenticationFilter.java): `src/main/java/com/bookmind/security/JwtAuthenticationFilter.java`
- [Current-user provider](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/security/AuthenticatedUserProvider.java): `src/main/java/com/bookmind/security/AuthenticatedUserProvider.java`
- [Security configuration](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/config/SecurityConfiguration.java): `src/main/java/com/bookmind/config/SecurityConfiguration.java`

### Persistence and AI

- [Book repository](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/repository/BookRepository.java): `src/main/java/com/bookmind/repository/BookRepository.java`
- [Cart repositories](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/repository/CartRepository.java): `src/main/java/com/bookmind/repository/CartRepository.java`
- [Order repositories](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/repository/OrderRepository.java): `src/main/java/com/bookmind/repository/OrderRepository.java`
- [Wishlist repository](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/repository/WishListRepository.java): `src/main/java/com/bookmind/repository/WishListRepository.java`
- [User repository](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/repository/UserRepository.java): `src/main/java/com/bookmind/repository/UserRepository.java`
- [Google AI client](https://github.com/hissamr/bookmind/blob/main/src/main/java/com/bookmind/service/GoogleAiClient.java): `src/main/java/com/bookmind/service/GoogleAiClient.java`

### Other components

- **Shopper / Admin**
- **AI provider**
- **Relational database**

## Connections

- Shopper / Admin → Book API: browses / manages
- Shopper / Admin → Cart API: manages cart
- Shopper / Admin → Order API: manages orders
- Shopper / Admin → Wishlist API: manages lists
- Shopper / Admin → Authentication API: authenticates
- Shopper / Admin → Summary API: requests summaries
- Book API → Catalog service: invokes
- Catalog service → Book repository: searches / persists
- Cart API → Cart service: invokes
- Cart API → Current-user provider: gets user ID
- Cart service → Cart repositories: reads / writes
- Cart service → Book repository: loads books
- Order API → Order service: invokes
- Order service → Order repositories: reads / writes
- Wishlist API → Wishlist service: invokes
- Wishlist API → Current-user provider: gets user ID
- Wishlist service → Wishlist repository: reads / writes
- Wishlist service → User repository: loads / saves users
- Wishlist service → Book repository: loads books
- Authentication API → Authentication service: invokes
- Authentication service → User repository: reads / writes users
- Authentication API → JWT security: uses authenticated context
- Security configuration → JWT security: configures filter
- Summary API → Summary service: invokes
- Summary service → Google AI client: delegates summary
- Google AI client → AI provider: requests generation
- Book repository → Relational database: reads / writes
- Cart repositories → Relational database: reads / writes
- Order repositories → Relational database: reads / writes
- Wishlist repository → Relational database: reads / writes
- User repository → Relational database: reads / writes
