# neruaka/janadistribution architecture

> Architecture diagram of the GitHub repository neruaka/janadistribution, 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/neruaka/janadistribution
- Repository: https://github.com/neruaka/janadistribution
- Video tour (about a minute): https://gitdiagram.com/neruaka/janadistribution/video

## Overview

Jana Distribution is a B2B/B2C food-commerce platform. Its main customer journey runs from product discovery through a persistent cart and order creation, with account access for order history and invoices; a separate admin journey manages the catalog, customers, orders, promotions, statistics, and site settings. The README documents the frontend-to-REST-API boundary and PostgreSQL/optional Redis roles. Sampled source confirms selected controller, route, service, repository, and frontend responsibilities; links between unsampled modules are omitted where their wiring cannot be verified.

Main entry points: [`frontend/src/App.jsx`](https://github.com/neruaka/janadistribution/blob/main/frontend/src/App.jsx) (React application), [`backend/src/index.js`](https://github.com/neruaka/janadistribution/blob/main/backend/src/index.js) (Express API server), [`frontend/src/services/api.js`](https://github.com/neruaka/janadistribution/blob/main/frontend/src/services/api.js) (HTTP client), [`frontend/src/pages/admin/AdminDashboard.jsx`](https://github.com/neruaka/janadistribution/blob/main/frontend/src/pages/admin/AdminDashboard.jsx) (Admin screens)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_storefront["Customer storefront"]
  node_app["React application<br/>[App.jsx]"]
  node_catalog["Catalog and product pages<br/>[CataloguePage.jsx]"]
  node_cartui["Cart and checkout<br/>[CartPage.jsx]"]
  node_account["Account and orders"]
  node_authstate["Auth and cart state<br/>[AuthContext.jsx]"]
  node_productapi["Product API client<br/>[productService.js]"]
  node_cartapi["Cart API client<br/>[cartService.js]"]
  node_orderapi["Order API client<br/>[orderService.js]"]
end

subgraph group_commerce["Commerce API"]
  node_authroutes["Authentication routes<br/>[auth.routes.js]"]
  node_authlogic["Authentication logic<br/>[auth.service.js]"]
  node_productcontroller["Product endpoints"]
  node_orders["Cart and order domain<br/>[order.service.js]"]
end

subgraph group_admin["Administration"]
  node_adminui["Admin screens<br/>[AdminDashboard.jsx]"]
  node_adminapi["Admin API client<br/>[adminService.js]"]
  node_adminorders["Admin order routes"]
  node_settings["Site settings"]
end

subgraph group_runtime["API runtime and state"]
  node_http["HTTP client<br/>[api.js]"]
  node_server["Express API server<br/>[index.js]"]
end

subgraph group_integrations["External services"]
  node_database[("PostgreSQL<br/>[database.js]")]
  node_redis[("Redis cache<br/>[redis.js]")]
  node_email["Email delivery<br/>[email.service.js]"]
  node_storage["Image storage<br/>[r2.js]"]
end

node_shopper(("Shopper"))

node_shopper -->|"uses"| node_app
node_app -->|"routes to"| node_catalog
node_app -->|"routes to"| node_cartui
node_app -->|"routes to"| node_account
node_app -->|"provides state"| node_authstate
node_catalog -->|"requests products"| node_productapi
node_cartui -->|"requests cart"| node_cartapi
node_cartui -->|"submits orders"| node_orderapi
node_account -->|"requests orders"| node_orderapi
node_productapi -->|"sends requests"| node_http
node_cartapi -->|"sends requests"| node_http
node_orderapi -->|"sends requests"| node_http
node_adminui -->|"requests admin data"| node_adminapi
node_adminapi -->|"sends requests"| node_http
node_http -->|"calls REST API"| node_server
node_server -->|"mounts routes"| node_authroutes
node_authroutes -->|"delegates auth"| node_authlogic
node_server -->|"mounts products"| node_productcontroller
node_server -->|"mounts admin routes"| node_adminorders
node_productcontroller -->|"reads and writes"| node_database
node_adminorders -->|"queries orders"| node_database
node_settings -->|"reads and writes"| node_database
node_server -.->|"connects optionally"| node_redis
node_authlogic -->|"sends email"| node_email
node_adminui -->|"manages settings"| node_settings
node_adminui -.->|"uploads images"| node_storage

click node_app "https://github.com/neruaka/janadistribution/blob/main/frontend/src/App.jsx"
click node_catalog "https://github.com/neruaka/janadistribution/blob/main/frontend/src/pages/CataloguePage.jsx"
click node_cartui "https://github.com/neruaka/janadistribution/blob/main/frontend/src/pages/CartPage.jsx"
click node_account "https://github.com/neruaka/janadistribution/blob/main/frontend/src/pages/OrderHistoryPage.jsx"
click node_authstate "https://github.com/neruaka/janadistribution/blob/main/frontend/src/contexts/AuthContext.jsx"
click node_productapi "https://github.com/neruaka/janadistribution/blob/main/frontend/src/services/productService.js"
click node_cartapi "https://github.com/neruaka/janadistribution/blob/main/frontend/src/services/cartService.js"
click node_orderapi "https://github.com/neruaka/janadistribution/blob/main/frontend/src/services/orderService.js"
click node_http "https://github.com/neruaka/janadistribution/blob/main/frontend/src/services/api.js"
click node_server "https://github.com/neruaka/janadistribution/blob/main/backend/src/index.js"
click node_authroutes "https://github.com/neruaka/janadistribution/blob/main/backend/src/routes/auth.routes.js"
click node_authlogic "https://github.com/neruaka/janadistribution/blob/main/backend/src/services/auth.service.js"
click node_productcontroller "https://github.com/neruaka/janadistribution/blob/main/backend/src/controllers/product.controller.js"
click node_orders "https://github.com/neruaka/janadistribution/blob/main/backend/src/services/order.service.js"
click node_adminui "https://github.com/neruaka/janadistribution/blob/main/frontend/src/pages/admin/AdminDashboard.jsx"
click node_adminapi "https://github.com/neruaka/janadistribution/blob/main/frontend/src/services/adminService.js"
click node_adminorders "https://github.com/neruaka/janadistribution/blob/main/backend/src/routes/admin.order.routes.js"
click node_settings "https://github.com/neruaka/janadistribution/blob/main/backend/src/controllers/settings.controller.js"
click node_database "https://github.com/neruaka/janadistribution/blob/main/backend/src/config/database.js"
click node_redis "https://github.com/neruaka/janadistribution/blob/main/backend/src/config/redis.js"
click node_email "https://github.com/neruaka/janadistribution/blob/main/backend/src/services/email.service.js"
click node_storage "https://github.com/neruaka/janadistribution/blob/main/backend/src/config/r2.js"

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_app,node_catalog,node_cartui,node_account,node_authstate,node_productapi,node_cartapi,node_orderapi toneBlue
class node_authroutes,node_authlogic,node_productcontroller,node_orders toneAmber
class node_adminui,node_adminapi,node_adminorders,node_settings toneMint
class node_http,node_server toneRose
class node_database,node_redis,node_email,node_storage,node_shopper toneIndigo
```

## Components

### Customer storefront

- [React application](https://github.com/neruaka/janadistribution/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Catalog and product pages](https://github.com/neruaka/janadistribution/blob/main/frontend/src/pages/CataloguePage.jsx): `frontend/src/pages/CataloguePage.jsx`
- [Cart and checkout](https://github.com/neruaka/janadistribution/blob/main/frontend/src/pages/CartPage.jsx): `frontend/src/pages/CartPage.jsx`
- [Account and orders](https://github.com/neruaka/janadistribution/blob/main/frontend/src/pages/OrderHistoryPage.jsx): `frontend/src/pages/OrderHistoryPage.jsx`
- [Auth and cart state](https://github.com/neruaka/janadistribution/blob/main/frontend/src/contexts/AuthContext.jsx): `frontend/src/contexts/AuthContext.jsx`
- [Product API client](https://github.com/neruaka/janadistribution/blob/main/frontend/src/services/productService.js): `frontend/src/services/productService.js`
- [Cart API client](https://github.com/neruaka/janadistribution/blob/main/frontend/src/services/cartService.js): `frontend/src/services/cartService.js`
- [Order API client](https://github.com/neruaka/janadistribution/blob/main/frontend/src/services/orderService.js): `frontend/src/services/orderService.js`

### Commerce API

- [Authentication routes](https://github.com/neruaka/janadistribution/blob/main/backend/src/routes/auth.routes.js): `backend/src/routes/auth.routes.js`
- [Authentication logic](https://github.com/neruaka/janadistribution/blob/main/backend/src/services/auth.service.js): `backend/src/services/auth.service.js`
- [Product endpoints](https://github.com/neruaka/janadistribution/blob/main/backend/src/controllers/product.controller.js): `backend/src/controllers/product.controller.js`
- [Cart and order domain](https://github.com/neruaka/janadistribution/blob/main/backend/src/services/order.service.js): `backend/src/services/order.service.js`

### Administration

- [Admin screens](https://github.com/neruaka/janadistribution/blob/main/frontend/src/pages/admin/AdminDashboard.jsx): `frontend/src/pages/admin/AdminDashboard.jsx`
- [Admin API client](https://github.com/neruaka/janadistribution/blob/main/frontend/src/services/adminService.js): `frontend/src/services/adminService.js`
- [Admin order routes](https://github.com/neruaka/janadistribution/blob/main/backend/src/routes/admin.order.routes.js): `backend/src/routes/admin.order.routes.js`
- [Site settings](https://github.com/neruaka/janadistribution/blob/main/backend/src/controllers/settings.controller.js): `backend/src/controllers/settings.controller.js`

### API runtime and state

- [HTTP client](https://github.com/neruaka/janadistribution/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`
- [Express API server](https://github.com/neruaka/janadistribution/blob/main/backend/src/index.js): `backend/src/index.js`

### External services

- [PostgreSQL](https://github.com/neruaka/janadistribution/blob/main/backend/src/config/database.js): `backend/src/config/database.js`
- [Redis cache](https://github.com/neruaka/janadistribution/blob/main/backend/src/config/redis.js): `backend/src/config/redis.js`
- [Email delivery](https://github.com/neruaka/janadistribution/blob/main/backend/src/services/email.service.js): `backend/src/services/email.service.js`
- [Image storage](https://github.com/neruaka/janadistribution/blob/main/backend/src/config/r2.js): `backend/src/config/r2.js`

### Other components

- **Shopper**

## Connections

- Shopper → React application: uses
- React application → Catalog and product pages: routes to
- React application → Cart and checkout: routes to
- React application → Account and orders: routes to
- React application → Auth and cart state: provides state
- Catalog and product pages → Product API client: requests products
- Cart and checkout → Cart API client: requests cart
- Cart and checkout → Order API client: submits orders
- Account and orders → Order API client: requests orders
- Product API client → HTTP client: sends requests
- Cart API client → HTTP client: sends requests
- Order API client → HTTP client: sends requests
- Admin screens → Admin API client: requests admin data
- Admin API client → HTTP client: sends requests
- HTTP client → Express API server: calls REST API
- Express API server → Authentication routes: mounts routes
- Authentication routes → Authentication logic: delegates auth
- Express API server → Product endpoints: mounts products
- Express API server → Admin order routes: mounts admin routes
- Product endpoints → PostgreSQL: reads and writes
- Admin order routes → PostgreSQL: queries orders
- Site settings → PostgreSQL: reads and writes
- Express API server → Redis cache: connects optionally
- Authentication logic → Email delivery: sends email
- Admin screens → Site settings: manages settings
- Admin screens → Image storage: uploads images
