# srayhan706/bookly architecture

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

- Interactive diagram: https://gitdiagram.com/srayhan706/bookly
- Repository: https://github.com/srayhan706/bookly

## Overview

1. **Overall shape**
   - This is a **single-module Android app** (`app/`) written in **Java** with an **XML-based UI**.
   - The architecture is a classic Android client app: **Activities + RecyclerView adapters + simple model classes + resource-driven screens**.
   - There is no separate backend service in the repo; most logic appears to live inside the Android app itself.

2. **App boundary and runtime**
   - The app runs entirely on Android devices/emulators via the Android SDK.
   - `google-services.json` is present, which suggests **Firebase integration** is intended or already configured, but the repo contents shown do not reveal a separate server layer.
   - Gradle is used for build/dependency management, with a standard Android app structure.

3. **Main navigation shell**
   - `MainActivity` is likely the central home/browse screen.
   - The UI includes a **navigation drawer** (`drawer_menu.xml`, `nav_header.xml`) and many activity-specific layouts, so navigation is screen-to-screen rather than fragment-heavy.
   - Drawable icons for menu, cart, search, settings, login, register, and favorites indicate a multi-entry navigation experience.

4. **Launch and session entry flow**
   - `splashScreen` is the likely launch entry point before routing users onward.
   - Authentication-related screens include `loginActivity`, `registerActivity`, and `resetPass`.
   - This suggests a user entry flow of **splash → login/register/reset as needed → main browsing experience**.

5. **Catalog browsing subsystem**
   - Book discovery is split across category-specific activities:
     - `Biography`, `Children`, `Mystery`, `NovelBook`, `PoetryBook`, `Religious`, `SelfHelp`, `Others`
   - `Offer` appears to support promotions or featured deals.
   - `popBook` and `NovelModel` suggest additional curated/popular book datasets.
   - The browsing UI is likely a set of **RecyclerView-backed lists** using category-specific layouts.

6. **Presentation/data adapters**
   - The main list rendering appears to be handled by:
     - `myAdapter`
     - `popAdapter`
     - `favAdapter`
     - `CartViewAdapter`
   - These adapters bridge model objects to list item layouts such as `bookview.xml`, `favview.xml`, `cart_item.xml`, and `main_recview.xml`.
   - This is the primary data flow pattern in the app: **model object → adapter → card/list row → activity screen**.

7. **Book details flow**
   - `BookDetails` is the detailed view for a selected book.
   - The standard interaction appears to be:
     - user selects a book from a list
     - the app opens the details screen
     - the user can then act on it, likely add to cart or favorites
   - This is the key transition point from browsing into commerce actions.

8. **Cart and checkout subsystem**
   - Cart-related classes include `CartItem` and `CartViewAdapter`.
   - Checkout/order flow is split across:
     - `page7_Activity`
     - `page8_placeOrder_Activity`
     - `page9_pay_Activity`
   - This implies a multi-step purchase path: **cart → place order → payment**.
   - The naming suggests the flow is implemented as separate activities rather than a single checkout controller.

9. **Wishlist/favorites subsystem**
   - Favorites are modeled with `FavouriteBook` and `favBook`, and rendered by `favAdapter`.
   - `activity_favourite_book.xml` and wishlist-themed drawables indicate a dedicated favorites screen.
   - This appears to be a parallel book collection flow, separate from the cart, for user-saved items.

10. **Ratings, feedback, and support screens**
   - User feedback is covered by `rate_activity` and `rateus`.
   - Informational/support screens include `about_us` and `setting`.
   - These are ancillary but important user-experience modules, likely accessed from the drawer or settings menu.

11. **Domain model layer**
   - The repo contains several simple data classes:
     - `User`
     - `CartItem`
     - `FavouriteBook`
     - `NovelModel`
     - `popBook`
   - These represent the app’s core entities and are likely passed between activities using intents/bundles.
   - The design suggests **lightweight model objects** rather than a separate repository/service layer.

12. **Resources and UI composition**
   - The app is heavily resource-driven:
     - many layouts for each screen
     - a large set of vector drawables for icons and book covers
     - theme/colors/strings support
   - This indicates that the app’s architecture is mostly **screen composition and navigation**, with little visible infrastructure beyond Android resources.

13. **Testing and quality boundaries**
   - Standard Android test folders exist:
     - `src/test` for unit tests
     - `src/androidTest` for instrumentation tests
   - No additional test infrastructure is visible, so testing appears to follow the default Android project setup.

14. **What to draw in an architecture diagram**
   - Show a **single Android client** with these major clusters:
     - Launch/auth cluster: splash, login, register, reset
     - Home/browse cluster: main activity + category screens + book details
     - Commerce cluster: cart, order, payment
     - Personalization cluster: favorites, ratings, settings/about
   - Connect the activity cluster through **intent-based navigation**.
   - Place adapters between model data and RecyclerView/list layouts.
   - If including infrastructure, mark Firebase as a likely external dependency, but keep it secondary unless confirmed by code.

