# joymajumdar2001/watery architecture

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

- Interactive diagram: https://gitdiagram.com/joymajumdar2001/watery
- Repository: https://github.com/joymajumdar2001/watery

## Overview

Watery is an Android water-delivery commerce app. Customers authenticate, browse products, build a local cart, choose a delivery location and phone number, pay online or by cash on delivery, then view and track orders. Delivery partners log in, review orders, and update their fulfillment status. The README documents Appwrite for authentication, product/order data and images, plus Razorpay and map/location integrations. Edges are limited to relationships shown in sampled source or explicitly described in the README; some screens and integrations are unsampled.

Main entry points: [`app/src/main/java/com/qdot/watery/UserDashboardActivity.kt`](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/UserDashboardActivity.kt) (Product browsing), [`app/src/main/java/com/qdot/watery/PaymentActivity.kt`](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/PaymentActivity.kt) (Payment and checkout), [`app/src/main/java/com/qdot/watery/room/CartedProductViewModel.kt`](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/room/CartedProductViewModel.kt) (Cart view model), [`app/src/main/java/com/qdot/watery/CartActivity.kt`](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/CartActivity.kt) (Cart review)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["App entry and access"]
  node_main["Role selection<br/>[MainActivity.kt]"]
  node_login["Customer login<br/>[LoginActivity.kt]"]
end

subgraph group_shopping["Customer shopping"]
  node_products["Product browsing"]
  node_productview["Product cards<br/>[ProductAdapter.kt]"]
  node_cart["Cart review<br/>[CartActivity.kt]"]
  node_cartview["Cart items<br/>[CartAdapter.kt]"]
  node_location["Delivery location<br/>[LocActivity.kt]"]
  node_distance["Delivery range check<br/>[MeasureDistance.kt]"]
  node_payment["Payment and checkout<br/>[PaymentActivity.kt]"]
  node_paystatus["Payment status"]
end

subgraph group_fulfillment["Orders and delivery"]
  node_delivery["Partner dashboard"]
  node_orders["Customer orders"]
  node_orderview["Order list<br/>[OrderAdapter.kt]"]
  node_tracking["Order tracking"]
  node_partnerorders["Partner order actions<br/>[BoyOrderAdapter.kt]"]
  node_orderdata["Order record<br/>[Order.kt]"]
end

subgraph group_localcart["Local cart storage"]
  node_cartvm["Cart view model"]
  node_repository["Cart repository"]
  node_dao["Cart DAO<br/>[ProductDao.kt]"]
  node_database[("Room cart database<br/>[ProductDatabase.kt]")]
  node_cartitem["Cart product model<br/>[ProductCarted.kt]"]
end

node_customer(("Customer"))
node_partner(("Delivery partner"))
node_appwrite[("Appwrite")]
node_razorpay["Razorpay"]
node_maps["Maps and location"]

node_customer -->|"opens app"| node_main
node_partner -->|"opens app"| node_main
node_main -->|"chooses customer"| node_login
node_main -->|"chooses partner"| node_delivery
node_login -->|"authenticates"| node_appwrite
node_login -->|"opens dashboard"| node_products
node_products -->|"fetches products"| node_appwrite
node_products -->|"fetches images"| node_appwrite
node_products -->|"renders products"| node_productview
node_products -->|"observes cart count"| node_cartvm
node_products -->|"opens cart"| node_cart
node_products -->|"opens orders"| node_orders
node_productview -->|"updates cart"| node_cartvm
node_cart -->|"renders cart"| node_cartview
node_cart -->|"reads cart"| node_cartvm
node_cart -->|"continues checkout"| node_location
node_cartview -->|"changes quantities"| node_cartvm
node_location -->|"checks distance"| node_distance
node_location -->|"picks address"| node_maps
node_location -->|"passes checkout details"| node_payment
node_payment -->|"reads cart items"| node_cartvm
node_payment -->|"builds order"| node_orderdata
node_payment -->|"writes order"| node_appwrite
node_payment -->|"creates online payment"| node_razorpay
node_payment -->|"reports payment result"| node_paystatus
node_orders -->|"fetches orders"| node_appwrite
node_orders -->|"renders orders"| node_orderview
node_orderview -->|"opens tracking"| node_tracking
node_tracking -->|"shows route map"| node_maps
node_delivery -->|"fetches orders"| node_appwrite
node_delivery -->|"shows order actions"| node_partnerorders
node_partnerorders -->|"updates order status"| node_appwrite
node_cartvm -->|"delegates cart operations"| node_repository
node_repository -->|"runs cart queries"| node_dao
node_database -->|"provides DAO"| node_dao
node_dao -->|"stores cart records"| node_cartitem

