# nameissatya/royaldryfruits architecture

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

- Interactive diagram: https://gitdiagram.com/nameissatya/royaldryfruits
- Repository: https://github.com/nameissatya/royaldryfruits

## Overview

RoyalDryFruits is a dry-fruits storefront with a separate admin portal and an ASP.NET API. The main customer journey is product discovery, cart, checkout, and order tracking; staff manage catalog, customers, orders, settings, and in-store billing. The graph also shows authentication, product-image upload, and persistent application data. The README provides no product detail, and several frontend services and backend controllers were not sampled, so their internal wiring is shown only where supported by the tree or excerpts.

Main entry points: [`backend/src/RoyalDryFruits.API/Program.cs`](https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.API/Program.cs) (HTTP API), [`frontend/admin-portal/src/App.jsx`](https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/App.jsx) (Admin routes), [`backend/src/RoyalDryFruits.Infrastructure/Persistence/ApplicationDbContext.cs`](https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.Infrastructure/Persistence/ApplicationDbContext.cs) (Application database), [`frontend/admin-portal/src/hooks/useQueries.js`](https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/hooks/useQueries.js) (Admin data queries)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_storefront["Customer storefront"]
  node_store_app["Storefront app<br/>[App.jsx]"]
  node_catalog_pages["Browse and gifting<br/>[CollectionPage.jsx]"]
  node_cart["Cart state<br/>[CartContext.jsx]"]
  node_checkout["Checkout<br/>[CheckoutPage.jsx]"]
  node_order_tracking["Order tracking<br/>[MyOrdersPage.jsx]"]
  node_store_auth["Customer authentication<br/>[AuthContext.jsx]"]
end

subgraph group_admin["Admin portal"]
  node_admin_app["Admin routes<br/>[App.jsx]"]
  node_admin_auth["Admin login<br/>[LoginPage.jsx]"]
  node_admin_dashboard["Dashboard<br/>[DashboardPage.jsx]"]
  node_admin_catalog["Catalog management<br/>[ProductsPage.jsx]"]
  node_admin_orders["Order management<br/>[OrdersPage.jsx]"]
  node_admin_pos["POS billing<br/>[PosBillingPage.jsx]"]
  node_admin_settings["Store settings<br/>[SettingsPage.jsx]"]
  node_admin_queries["Admin data queries<br/>[useQueries.js]"]
end

subgraph group_api["API capabilities"]
  node_api_runtime["HTTP API<br/>[Program.cs]"]
  node_product_api["Product endpoints"]
  node_admin_product_api["Admin product endpoints"]
  node_order_api["Order endpoints"]
  node_admin_order_api["Admin order endpoints"]
  node_auth_api["Authentication endpoints<br/>[AuthController.cs]"]
  node_settings_api["Settings endpoints"]
  node_admin_settings_api["Admin settings endpoints"]
end

subgraph group_data["Persistence and integrations"]
  node_database[("Application database")]
  node_auth_service["Authentication service<br/>[AuthService.cs]"]
end

node_shopper(("Shopper"))
node_staff(("Store staff"))
node_cloudinary["Cloudinary"]

node_shopper -->|"uses"| node_store_app
node_store_app -->|"routes to"| node_catalog_pages
node_store_app -->|"provides state"| node_cart
node_catalog_pages -->|"requests products"| node_product_api
node_shopper -->|"places order"| node_checkout
node_checkout -->|"submits order"| node_order_api
node_order_tracking -->|"retrieves orders"| node_order_api
node_store_app -->|"provides auth"| node_store_auth
node_store_auth -->|"authenticates"| node_auth_api
node_staff -->|"uses"| node_admin_app
node_admin_app -->|"routes to"| node_admin_auth
node_admin_app -->|"routes to"| node_admin_dashboard
node_admin_app -->|"routes to"| node_admin_catalog
node_admin_app -->|"routes to"| node_admin_orders
node_admin_app -->|"routes to"| node_admin_pos
node_admin_app -->|"routes to"| node_admin_settings
node_admin_catalog -->|"loads data"| node_admin_queries
node_admin_orders -->|"loads data"| node_admin_queries
node_admin_settings -->|"loads data"| node_admin_queries
node_admin_queries -->|"requests catalog"| node_admin_product_api
node_admin_queries -->|"requests orders"| node_admin_order_api
node_admin_queries -->|"requests settings"| node_admin_settings_api
node_admin_pos -->|"creates sale"| node_admin_order_api
node_admin_auth -->|"calls API"| node_api_runtime
node_api_runtime -->|"dispatches"| node_product_api
node_api_runtime -->|"dispatches"| node_admin_product_api
node_api_runtime -->|"dispatches"| node_order_api
node_api_runtime -->|"dispatches"| node_admin_order_api
node_api_runtime -->|"dispatches"| node_auth_api
node_api_runtime -->|"dispatches"| node_settings_api
node_api_runtime -->|"dispatches"| node_admin_settings_api
node_product_api -->|"reads products"| node_database
node_admin_product_api -->|"manages catalog"| node_database
node_admin_product_api -.->|"uploads images"| node_cloudinary
node_order_api -->|"reads and writes"| node_database
node_admin_order_api -->|"reads and writes"| node_database
node_settings_api -->|"reads settings"| node_database
node_admin_settings_api -->|"manages settings"| node_database
node_auth_api -->|"delegates auth"| node_auth_service
node_auth_service -->|"reads and writes users"| node_database

