# koder95/book-shop-online architecture

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

- Interactive diagram: https://gitdiagram.com/koder95/book-shop-online
- Repository: https://github.com/koder95/book-shop-online

## Overview

This is a Spring-based online book shop. Customers browse and search books, manage a cart, and place orders; administrators manage the catalog and order status. Authentication and role-based access protect the API. Sampled controllers show calls into book, category, and order services; the tree also identifies cart and authentication subsystems, but their wiring and persistence details were not sampled, so uncertain links are omitted.

Main entry points: [`src/main/java/pl/koder95/bso/controller/CategoryController.java`](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/controller/CategoryController.java) (Category API), [`src/main/java/pl/koder95/bso/controller/BookController.java`](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/controller/BookController.java) (Book API), [`src/main/java/pl/koder95/bso/controller/OrderController.java`](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/controller/OrderController.java) (Order API), [`src/main/java/pl/koder95/bso/service/impl/BookServiceImpl.java`](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/service/impl/BookServiceImpl.java) (Book operations)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API and access"]
  node_book_api["Book API"]
  node_category_api["Category API"]
  node_cart_api["Cart API"]
  node_order_api["Order API"]
  node_auth_api["Authentication API"]
end

subgraph group_catalog["Book catalog"]
  node_book_service["Book operations"]
  node_category_service["Category operations"]
  node_book_search["Book search"]
end

subgraph group_checkout["Cart and orders"]
  node_cart_service["Cart operations"]
  node_order_service["Order operations"]
  node_cart_factory["Cart factory"]
end

subgraph group_identity["Identity and security"]
  node_auth_service["Authentication"]
  node_user_service["User operations"]
  node_user_details["User lookup"]
  node_jwt["JWT utilities<br/>[JwtUtil.java]"]
  node_security_filter["JWT filter"]
end

node_customer(("Customer"))
node_admin(("Administrator"))

node_customer -->|"browse/search"| node_book_api
node_admin -->|"manage books"| node_book_api
node_customer -->|"browse categories"| node_category_api
node_admin -->|"manage categories"| node_category_api
node_customer -->|"manage cart"| node_cart_api
node_customer -->|"place/view orders"| node_order_api
node_admin -->|"change status"| node_order_api
node_customer -->|"authenticate"| node_auth_api
node_book_api -->|"invoke"| node_book_service
node_book_service -->|"compile search"| node_book_search
node_category_api -->|"invoke"| node_category_service
node_category_api -->|"find category books"| node_book_service
node_order_api -->|"invoke"| node_order_service
node_auth_service -->|"generate token"| node_jwt
node_user_details --> node_user_service

click node_book_api "https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/controller/BookController.java"
click node_category_api "https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/controller/CategoryController.java"
click node_cart_api "https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/controller/CartController.java"
click node_order_api "https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/controller/OrderController.java"
click node_auth_api "https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/controller/AuthenticationController.java"
click node_book_service "https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/service/impl/BookServiceImpl.java"
click node_category_service "https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/service/impl/CategoryServiceImpl.java"
click node_book_search "https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/repository/book/BookSpecificationManager.java"
click node_cart_service "https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/service/impl/ShoppingCartServiceImpl.java"
click node_order_service "https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/service/impl/OrderServiceImpl.java"
click node_cart_factory "https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/factory/impl/ShoppingCartFactoryImpl.java"
click node_auth_service "https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/service/impl/AuthenticationServiceImpl.java"
click node_user_service "https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/service/impl/UserServiceImpl.java"
click node_user_details "https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/security/CustomUserDetailsService.java"
click node_jwt "https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/security/JwtUtil.java"
click node_security_filter "https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/security/JwtAuthenticationFilter.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_book_api,node_category_api,node_cart_api,node_order_api,node_auth_api toneBlue
class node_book_service,node_category_service,node_book_search toneAmber
class node_cart_service,node_order_service,node_cart_factory toneMint
class node_auth_service,node_user_service,node_user_details,node_jwt,node_security_filter toneRose
class node_customer,node_admin toneIndigo
```

## Components

### API and access

- [Book API](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/controller/BookController.java): `src/main/java/pl/koder95/bso/controller/BookController.java`
- [Category API](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/controller/CategoryController.java): `src/main/java/pl/koder95/bso/controller/CategoryController.java`
- [Cart API](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/controller/CartController.java): `src/main/java/pl/koder95/bso/controller/CartController.java`
- [Order API](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/controller/OrderController.java): `src/main/java/pl/koder95/bso/controller/OrderController.java`
- [Authentication API](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/controller/AuthenticationController.java): `src/main/java/pl/koder95/bso/controller/AuthenticationController.java`

### Book catalog

- [Book operations](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/service/impl/BookServiceImpl.java): `src/main/java/pl/koder95/bso/service/impl/BookServiceImpl.java`
- [Category operations](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/service/impl/CategoryServiceImpl.java): `src/main/java/pl/koder95/bso/service/impl/CategoryServiceImpl.java`
- [Book search](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/repository/book/BookSpecificationManager.java): `src/main/java/pl/koder95/bso/repository/book/BookSpecificationManager.java`

### Cart and orders

- [Cart operations](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/service/impl/ShoppingCartServiceImpl.java): `src/main/java/pl/koder95/bso/service/impl/ShoppingCartServiceImpl.java`
- [Order operations](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/service/impl/OrderServiceImpl.java): `src/main/java/pl/koder95/bso/service/impl/OrderServiceImpl.java`
- [Cart factory](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/factory/impl/ShoppingCartFactoryImpl.java): `src/main/java/pl/koder95/bso/factory/impl/ShoppingCartFactoryImpl.java`

### Identity and security

- [Authentication](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/service/impl/AuthenticationServiceImpl.java): `src/main/java/pl/koder95/bso/service/impl/AuthenticationServiceImpl.java`
- [User operations](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/service/impl/UserServiceImpl.java): `src/main/java/pl/koder95/bso/service/impl/UserServiceImpl.java`
- [User lookup](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/security/CustomUserDetailsService.java): `src/main/java/pl/koder95/bso/security/CustomUserDetailsService.java`
- [JWT utilities](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/security/JwtUtil.java): `src/main/java/pl/koder95/bso/security/JwtUtil.java`
- [JWT filter](https://github.com/koder95/book-shop-online/blob/master/src/main/java/pl/koder95/bso/security/JwtAuthenticationFilter.java): `src/main/java/pl/koder95/bso/security/JwtAuthenticationFilter.java`

### Other components

- **Customer**
- **Administrator**

## Connections

- Customer → Book API: browse/search
- Administrator → Book API: manage books
- Customer → Category API: browse categories
- Administrator → Category API: manage categories
- Customer → Cart API: manage cart
- Customer → Order API: place/view orders
- Administrator → Order API: change status
- Customer → Authentication API: authenticate
- Book API → Book operations: invoke
- Book operations → Book search: compile search
- Category API → Category operations: invoke
- Category API → Book operations: find category books
- Order API → Order operations: invoke
- Authentication → JWT utilities: generate token
- User lookup → User operations
