# smagic205/thunderbookapp architecture

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

- Interactive diagram: https://gitdiagram.com/smagic205/thunderbookapp
- Repository: https://github.com/smagic205/thunderbookapp

## Overview

Thunder Book is an Android bookstore app for customer shopping and administrator catalog/order management. The documented customer journey covers account use, book discovery, address selection, checkout, and an order; other documented capabilities include reviews, chat-based recommendations, and administration. The source index’s core module is a use-case data file rather than app runtime code, and the README is empty. Consequently, this map uses documented behavior and the documented MVVM layering; it does not claim unsampled Java call relationships were inspected.

Main entry points: [`app/src/main/java/com/example/bookapp/View/user/ChatBotActivity.java`](https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/user/ChatBotActivity.java) (Book assistant), [`app/src/main/java/com/example/bookapp/View/user/CheckoutActivity.java`](https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/user/CheckoutActivity.java) (Checkout), [`app/src/main/java/com/example/bookapp/View/admin/AddEditBookActivity.java`](https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/admin/AddEditBookActivity.java) (Book management), [`app/src/main/java/com/example/bookapp/View/admin/ManageCategoryActivity.java`](https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/admin/ManageCategoryActivity.java) (Category management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_customer["Customer shopping"]
  node_checkout["Checkout"]
  node_addresses["Address management"]
  node_catalog["Book discovery<br/>[HomeActivity.java]"]
  node_book_detail["Book details"]
  node_orders["Order history"]
end

subgraph group_engagement["Customer engagement"]
  node_reviews["Book reviews"]
  node_chat["Book assistant"]
end

subgraph group_admin["Administration"]
  node_admin_books["Book management"]
  node_admin_categories["Category management"]
  node_admin_orders["Order management"]
end

subgraph group_data["App data and services"]
  node_viewmodels["ViewModels"]
  node_repositories["Repositories"]
  node_firestore[("Cloud Firestore")]
  node_storage[("Firebase Storage")]
  node_gemini["Gemini API"]
end

node_customer(("Customer"))
node_admin_actor(("Administrator"))

node_customer -->|"browses"| node_catalog
node_customer -->|"checks out"| node_checkout
node_checkout -->|"selects address"| node_addresses
node_checkout -->|"creates order"| node_orders
node_customer -->|"asks for advice"| node_chat
node_chat -->|"sends context"| node_gemini
node_gemini -->|"returns answer"| node_chat
node_chat -->|"stores history"| node_firestore
node_chat -->|"finds books"| node_catalog
node_customer -->|"writes review"| node_reviews
node_admin_actor -->|"manages books"| node_admin_books
node_admin_books -->|"uploads cover"| node_storage
node_admin_books -->|"saves book"| node_firestore
node_admin_actor -->|"manages categories"| node_admin_categories
node_admin_categories -->|"uploads icon"| node_storage
node_admin_categories -->|"saves category"| node_firestore
node_admin_actor -.->|"manages orders"| node_admin_orders
node_checkout -->|"forwards events"| node_viewmodels
node_viewmodels -->|"forwards requests"| node_repositories
node_repositories -->|"accesses data"| node_firestore
node_repositories -->|"returns data"| node_viewmodels

click node_checkout "https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/user/CheckoutActivity.java"
click node_addresses "https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/user/AddEditAddressActivity.java"
click node_catalog "https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/user/HomeActivity.java"
click node_book_detail "https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/user/BookDetailActivity.java"
click node_orders "https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/user/OrderHistoryActivity.java"
click node_reviews "https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/user/WriteReviewActivity.java"
click node_chat "https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/user/ChatBotActivity.java"
click node_admin_books "https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/admin/AddEditBookActivity.java"
click node_admin_categories "https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/admin/ManageCategoryActivity.java"
click node_admin_orders "https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/admin/ManageOrderActivity.java"
click node_viewmodels "https://github.com/smagic205/thunderbookapp/tree/main/app/src/main/java/com/example/bookapp/ViewModel"
click node_repositories "https://github.com/smagic205/thunderbookapp/tree/main/app/src/main/java/com/example/bookapp/Repository"

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_checkout,node_addresses,node_catalog,node_book_detail,node_orders toneBlue
class node_reviews,node_chat toneAmber
class node_admin_books,node_admin_categories,node_admin_orders toneMint
class node_viewmodels,node_repositories,node_firestore,node_storage,node_gemini toneRose
class node_customer,node_admin_actor toneIndigo
```

## Components

### Customer shopping

- [Checkout](https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/user/CheckoutActivity.java): `app/src/main/java/com/example/bookapp/View/user/CheckoutActivity.java`
- [Address management](https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/user/AddEditAddressActivity.java): `app/src/main/java/com/example/bookapp/View/user/AddEditAddressActivity.java`
- [Book discovery](https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/user/HomeActivity.java): `app/src/main/java/com/example/bookapp/View/user/HomeActivity.java`
- [Book details](https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/user/BookDetailActivity.java): `app/src/main/java/com/example/bookapp/View/user/BookDetailActivity.java`
- [Order history](https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/user/OrderHistoryActivity.java): `app/src/main/java/com/example/bookapp/View/user/OrderHistoryActivity.java`

### Customer engagement

- [Book reviews](https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/user/WriteReviewActivity.java): `app/src/main/java/com/example/bookapp/View/user/WriteReviewActivity.java`
- [Book assistant](https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/user/ChatBotActivity.java): `app/src/main/java/com/example/bookapp/View/user/ChatBotActivity.java`

### Administration

- [Book management](https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/admin/AddEditBookActivity.java): `app/src/main/java/com/example/bookapp/View/admin/AddEditBookActivity.java`
- [Category management](https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/admin/ManageCategoryActivity.java): `app/src/main/java/com/example/bookapp/View/admin/ManageCategoryActivity.java`
- [Order management](https://github.com/smagic205/thunderbookapp/blob/main/app/src/main/java/com/example/bookapp/View/admin/ManageOrderActivity.java): `app/src/main/java/com/example/bookapp/View/admin/ManageOrderActivity.java`

### App data and services

- [ViewModels](https://github.com/smagic205/thunderbookapp/tree/main/app/src/main/java/com/example/bookapp/ViewModel): `app/src/main/java/com/example/bookapp/ViewModel`
- [Repositories](https://github.com/smagic205/thunderbookapp/tree/main/app/src/main/java/com/example/bookapp/Repository): `app/src/main/java/com/example/bookapp/Repository`
- **Cloud Firestore**
- **Firebase Storage**
- **Gemini API**

### Other components

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

## Connections

- Customer → Book discovery: browses
- Customer → Checkout: checks out
- Checkout → Address management: selects address
- Checkout → Order history: creates order
- Customer → Book assistant: asks for advice
- Book assistant → Gemini API: sends context
- Gemini API → Book assistant: returns answer
- Book assistant → Cloud Firestore: stores history
- Book assistant → Book discovery: finds books
- Customer → Book reviews: writes review
- Administrator → Book management: manages books
- Book management → Firebase Storage: uploads cover
- Book management → Cloud Firestore: saves book
- Administrator → Category management: manages categories
- Category management → Firebase Storage: uploads icon
- Category management → Cloud Firestore: saves category
- Administrator → Order management: manages orders
- Checkout → ViewModels: forwards events
- ViewModels → Repositories: forwards requests
- Repositories → Cloud Firestore: accesses data
- Repositories → ViewModels: returns data
