# kaushikghorai/coffeebeans architecture

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

- Interactive diagram: https://gitdiagram.com/kaushikghorai/coffeebeans
- Repository: https://github.com/kaushikghorai/coffeebeans

## Overview

Coffee Beans is an Android coffee-catalog browsing app. A user starts at the splash screen, enters the catalog, and sees a banner, categories, items, and popular coffees; the main screen fetches these asynchronously from a Retrofit API and displays them through RecyclerView adapters. Category selection also requests items for that category, though the sampled adapter does not apply the result to the item list. The source excerpts show the app’s API and image-loading calls; no README describes additional capabilities.

Main entry points: [`app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Activities/MainActivity.kt`](https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Activities/MainActivity.kt) (Catalog screen), [`app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Retrofit/APIService.kt`](https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Retrofit/APIService.kt) (API contract), [`app/src/main/java/in/kaushikghorai/coffeebeans/Activity/RecyclerView/CategoryRecyclerView.kt`](https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/RecyclerView/CategoryRecyclerView.kt) (Category list), [`app/src/main/java/in/kaushikghorai/coffeebeans/Activity/RecyclerView/ItemsRecyclerView.kt`](https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/RecyclerView/ItemsRecyclerView.kt) (Items grid)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App entry"]
  node_splash["Splash screen<br/>[SplashActivity.kt]"]
  node_main["Catalog screen<br/>[MainActivity.kt]"]
end

subgraph group_catalog["Catalog UI"]
  node_category_adapter["Category list"]
  node_items_adapter["Items grid"]
  node_popular_adapter["Popular grid"]
  node_category_model["Category data<br/>[Category.kt]"]
  node_items_model["Item data<br/>[Items.kt]"]
  node_popular_model["Popular data<br/>[PopularItems.kt]"]
end

subgraph group_network["Remote catalog"]
  node_banner_model["Banner data<br/>[BannerModel.kt]"]
  node_api_client["API contract<br/>[APIService.kt]"]
  node_retrofit["Retrofit setup"]
end

node_user(("App user"))
node_catalog_api{{"Catalog API"}}
node_image_host{{"Image URLs"}}

node_user -->|"opens"| node_splash
node_splash -->|"starts"| node_main
node_main -->|"uses API"| node_retrofit
node_retrofit -->|"creates"| node_api_client
node_api_client -.->|"requests data"| node_catalog_api
node_main -->|"displays"| node_category_adapter
node_main -->|"displays"| node_items_adapter
node_main -->|"displays"| node_popular_adapter
node_category_adapter -->|"requests category items"| node_main
node_category_adapter -->|"renders"| node_category_model
node_items_adapter -->|"renders"| node_items_model
node_popular_adapter -->|"renders"| node_popular_model
node_api_client -->|"returns"| node_banner_model
node_api_client -->|"returns"| node_category_model
node_api_client -->|"returns"| node_items_model
node_api_client -->|"returns"| node_popular_model
node_main -.->|"loads banner"| node_image_host
node_items_adapter -.->|"loads pictures"| node_image_host
node_popular_adapter -.->|"loads pictures"| node_image_host

click node_splash "https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Activities/SplashActivity.kt"
click node_main "https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Activities/MainActivity.kt"
click node_category_adapter "https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/RecyclerView/CategoryRecyclerView.kt"
click node_items_adapter "https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/RecyclerView/ItemsRecyclerView.kt"
click node_popular_adapter "https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/RecyclerView/PopularItemsRecyclerView.kt"
click node_category_model "https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Model/Category.kt"
click node_items_model "https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Model/Items.kt"
click node_popular_model "https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Model/PopularItems.kt"
click node_banner_model "https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Model/BannerModel.kt"
click node_api_client "https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Retrofit/APIService.kt"
click node_retrofit "https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Retrofit/RetrofitInstance.kt"

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_splash,node_main,node_user toneBlue
class node_category_adapter,node_items_adapter,node_popular_adapter,node_category_model,node_items_model,node_popular_model toneAmber
class node_banner_model,node_api_client,node_retrofit,node_catalog_api toneMint
class node_image_host toneIndigo
```

## Components

### App entry

- [Splash screen](https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Activities/SplashActivity.kt): `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Activities/SplashActivity.kt`
- [Catalog screen](https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Activities/MainActivity.kt): `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Activities/MainActivity.kt`

### Catalog UI

- [Category list](https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/RecyclerView/CategoryRecyclerView.kt): `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/RecyclerView/CategoryRecyclerView.kt`
- [Items grid](https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/RecyclerView/ItemsRecyclerView.kt): `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/RecyclerView/ItemsRecyclerView.kt`
- [Popular grid](https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/RecyclerView/PopularItemsRecyclerView.kt): `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/RecyclerView/PopularItemsRecyclerView.kt`
- [Category data](https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Model/Category.kt): `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Model/Category.kt`
- [Item data](https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Model/Items.kt): `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Model/Items.kt`
- [Popular data](https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Model/PopularItems.kt): `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Model/PopularItems.kt`

### Remote catalog

- [Banner data](https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Model/BannerModel.kt): `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Model/BannerModel.kt`
- [API contract](https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Retrofit/APIService.kt): `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Retrofit/APIService.kt`
- [Retrofit setup](https://github.com/kaushikghorai/coffeebeans/blob/main/app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Retrofit/RetrofitInstance.kt): `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Retrofit/RetrofitInstance.kt`

### Other components

- **App user**
- **Catalog API**
- **Image URLs**

## Connections

- App user → Splash screen: opens
- Splash screen → Catalog screen: starts (evidence: `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Activities/SplashActivity.kt`)
- Catalog screen → Retrofit setup: uses API (evidence: `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Activities/MainActivity.kt`)
- Retrofit setup → API contract: creates (evidence: `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Retrofit/RetrofitInstance.kt`)
- API contract → Catalog API: requests data (evidence: `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Retrofit/APIService.kt`)
- Catalog screen → Category list: displays (evidence: `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Activities/MainActivity.kt`)
- Catalog screen → Items grid: displays (evidence: `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Activities/MainActivity.kt`)
- Catalog screen → Popular grid: displays (evidence: `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Activities/MainActivity.kt`)
- Category list → Catalog screen: requests category items (evidence: `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/RecyclerView/CategoryRecyclerView.kt`)
- Category list → Category data: renders (evidence: `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/RecyclerView/CategoryRecyclerView.kt`)
- Items grid → Item data: renders (evidence: `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/RecyclerView/ItemsRecyclerView.kt`)
- Popular grid → Popular data: renders (evidence: `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/RecyclerView/PopularItemsRecyclerView.kt`)
- API contract → Banner data: returns (evidence: `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Retrofit/APIService.kt`)
- API contract → Category data: returns (evidence: `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Retrofit/APIService.kt`)
- API contract → Item data: returns (evidence: `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Retrofit/APIService.kt`)
- API contract → Popular data: returns (evidence: `app/src/main/java/in/kaushikghorai/coffeebeans/Activity/Retrofit/APIService.kt`)
- Catalog screen → Image URLs: loads banner
- Items grid → Image URLs: loads pictures
- Popular grid → Image URLs: loads pictures