Main entry points: [`app/src/main/java/com/example/bookly/MainActivity.java`](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/MainActivity.java) (Main), [`app/src/main/java/com/example/bookly/loginActivity.java`](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/loginActivity.java) (Login), [`app/src/main/java/com/example/bookly/BookDetails.java`](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/BookDetails.java) (Book details), [`app/src/main/res/layout`](https://github.com/srayhan706/bookly/tree/main/app/src/main/res/layout) (XML layouts)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Android app"]
  node_android_platform["Android SDK<br/>runtime platform"]
  node_firebase[("Firebase<br/>external backend")]
end

subgraph group_entry["Launch & auth"]
  node_splash["Splash<br/>entry activity<br/>[splashScreen.java]"]
  node_login["Login<br/>auth activity<br/>[loginActivity.java]"]
  node_register["Register<br/>auth activity"]
  node_reset["Reset pass<br/>auth activity<br/>[resetPass.java]"]
end

subgraph group_browse["Catalog browsing"]
  node_main["Main<br/>home activity<br/>[MainActivity.java]"]
  node_book_details["Book details<br/>detail activity<br/>[BookDetails.java]"]
  node_categories["Categories<br/>browse screens"]
  node_offer["Offers<br/>promo activity<br/>[Offer.java]"]
end

subgraph group_commerce["Commerce"]
  node_cart["Cart<br/>purchase activity"]
  node_place_order["Place order<br/>checkout activity"]
  node_pay["Payment"]
end

subgraph group_personal["Personalization"]
  node_favorites["Favorites<br/>wishlist activity<br/>[favBook.java]"]
  node_ratings["Ratings<br/>feedback activity<br/>[rateus.java]"]
  node_settings["Settings<br/>prefs activity<br/>[setting.java]"]
  node_about["About us<br/>info activity<br/>[about_us.java]"]
end

subgraph group_data["Data & adapters"]
  node_user_model["User<br/>model<br/>[User.java]"]
  node_book_models["Book models<br/>model set<br/>[NovelModel.java]"]
  node_cart_model["Cart item<br/>model<br/>[CartItem.java]"]
  node_fav_model["Fav item<br/>model<br/>[FavouriteBook.java]"]
  node_my_adapter["My adapter<br/>recycler adapter<br/>[myAdapter.java]"]
  node_pop_adapter["Pop adapter<br/>recycler adapter<br/>[popAdapter.java]"]
  node_fav_adapter["Fav adapter<br/>recycler adapter<br/>[favAdapter.java]"]
  node_cart_adapter["Cart adapter<br/>recycler adapter"]
end

subgraph group_res["Resources"]
  node_layouts["XML layouts<br/>ui resources"]
  node_icons["Icons & art<br/>drawable resources"]
  node_drawer_menu["Drawer menu<br/>menu resource<br/>[drawer_menu.xml]"]
end

node_android_platform -->|"runs"| node_splash
node_splash -->|"routes"| node_login
node_splash -->|"routes"| node_main
node_login -->|"navigates"| node_register
node_login -->|"navigates"| node_reset
node_login -->|"enters"| node_main
node_register -->|"returns"| node_login
node_reset -->|"returns"| node_login
node_main -->|"opens"| node_categories
node_main -->|"opens"| node_offer
node_main -->|"selects"| node_book_details
node_categories -->|"selects"| node_book_details
node_book_details -->|"adds to"| node_cart
node_book_details -->|"saves to"| node_favorites
node_cart -->|"checks out"| node_place_order
node_place_order -->|"pays"| node_pay
node_main -->|"opens"| node_favorites
node_main -->|"opens"| node_ratings
node_main -->|"opens"| node_settings
node_main -->|"opens"| node_about
node_my_adapter -->|"binds"| node_book_models
node_pop_adapter -->|"binds"| node_book_models
node_fav_adapter -->|"binds"| node_fav_model
node_cart_adapter -->|"binds"| node_cart_model
node_main -->|"uses"| node_my_adapter
node_offer -->|"uses"| node_pop_adapter
node_favorites -->|"uses"| node_fav_adapter
node_cart -->|"uses"| node_cart_adapter
node_login -->|"uses"| node_user_model
node_register -->|"uses"| node_user_model
node_main -->|"uses"| node_drawer_menu
node_main -->|"renders"| node_layouts
node_book_details -->|"renders"| node_layouts
node_favorites -->|"renders"| node_layouts
node_cart -->|"renders"| node_layouts
node_layouts -->|"references"| node_icons
node_main -.->|"integrates"| node_firebase

click node_firebase "https://github.com/srayhan706/bookly/blob/main/app/google-services.json"
click node_splash "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/splashScreen.java"
click node_login "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/loginActivity.java"
click node_register "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/registerActivity.java"
click node_reset "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/resetPass.java"
click node_main "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/MainActivity.java"
click node_book_details "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/BookDetails.java"
click node_offer "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/Offer.java"
click node_cart "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/page7_Activity.java"
click node_place_order "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/page8_placeOrder_Activity.java"
click node_pay "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/page9_pay_Activity.java"
click node_favorites "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/favBook.java"
click node_ratings "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/rateus.java"
click node_settings "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/setting.java"
click node_about "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/about_us.java"
click node_user_model "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/User.java"
click node_book_models "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/NovelModel.java"
click node_cart_model "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/CartItem.java"
click node_fav_model "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/FavouriteBook.java"
click node_my_adapter "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/myAdapter.java"
click node_pop_adapter "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/popAdapter.java"
click node_fav_adapter "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/favAdapter.java"
click node_cart_adapter "https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/CartViewAdapter.java"
click node_layouts "https://github.com/srayhan706/bookly/tree/main/app/src/main/res/layout"
click node_icons "https://github.com/srayhan706/bookly/tree/main/app/src/main/res/drawable"
click node_drawer_menu "https://github.com/srayhan706/bookly/blob/main/app/src/main/res/menu/drawer_menu.xml"

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_android_platform,node_firebase,node_layouts,node_icons,node_drawer_menu toneBlue
class node_splash,node_login,node_register,node_reset toneAmber
class node_main,node_book_details,node_categories,node_offer toneMint
class node_cart,node_place_order,node_pay toneRose
class node_favorites,node_ratings,node_settings,node_about toneIndigo
class node_user_model,node_book_models,node_cart_model,node_fav_model,node_my_adapter,node_pop_adapter,node_fav_adapter,node_cart_adapter toneTeal
```

## Components

### Android app

Single-module Android client built with Java, Gradle, and XML resources.

- **Android SDK**: runtime platform · Device/emulator runtime and framework APIs used by the app.
- [Firebase](https://github.com/srayhan706/bookly/blob/main/app/google-services.json): external backend · Likely configured service dependency via google-services.json. · `app/google-services.json`

### Launch & auth

Startup and user access flow before reaching the main catalog experience.

- [Splash](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/splashScreen.java): entry activity · App launch screen that routes users onward. · `app/src/main/java/com/example/bookly/splashScreen.java`
- [Login](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/loginActivity.java): auth activity · Existing-user sign-in screen. · `app/src/main/java/com/example/bookly/loginActivity.java`
- [Register](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/registerActivity.java): auth activity · New-user account creation screen. · `app/src/main/java/com/example/bookly/registerActivity.java`
- [Reset pass](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/resetPass.java): auth activity · Password recovery screen. · `app/src/main/java/com/example/bookly/resetPass.java`

### Catalog browsing

Home screen, category screens, and book detail navigation.

- [Main](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/MainActivity.java): home activity · Primary browsing shell and drawer-based navigation hub. · `app/src/main/java/com/example/bookly/MainActivity.java`
- [Book details](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/BookDetails.java): detail activity · Selected-book detail view and action point. · `app/src/main/java/com/example/bookly/BookDetails.java`
- **Categories**: browse screens · Category-specific book list activities.
- [Offers](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/Offer.java): promo activity · Featured deals or promotional book collection. · `app/src/main/java/com/example/bookly/Offer.java`

### Commerce

Cart, order, and payment flow.

- [Cart](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/page7_Activity.java): purchase activity · Shopping cart screen and item management. · `app/src/main/java/com/example/bookly/page7_Activity.java`
- [Place order](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/page8_placeOrder_Activity.java): checkout activity · Checkout step for confirming an order. · `app/src/main/java/com/example/bookly/page8_placeOrder_Activity.java`
- [Payment](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/page9_pay_Activity.java): payment activity · Final payment step in the purchase flow. · `app/src/main/java/com/example/bookly/page9_pay_Activity.java`

### Personalization

Favorites, ratings, settings, and informational screens.

- [Favorites](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/favBook.java): wishlist activity · Saved-books screen and management flow. · `app/src/main/java/com/example/bookly/favBook.java`
- [Ratings](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/rateus.java): feedback activity · Rate-us and feedback screens. · `app/src/main/java/com/example/bookly/rateus.java`
- [Settings](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/setting.java): prefs activity · App settings and support/info entry. · `app/src/main/java/com/example/bookly/setting.java`
- [About us](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/about_us.java): info activity · Informational/about screen. · `app/src/main/java/com/example/bookly/about_us.java`

### Data & adapters

Simple domain models and RecyclerView adapters that bind data to screens.

- [User](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/User.java): model · User entity passed through the auth and app flow. · `app/src/main/java/com/example/bookly/User.java`
- [Book models](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/NovelModel.java): model set · Book entities for catalog, offers, and curated lists. · `app/src/main/java/com/example/bookly/NovelModel.java`
- [Cart item](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/CartItem.java): model · Shopping cart line-item entity. · `app/src/main/java/com/example/bookly/CartItem.java`
- [Fav item](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/FavouriteBook.java): model · Favorite-book entity. · `app/src/main/java/com/example/bookly/FavouriteBook.java`
- [My adapter](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/myAdapter.java): recycler adapter · Binds catalog books into list rows. · `app/src/main/java/com/example/bookly/myAdapter.java`
- [Pop adapter](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/popAdapter.java): recycler adapter · Binds popular/featured books. · `app/src/main/java/com/example/bookly/popAdapter.java`
- [Fav adapter](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/favAdapter.java): recycler adapter · Binds favorite books into the wishlist view. · `app/src/main/java/com/example/bookly/favAdapter.java`
- [Cart adapter](https://github.com/srayhan706/bookly/blob/main/app/src/main/java/com/example/bookly/CartViewAdapter.java): recycler adapter · Binds cart items into the cart view. · `app/src/main/java/com/example/bookly/CartViewAdapter.java`

### Resources

Layouts, drawables, menus, and other XML-driven UI assets.

- [XML layouts](https://github.com/srayhan706/bookly/tree/main/app/src/main/res/layout): ui resources · Screen and row layouts for activities, drawer, and list items. · `app/src/main/res/layout`
- [Icons & art](https://github.com/srayhan706/bookly/tree/main/app/src/main/res/drawable): drawable resources · Vector icons, book art, and background assets. · `app/src/main/res/drawable`
- [Drawer menu](https://github.com/srayhan706/bookly/blob/main/app/src/main/res/menu/drawer_menu.xml): menu resource · Navigation drawer menu definition. · `app/src/main/res/menu/drawer_menu.xml`

## Connections

- Android SDK → Splash: runs · Android launches the app into the splash screen.
- Splash → Login: routes · Unauthenticated users proceed to sign-in.
- Splash → Main: routes · Authenticated or returning users enter the main shell.
- Login → Register: navigates · Users can create an account from sign-in.
- Login → Reset pass: navigates · Users can recover a forgotten password.
- Login → Main: enters · Successful login moves into the app.
- Register → Login: returns · After sign-up, users return to login.
- Reset pass → Login: returns · Password reset flows back to sign-in.
- Main → Categories: opens · Main browsing shell opens category screens.
- Main → Offers: opens · Main shell exposes promotions and featured books.
- Main → Book details: selects · Selecting a book opens its detail screen.
- Categories → Book details: selects · Category lists drill into book details.
- Book details → Cart: adds to · Book details can send an item to the cart.
- Book details → Favorites: saves to · Book details can add an item to favorites.
- Cart → Place order: checks out · Cart proceeds to order confirmation.
- Place order → Payment: pays · Order confirmation leads to payment.
- Main → Favorites: opens · Drawer or shortcuts reach saved books.
- Main → Ratings: opens · Drawer or shortcuts reach feedback screens.
- Main → Settings: opens · Drawer or shortcuts reach settings.
- Main → About us: opens · Drawer or shortcuts reach about screen.
- My adapter → Book models: binds · Catalog data is rendered through the list adapter.
- Pop adapter → Book models: binds · Featured books are rendered through the popular adapter.
- Fav adapter → Fav item: binds · Wishlist entries are rendered from favorite-book data.
- Cart adapter → Cart item: binds · Cart rows are rendered from cart-item data.
- Main → My adapter: uses · Home browsing lists are adapter-backed.
- Offers → Pop adapter: uses · Promotions/featured views use the popular adapter.
- Favorites → Fav adapter: uses · Favorites screen uses the wishlist adapter.
- Cart → Cart adapter: uses · Cart screen uses the cart adapter.
- Login → User: uses · Authentication screens rely on the user model.
- Register → User: uses · Registration creates user entities.
- Main → Drawer menu: uses · Main activity is backed by the drawer menu resource.
- Main → XML layouts: renders · Screen composition is driven by XML layouts.
- Book details → XML layouts: renders · Detail UI is layout-driven.
- Favorites → XML layouts: renders · Wishlist UI is layout-driven.
- Cart → XML layouts: renders · Cart UI is layout-driven.
- XML layouts → Icons & art: references · Layouts use icon and image drawables.
- Main → Firebase: integrates · Project is configured for Firebase services.