click node_store_app "https://github.com/nameissatya/royaldryfruits/blob/main/frontend/royaldryfruits-app/src/App.jsx"
click node_catalog_pages "https://github.com/nameissatya/royaldryfruits/blob/main/frontend/royaldryfruits-app/src/pages/CollectionPage.jsx"
click node_cart "https://github.com/nameissatya/royaldryfruits/blob/main/frontend/royaldryfruits-app/src/context/CartContext.jsx"
click node_checkout "https://github.com/nameissatya/royaldryfruits/blob/main/frontend/royaldryfruits-app/src/pages/CheckoutPage.jsx"
click node_order_tracking "https://github.com/nameissatya/royaldryfruits/blob/main/frontend/royaldryfruits-app/src/pages/MyOrdersPage.jsx"
click node_store_auth "https://github.com/nameissatya/royaldryfruits/blob/main/frontend/royaldryfruits-app/src/context/AuthContext.jsx"
click node_admin_app "https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/App.jsx"
click node_admin_auth "https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/pages/LoginPage.jsx"
click node_admin_dashboard "https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/pages/DashboardPage.jsx"
click node_admin_catalog "https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/pages/ProductsPage.jsx"
click node_admin_orders "https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/pages/OrdersPage.jsx"
click node_admin_pos "https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/pages/PosBillingPage.jsx"
click node_admin_settings "https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/pages/SettingsPage.jsx"
click node_admin_queries "https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/hooks/useQueries.js"
click node_api_runtime "https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.API/Program.cs"
click node_product_api "https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.API/Controllers/ProductsController.cs"
click node_admin_product_api "https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.API/Controllers/Admin/AdminProductsController.cs"
click node_order_api "https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.API/Controllers/OrdersController.cs"
click node_admin_order_api "https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.API/Controllers/Admin/AdminOrdersController.cs"
click node_auth_api "https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.API/Controllers/AuthController.cs"
click node_settings_api "https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.API/Controllers/SettingsController.cs"
click node_admin_settings_api "https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.API/Controllers/Admin/AdminSettingsController.cs"
click node_database "https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.Infrastructure/Persistence/ApplicationDbContext.cs"
click node_auth_service "https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.Infrastructure/Services/AuthService.cs"

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_store_app,node_catalog_pages,node_cart,node_checkout,node_order_tracking,node_store_auth toneBlue
class node_admin_app,node_admin_auth,node_admin_dashboard,node_admin_catalog,node_admin_orders,node_admin_pos,node_admin_settings,node_admin_queries toneAmber
class node_api_runtime,node_product_api,node_admin_product_api,node_order_api,node_admin_order_api,node_auth_api,node_settings_api,node_admin_settings_api toneMint
class node_database,node_auth_service toneRose
class node_shopper,node_staff,node_cloudinary toneIndigo
```

## Components

### Customer storefront

- [Storefront app](https://github.com/nameissatya/royaldryfruits/blob/main/frontend/royaldryfruits-app/src/App.jsx): `frontend/royaldryfruits-app/src/App.jsx`
- [Browse and gifting](https://github.com/nameissatya/royaldryfruits/blob/main/frontend/royaldryfruits-app/src/pages/CollectionPage.jsx): `frontend/royaldryfruits-app/src/pages/CollectionPage.jsx`
- [Cart state](https://github.com/nameissatya/royaldryfruits/blob/main/frontend/royaldryfruits-app/src/context/CartContext.jsx): `frontend/royaldryfruits-app/src/context/CartContext.jsx`
- [Checkout](https://github.com/nameissatya/royaldryfruits/blob/main/frontend/royaldryfruits-app/src/pages/CheckoutPage.jsx): `frontend/royaldryfruits-app/src/pages/CheckoutPage.jsx`
- [Order tracking](https://github.com/nameissatya/royaldryfruits/blob/main/frontend/royaldryfruits-app/src/pages/MyOrdersPage.jsx): `frontend/royaldryfruits-app/src/pages/MyOrdersPage.jsx`
- [Customer authentication](https://github.com/nameissatya/royaldryfruits/blob/main/frontend/royaldryfruits-app/src/context/AuthContext.jsx): `frontend/royaldryfruits-app/src/context/AuthContext.jsx`

### Admin portal

- [Admin routes](https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/App.jsx): `frontend/admin-portal/src/App.jsx`
- [Admin login](https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/pages/LoginPage.jsx): `frontend/admin-portal/src/pages/LoginPage.jsx`
- [Dashboard](https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/pages/DashboardPage.jsx): `frontend/admin-portal/src/pages/DashboardPage.jsx`
- [Catalog management](https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/pages/ProductsPage.jsx): `frontend/admin-portal/src/pages/ProductsPage.jsx`
- [Order management](https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/pages/OrdersPage.jsx): `frontend/admin-portal/src/pages/OrdersPage.jsx`
- [POS billing](https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/pages/PosBillingPage.jsx): `frontend/admin-portal/src/pages/PosBillingPage.jsx`
- [Store settings](https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/pages/SettingsPage.jsx): `frontend/admin-portal/src/pages/SettingsPage.jsx`
- [Admin data queries](https://github.com/nameissatya/royaldryfruits/blob/main/frontend/admin-portal/src/hooks/useQueries.js): `frontend/admin-portal/src/hooks/useQueries.js`

### API capabilities

- [HTTP API](https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.API/Program.cs): `backend/src/RoyalDryFruits.API/Program.cs`
- [Product endpoints](https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.API/Controllers/ProductsController.cs): `backend/src/RoyalDryFruits.API/Controllers/ProductsController.cs`
- [Admin product endpoints](https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.API/Controllers/Admin/AdminProductsController.cs): `backend/src/RoyalDryFruits.API/Controllers/Admin/AdminProductsController.cs`
- [Order endpoints](https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.API/Controllers/OrdersController.cs): `backend/src/RoyalDryFruits.API/Controllers/OrdersController.cs`
- [Admin order endpoints](https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.API/Controllers/Admin/AdminOrdersController.cs): `backend/src/RoyalDryFruits.API/Controllers/Admin/AdminOrdersController.cs`
- [Authentication endpoints](https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.API/Controllers/AuthController.cs): `backend/src/RoyalDryFruits.API/Controllers/AuthController.cs`
- [Settings endpoints](https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.API/Controllers/SettingsController.cs): `backend/src/RoyalDryFruits.API/Controllers/SettingsController.cs`
- [Admin settings endpoints](https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.API/Controllers/Admin/AdminSettingsController.cs): `backend/src/RoyalDryFruits.API/Controllers/Admin/AdminSettingsController.cs`

### Persistence and integrations

- [Application database](https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.Infrastructure/Persistence/ApplicationDbContext.cs): `backend/src/RoyalDryFruits.Infrastructure/Persistence/ApplicationDbContext.cs`
- [Authentication service](https://github.com/nameissatya/royaldryfruits/blob/main/backend/src/RoyalDryFruits.Infrastructure/Services/AuthService.cs): `backend/src/RoyalDryFruits.Infrastructure/Services/AuthService.cs`

### Other components

- **Shopper**
- **Store staff**
- **Cloudinary**

## Connections

- Shopper → Storefront app: uses
- Storefront app → Browse and gifting: routes to
- Storefront app → Cart state: provides state
- Browse and gifting → Product endpoints: requests products
- Shopper → Checkout: places order
- Checkout → Order endpoints: submits order
- Order tracking → Order endpoints: retrieves orders
- Storefront app → Customer authentication: provides auth
- Customer authentication → Authentication endpoints: authenticates
- Store staff → Admin routes: uses
- Admin routes → Admin login: routes to
- Admin routes → Dashboard: routes to
- Admin routes → Catalog management: routes to
- Admin routes → Order management: routes to
- Admin routes → POS billing: routes to
- Admin routes → Store settings: routes to
- Catalog management → Admin data queries: loads data
- Order management → Admin data queries: loads data
- Store settings → Admin data queries: loads data
- Admin data queries → Admin product endpoints: requests catalog
- Admin data queries → Admin order endpoints: requests orders
- Admin data queries → Admin settings endpoints: requests settings
- POS billing → Admin order endpoints: creates sale
- Admin login → HTTP API: calls API
- HTTP API → Product endpoints: dispatches
- HTTP API → Admin product endpoints: dispatches
- HTTP API → Order endpoints: dispatches
- HTTP API → Admin order endpoints: dispatches
- HTTP API → Authentication endpoints: dispatches
- HTTP API → Settings endpoints: dispatches
- HTTP API → Admin settings endpoints: dispatches
- Product endpoints → Application database: reads products
- Admin product endpoints → Application database: manages catalog
- Admin product endpoints → Cloudinary: uploads images
- Order endpoints → Application database: reads and writes
- Admin order endpoints → Application database: reads and writes
- Settings endpoints → Application database: reads settings
- Admin settings endpoints → Application database: manages settings
- Authentication endpoints → Authentication service: delegates auth
- Authentication service → Application database: reads and writes users
