# scbushan05/online-bookstore architecture

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

- Interactive diagram: https://gitdiagram.com/scbushan05/online-bookstore
- Repository: https://github.com/scbushan05/online-bookstore

## Overview

This is an online bookstore split between an Angular storefront and a Spring Data REST backend. The intended shopper journey is to browse or search books, view a book, manage a cart, and proceed to checkout; the tree also shows category, country, and state data. Sampled code confirms book and checkout lookup calls, cart state handling, and route definitions. The README is only a title, and checkout submission and several component-to-service links are not evidenced by sampled source, so those links are omitted.

Main entry points: [`angular-bookstore/src/app/app.module.ts`](https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/app.module.ts) (Route map), [`onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore`](https://github.com/scbushan05/online-bookstore/tree/master/onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore) (Bookstore REST API), [`angular-bookstore/src/app/services/checkout.service.ts`](https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/services/checkout.service.ts) (Checkout lookups), [`angular-bookstore/src/app/components/book-list/book-list.component.ts`](https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/components/book-list/book-list.component.ts) (Book listing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_storefront["Storefront"]
  node_entry["Angular bootstrap<br/>[main.ts]"]
  node_routes["Route map<br/>[app.module.ts]"]
  node_search["Book search"]
  node_listing["Book listing"]
  node_category["Category view"]
  node_details["Book details"]
  node_notfound["Not found"]
end

subgraph group_shopping["Shopping"]
  node_cart["Cart state<br/>[cart.service.ts]"]
  node_cartview["Cart details"]
  node_cartstatus["Cart status"]
  node_checkout["Checkout form"]
  node_checkoutdata["Checkout lookups"]
end

subgraph group_backend["REST backend"]
  node_bookservice["Book service<br/>[book.service.ts]"]
  node_api["Bookstore REST API"]
  node_repo["Book repository"]
  node_categoryrepo["Category repository"]
  node_config["REST configuration"]
end

subgraph group_domain["Book data"]
  node_book["Book entity<br/>[Book.java]"]
  node_bookcategory["Book category<br/>[BookCategory.java]"]
  node_country["Country data<br/>[Country.java]"]
  node_state["State data<br/>[State.java]"]
end

node_shopper(("Shopper"))

node_shopper -->|"opens store"| node_entry
node_entry -->|"bootstraps"| node_routes
node_routes -->|"routes books"| node_listing
node_routes -->|"routes search"| node_listing
node_routes -->|"routes category"| node_listing
node_routes -->|"routes details"| node_details
node_routes -->|"routes cart"| node_cartview
node_routes -->|"routes checkout"| node_checkout
node_routes -->|"routes fallback"| node_notfound
node_search -->|"navigates"| node_routes
node_bookservice -->|"requests books"| node_api
node_checkoutdata -->|"requests locations"| node_api
node_api -->|"serves book queries"| node_repo
node_api -->|"serves categories"| node_categoryrepo
node_repo -->|"loads and searches"| node_book
node_categoryrepo -->|"loads categories"| node_bookcategory
node_checkoutdata -->|"maps country data"| node_country
node_checkoutdata -->|"maps state data"| node_state
node_cart -->|"updates totals"| node_cart
node_config -->|"configures REST"| node_api

click node_entry "https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/main.ts"
click node_routes "https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/app.module.ts"
click node_search "https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/components/search/search.component.ts"
click node_listing "https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/components/book-list/book-list.component.ts"
click node_category "https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/components/book-category/book-category.component.ts"
click node_details "https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/components/book-details/book-details.component.ts"
click node_notfound "https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/components/page-not-found/page-not-found.component.ts"
click node_cart "https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/services/cart.service.ts"
click node_cartview "https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/components/cart-details/cart-details.component.ts"
click node_cartstatus "https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/components/cart-status/cart-status.component.ts"
click node_checkout "https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/components/checkout/checkout.component.ts"
click node_checkoutdata "https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/services/checkout.service.ts"
click node_bookservice "https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/services/book.service.ts"
click node_api "https://github.com/scbushan05/online-bookstore/tree/master/onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore"
click node_repo "https://github.com/scbushan05/online-bookstore/blob/master/onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/repository/BookRepository.java"
click node_categoryrepo "https://github.com/scbushan05/online-bookstore/blob/master/onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/repository/BookCategoryRepository.java"
click node_book "https://github.com/scbushan05/online-bookstore/blob/master/onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/entity/Book.java"
click node_bookcategory "https://github.com/scbushan05/online-bookstore/blob/master/onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/entity/BookCategory.java"
click node_country "https://github.com/scbushan05/online-bookstore/blob/master/onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/entity/Country.java"
click node_state "https://github.com/scbushan05/online-bookstore/blob/master/onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/entity/State.java"
click node_config "https://github.com/scbushan05/online-bookstore/blob/master/onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/config/RepositoryConfig.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_entry,node_routes,node_search,node_listing,node_category,node_details,node_notfound toneBlue
class node_cart,node_cartview,node_cartstatus,node_checkout,node_checkoutdata toneAmber
class node_bookservice,node_api,node_repo,node_categoryrepo,node_config toneMint
class node_book,node_bookcategory,node_country,node_state toneRose
class node_shopper toneIndigo
```

## Components

### Storefront

- [Angular bootstrap](https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/main.ts): `angular-bookstore/src/main.ts`
- [Route map](https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/app.module.ts): `angular-bookstore/src/app/app.module.ts`
- [Book search](https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/components/search/search.component.ts): `angular-bookstore/src/app/components/search/search.component.ts`
- [Book listing](https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/components/book-list/book-list.component.ts): `angular-bookstore/src/app/components/book-list/book-list.component.ts`
- [Category view](https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/components/book-category/book-category.component.ts): `angular-bookstore/src/app/components/book-category/book-category.component.ts`
- [Book details](https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/components/book-details/book-details.component.ts): `angular-bookstore/src/app/components/book-details/book-details.component.ts`
- [Not found](https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/components/page-not-found/page-not-found.component.ts): `angular-bookstore/src/app/components/page-not-found/page-not-found.component.ts`

### Shopping

- [Cart state](https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/services/cart.service.ts): `angular-bookstore/src/app/services/cart.service.ts`
- [Cart details](https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/components/cart-details/cart-details.component.ts): `angular-bookstore/src/app/components/cart-details/cart-details.component.ts`
- [Cart status](https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/components/cart-status/cart-status.component.ts): `angular-bookstore/src/app/components/cart-status/cart-status.component.ts`
- [Checkout form](https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/components/checkout/checkout.component.ts): `angular-bookstore/src/app/components/checkout/checkout.component.ts`
- [Checkout lookups](https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/services/checkout.service.ts): `angular-bookstore/src/app/services/checkout.service.ts`

### REST backend

- [Book service](https://github.com/scbushan05/online-bookstore/blob/master/angular-bookstore/src/app/services/book.service.ts): `angular-bookstore/src/app/services/book.service.ts`
- [Bookstore REST API](https://github.com/scbushan05/online-bookstore/tree/master/onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore): `onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore`
- [Book repository](https://github.com/scbushan05/online-bookstore/blob/master/onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/repository/BookRepository.java): `onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/repository/BookRepository.java`
- [Category repository](https://github.com/scbushan05/online-bookstore/blob/master/onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/repository/BookCategoryRepository.java): `onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/repository/BookCategoryRepository.java`
- [REST configuration](https://github.com/scbushan05/online-bookstore/blob/master/onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/config/RepositoryConfig.java): `onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/config/RepositoryConfig.java`

### Book data

- [Book entity](https://github.com/scbushan05/online-bookstore/blob/master/onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/entity/Book.java): `onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/entity/Book.java`
- [Book category](https://github.com/scbushan05/online-bookstore/blob/master/onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/entity/BookCategory.java): `onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/entity/BookCategory.java`
- [Country data](https://github.com/scbushan05/online-bookstore/blob/master/onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/entity/Country.java): `onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/entity/Country.java`
- [State data](https://github.com/scbushan05/online-bookstore/blob/master/onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/entity/State.java): `onlinebookstore/src/main/java/in/bushansirgur/onlinebookstore/entity/State.java`

### Other components

- **Shopper**

## Connections

- Shopper → Angular bootstrap: opens store
- Angular bootstrap → Route map: bootstraps
- Route map → Book listing: routes books
- Route map → Book listing: routes search
- Route map → Book listing: routes category
- Route map → Book details: routes details
- Route map → Cart details: routes cart
- Route map → Checkout form: routes checkout
- Route map → Not found: routes fallback
- Book search → Route map: navigates
- Book service → Bookstore REST API: requests books
- Checkout lookups → Bookstore REST API: requests locations
- Bookstore REST API → Book repository: serves book queries
- Bookstore REST API → Category repository: serves categories
- Book repository → Book entity: loads and searches
- Category repository → Book category: loads categories
- Checkout lookups → Country data: maps country data
- Checkout lookups → State data: maps state data
- Cart state → Cart state: updates totals
- REST configuration → Bookstore REST API: configures REST