click node_main "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/MainActivity.kt"
click node_login "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/LoginActivity.kt"
click node_delivery "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/DeliveryBoyActivity.kt"
click node_products "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/UserDashboardActivity.kt"
click node_productview "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/adapters/ProductAdapter.kt"
click node_cart "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/CartActivity.kt"
click node_cartview "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/adapters/CartAdapter.kt"
click node_location "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/LocActivity.kt"
click node_distance "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/utils/MeasureDistance.kt"
click node_payment "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/PaymentActivity.kt"
click node_paystatus "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/PayStatusActivity.kt"
click node_orders "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/MyOrdersActivity.kt"
click node_orderview "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/adapters/OrderAdapter.kt"
click node_tracking "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/TrackOrderActivity.kt"
click node_partnerorders "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/adapters/BoyOrderAdapter.kt"
click node_orderdata "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/models/Order.kt"
click node_cartvm "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/room/CartedProductViewModel.kt"
click node_repository "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/room/ProductRepository.kt"
click node_dao "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/room/ProductDao.kt"
click node_database "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/room/ProductDatabase.kt"
click node_cartitem "https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/models/ProductCarted.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_main,node_login toneBlue
class node_products,node_productview,node_cart,node_cartview,node_location,node_distance,node_payment,node_paystatus,node_appwrite toneAmber
class node_delivery,node_orders,node_orderview,node_tracking,node_partnerorders,node_orderdata toneMint
class node_cartvm,node_repository,node_dao,node_database,node_cartitem toneRose
class node_customer,node_partner,node_razorpay,node_maps toneIndigo
```

## Components

### App entry and access

- [Role selection](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/MainActivity.kt): `app/src/main/java/com/qdot/watery/MainActivity.kt`
- [Customer login](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/LoginActivity.kt): `app/src/main/java/com/qdot/watery/LoginActivity.kt`

### Customer shopping

- [Product browsing](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/UserDashboardActivity.kt): `app/src/main/java/com/qdot/watery/UserDashboardActivity.kt`
- [Product cards](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/adapters/ProductAdapter.kt): `app/src/main/java/com/qdot/watery/adapters/ProductAdapter.kt`
- [Cart review](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/CartActivity.kt): `app/src/main/java/com/qdot/watery/CartActivity.kt`
- [Cart items](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/adapters/CartAdapter.kt): `app/src/main/java/com/qdot/watery/adapters/CartAdapter.kt`
- [Delivery location](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/LocActivity.kt): `app/src/main/java/com/qdot/watery/LocActivity.kt`
- [Delivery range check](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/utils/MeasureDistance.kt): `app/src/main/java/com/qdot/watery/utils/MeasureDistance.kt`
- [Payment and checkout](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/PaymentActivity.kt): `app/src/main/java/com/qdot/watery/PaymentActivity.kt`
- [Payment status](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/PayStatusActivity.kt): `app/src/main/java/com/qdot/watery/PayStatusActivity.kt`

### Orders and delivery

- [Partner dashboard](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/DeliveryBoyActivity.kt): `app/src/main/java/com/qdot/watery/DeliveryBoyActivity.kt`
- [Customer orders](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/MyOrdersActivity.kt): `app/src/main/java/com/qdot/watery/MyOrdersActivity.kt`
- [Order list](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/adapters/OrderAdapter.kt): `app/src/main/java/com/qdot/watery/adapters/OrderAdapter.kt`
- [Order tracking](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/TrackOrderActivity.kt): `app/src/main/java/com/qdot/watery/TrackOrderActivity.kt`
- [Partner order actions](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/adapters/BoyOrderAdapter.kt): `app/src/main/java/com/qdot/watery/adapters/BoyOrderAdapter.kt`
- [Order record](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/models/Order.kt): `app/src/main/java/com/qdot/watery/models/Order.kt`

### Local cart storage

- [Cart view model](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/room/CartedProductViewModel.kt): `app/src/main/java/com/qdot/watery/room/CartedProductViewModel.kt`
- [Cart repository](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/room/ProductRepository.kt): `app/src/main/java/com/qdot/watery/room/ProductRepository.kt`
- [Cart DAO](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/room/ProductDao.kt): `app/src/main/java/com/qdot/watery/room/ProductDao.kt`
- [Room cart database](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/room/ProductDatabase.kt): `app/src/main/java/com/qdot/watery/room/ProductDatabase.kt`
- [Cart product model](https://github.com/joymajumdar2001/watery/blob/main/app/src/main/java/com/qdot/watery/models/ProductCarted.kt): `app/src/main/java/com/qdot/watery/models/ProductCarted.kt`

### Other components

- **Customer**
- **Delivery partner**
- **Appwrite**
- **Razorpay**
- **Maps and location**

## Connections

- Customer → Role selection: opens app (evidence: `README.md`)
- Delivery partner → Role selection: opens app (evidence: `README.md`)
- Role selection → Customer login: chooses customer (evidence: `app/src/main/java/com/qdot/watery/MainActivity.kt`)
- Role selection → Partner dashboard: chooses partner (evidence: `app/src/main/java/com/qdot/watery/MainActivity.kt`)
- Customer login → Appwrite: authenticates (evidence: `app/src/main/java/com/qdot/watery/LoginActivity.kt`)
- Customer login → Product browsing: opens dashboard (evidence: `app/src/main/java/com/qdot/watery/LoginActivity.kt`)
- Product browsing → Appwrite: fetches products (evidence: `README.md`)
- Product browsing → Appwrite: fetches images (evidence: `README.md`)
- Product browsing → Product cards: renders products (evidence: `app/src/main/java/com/qdot/watery/UserDashboardActivity.kt`)
- Product browsing → Cart view model: observes cart count (evidence: `app/src/main/java/com/qdot/watery/UserDashboardActivity.kt`)
- Product browsing → Cart review: opens cart (evidence: `app/src/main/java/com/qdot/watery/UserDashboardActivity.kt`)
- Product browsing → Customer orders: opens orders (evidence: `app/src/main/java/com/qdot/watery/UserDashboardActivity.kt`)
- Product cards → Cart view model: updates cart (evidence: `app/src/main/java/com/qdot/watery/adapters/ProductAdapter.kt`)
- Cart review → Cart items: renders cart (evidence: `app/src/main/java/com/qdot/watery/CartActivity.kt`)
- Cart review → Cart view model: reads cart (evidence: `app/src/main/java/com/qdot/watery/CartActivity.kt`)
- Cart review → Delivery location: continues checkout (evidence: `app/src/main/java/com/qdot/watery/CartActivity.kt`)
- Cart items → Cart view model: changes quantities (evidence: `app/src/main/java/com/qdot/watery/adapters/CartAdapter.kt`)
- Delivery location → Delivery range check: checks distance (evidence: `app/src/main/java/com/qdot/watery/LocActivity.kt`)
- Delivery location → Maps and location: picks address (evidence: `app/src/main/java/com/qdot/watery/LocActivity.kt`)
- Delivery location → Payment and checkout: passes checkout details (evidence: `app/src/main/java/com/qdot/watery/LocActivity.kt`)
- Payment and checkout → Cart view model: reads cart items (evidence: `app/src/main/java/com/qdot/watery/PaymentActivity.kt`)
- Payment and checkout → Order record: builds order (evidence: `app/src/main/java/com/qdot/watery/PaymentActivity.kt`)
- Payment and checkout → Appwrite: writes order (evidence: `app/src/main/java/com/qdot/watery/PaymentActivity.kt`)
- Payment and checkout → Razorpay: creates online payment (evidence: `app/src/main/java/com/qdot/watery/PaymentActivity.kt`)
- Payment and checkout → Payment status: reports payment result (evidence: `app/src/main/java/com/qdot/watery/PaymentActivity.kt`)
- Customer orders → Appwrite: fetches orders (evidence: `README.md`)
- Customer orders → Order list: renders orders (evidence: `app/src/main/java/com/qdot/watery/MyOrdersActivity.kt`)
- Order list → Order tracking: opens tracking (evidence: `app/src/main/java/com/qdot/watery/adapters/OrderAdapter.kt`)
- Order tracking → Maps and location: shows route map (evidence: `app/src/main/java/com/qdot/watery/TrackOrderActivity.kt`)
- Partner dashboard → Appwrite: fetches orders (evidence: `README.md`)
- Partner dashboard → Partner order actions: shows order actions (evidence: `app/src/main/java/com/qdot/watery/DeliveryBoyActivity.kt`)
- Partner order actions → Appwrite: updates order status (evidence: `app/src/main/java/com/qdot/watery/adapters/BoyOrderAdapter.kt`)
- Cart view model → Cart repository: delegates cart operations (evidence: `app/src/main/java/com/qdot/watery/room/CartedProductViewModel.kt`)
- Cart repository → Cart DAO: runs cart queries (evidence: `app/src/main/java/com/qdot/watery/room/ProductRepository.kt`)
- Room cart database → Cart DAO: provides DAO (evidence: `app/src/main/java/com/qdot/watery/room/ProductDatabase.kt`)
- Cart DAO → Cart product model: stores cart records (evidence: `app/src/main/java/com/qdot/watery/room/ProductDao.kt`)
