# vergo-wear/vergo-pos architecture

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

- Interactive diagram: https://gitdiagram.com/vergo-wear/vergo-pos
- Repository: https://github.com/vergo-wear/vergo-pos

## Overview

Vergo POS is a browser-based point-of-sale and inventory application with an Express/MongoDB backend. The main workflow is to browse stock, build a customer order, and submit a sale; the backend checks inventory, records the sale, and decrements stock. Admin functions cover login, inventory maintenance, sales review, and archiving daily reports; seller login is also present. The graph follows relationships visible in the supplied excerpts and index; several dashboard and login-to-API connections are not fully shown, so they are omitted or marked unverified.

Main entry points: [`server/routes/saleRoutes.js`](https://github.com/vergo-wear/vergo-pos/blob/main/server/routes/saleRoutes.js) (Sale Routes), [`src/App.jsx`](https://github.com/vergo-wear/vergo-pos/blob/main/src/App.jsx) (POS Checkout), [`src/pages/AdminDashboard.jsx`](https://github.com/vergo-wear/vergo-pos/blob/main/src/pages/AdminDashboard.jsx) (Admin Dashboard), [`server/routes/itemRoutes.js`](https://github.com/vergo-wear/vergo-pos/blob/main/server/routes/itemRoutes.js) (Item Routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["POS and Admin UI"]
  node_app_entry["Route Entry<br/>[main.jsx]"]
  node_pos["POS Checkout<br/>[App.jsx]"]
  node_item_card["Item Card<br/>[ItemCard.jsx]"]
  node_cart_item["Cart Item<br/>[CartItem.jsx]"]
  node_admin_dashboard["Admin Dashboard<br/>[AdminDashboard.jsx]"]
  node_admin_layout["Admin Layout<br/>[AdminLayout.jsx]"]
  node_admin_login["Admin Login<br/>[Login.jsx]"]
  node_seller_login["Seller Login<br/>[SellerLogin.jsx]"]
end

subgraph group_api["API and Access"]
  node_api_server["API Server<br/>[server.js]"]
  node_admin_routes["Admin Auth Routes<br/>[adminRoutes.js]"]
  node_seller_routes["Seller Auth Routes<br/>[sellerRoutes.js]"]
  node_item_routes["Item Routes<br/>[itemRoutes.js]"]
  node_sale_routes["Sale Routes<br/>[saleRoutes.js]"]
  node_auth["JWT Guard<br/>[auth.js]"]
  node_admin_model[("Admin Records<br/>[Admin.js]")]
  node_seller_model[("Seller Records<br/>[Seller.js]")]
end

subgraph group_inventory["Inventory Data"]
  node_item_model[("Item Records<br/>[Item.js]")]
end

subgraph group_sales["Sales and Reporting"]
  node_sale_model[("Active Sales<br/>[Sale.js]")]
  node_report_model[("Daily Reports<br/>[DailyReport.js]")]
end

node_cashier(("Cashier"))
node_admin_user(("Admin User"))
node_seller_user(("Seller User"))

node_cashier -->|"uses"| node_pos
node_app_entry -->|"routes to"| node_pos
node_app_entry -->|"routes to"| node_admin_login
node_app_entry -->|"routes to"| node_seller_login
node_app_entry -->|"routes to"| node_admin_dashboard
node_pos -->|"renders"| node_item_card
node_pos -->|"renders"| node_cart_item
node_pos -->|"fetches items"| node_item_routes
node_pos -->|"submits sale"| node_sale_routes
node_admin_user -->|"uses"| node_admin_dashboard
node_seller_user -->|"uses"| node_seller_login
node_admin_dashboard -->|"renders"| node_admin_layout
node_admin_dashboard -->|"updates items"| node_item_routes
node_admin_dashboard -->|"resets sales"| node_sale_routes
node_api_server -->|"mounts"| node_admin_routes
node_api_server -->|"mounts"| node_seller_routes
node_api_server -->|"mounts"| node_item_routes
node_api_server -->|"mounts"| node_sale_routes
node_admin_routes -->|"reads and writes"| node_admin_model
node_seller_routes -->|"reads and writes"| node_seller_model
node_item_routes -->|"reads and writes"| node_item_model
node_sale_routes -->|"reads and writes"| node_sale_model
node_sale_routes -->|"archives reports"| node_report_model
node_sale_routes -->|"checks and decrements stock"| node_item_model
node_item_routes -->|"guards writes"| node_auth
node_sale_routes -->|"guards admin actions"| node_auth

click node_app_entry "https://github.com/vergo-wear/vergo-pos/blob/main/src/main.jsx"
click node_pos "https://github.com/vergo-wear/vergo-pos/blob/main/src/App.jsx"
click node_item_card "https://github.com/vergo-wear/vergo-pos/blob/main/src/components/ItemCard.jsx"
click node_cart_item "https://github.com/vergo-wear/vergo-pos/blob/main/src/components/CartItem.jsx"
click node_admin_dashboard "https://github.com/vergo-wear/vergo-pos/blob/main/src/pages/AdminDashboard.jsx"
click node_admin_layout "https://github.com/vergo-wear/vergo-pos/blob/main/src/components/AdminLayout.jsx"
click node_admin_login "https://github.com/vergo-wear/vergo-pos/blob/main/src/pages/Login.jsx"
click node_seller_login "https://github.com/vergo-wear/vergo-pos/blob/main/src/pages/SellerLogin.jsx"
click node_api_server "https://github.com/vergo-wear/vergo-pos/blob/main/server/server.js"
click node_admin_routes "https://github.com/vergo-wear/vergo-pos/blob/main/server/routes/adminRoutes.js"
click node_seller_routes "https://github.com/vergo-wear/vergo-pos/blob/main/server/routes/sellerRoutes.js"
click node_item_routes "https://github.com/vergo-wear/vergo-pos/blob/main/server/routes/itemRoutes.js"
click node_sale_routes "https://github.com/vergo-wear/vergo-pos/blob/main/server/routes/saleRoutes.js"
click node_auth "https://github.com/vergo-wear/vergo-pos/blob/main/server/middleware/auth.js"
click node_admin_model "https://github.com/vergo-wear/vergo-pos/blob/main/server/models/Admin.js"
click node_seller_model "https://github.com/vergo-wear/vergo-pos/blob/main/server/models/Seller.js"
click node_item_model "https://github.com/vergo-wear/vergo-pos/blob/main/server/models/Item.js"
click node_sale_model "https://github.com/vergo-wear/vergo-pos/blob/main/server/models/Sale.js"
click node_report_model "https://github.com/vergo-wear/vergo-pos/blob/main/server/models/DailyReport.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_entry,node_pos,node_item_card,node_cart_item,node_admin_dashboard,node_admin_layout,node_admin_login,node_seller_login,node_admin_user,node_seller_user toneBlue
class node_api_server,node_admin_routes,node_seller_routes,node_item_routes,node_sale_routes,node_auth,node_admin_model,node_seller_model toneAmber
class node_item_model toneMint
class node_sale_model,node_report_model toneRose
class node_cashier toneIndigo
```

## Components

### POS and Admin UI

- [Route Entry](https://github.com/vergo-wear/vergo-pos/blob/main/src/main.jsx): `src/main.jsx`
- [POS Checkout](https://github.com/vergo-wear/vergo-pos/blob/main/src/App.jsx): `src/App.jsx`
- [Item Card](https://github.com/vergo-wear/vergo-pos/blob/main/src/components/ItemCard.jsx): `src/components/ItemCard.jsx`
- [Cart Item](https://github.com/vergo-wear/vergo-pos/blob/main/src/components/CartItem.jsx): `src/components/CartItem.jsx`
- [Admin Dashboard](https://github.com/vergo-wear/vergo-pos/blob/main/src/pages/AdminDashboard.jsx): `src/pages/AdminDashboard.jsx`
- [Admin Layout](https://github.com/vergo-wear/vergo-pos/blob/main/src/components/AdminLayout.jsx): `src/components/AdminLayout.jsx`
- [Admin Login](https://github.com/vergo-wear/vergo-pos/blob/main/src/pages/Login.jsx): `src/pages/Login.jsx`
- [Seller Login](https://github.com/vergo-wear/vergo-pos/blob/main/src/pages/SellerLogin.jsx): `src/pages/SellerLogin.jsx`

### API and Access

- [API Server](https://github.com/vergo-wear/vergo-pos/blob/main/server/server.js): `server/server.js`
- [Admin Auth Routes](https://github.com/vergo-wear/vergo-pos/blob/main/server/routes/adminRoutes.js): `server/routes/adminRoutes.js`
- [Seller Auth Routes](https://github.com/vergo-wear/vergo-pos/blob/main/server/routes/sellerRoutes.js): `server/routes/sellerRoutes.js`
- [Item Routes](https://github.com/vergo-wear/vergo-pos/blob/main/server/routes/itemRoutes.js): `server/routes/itemRoutes.js`
- [Sale Routes](https://github.com/vergo-wear/vergo-pos/blob/main/server/routes/saleRoutes.js): `server/routes/saleRoutes.js`
- [JWT Guard](https://github.com/vergo-wear/vergo-pos/blob/main/server/middleware/auth.js): `server/middleware/auth.js`
- [Admin Records](https://github.com/vergo-wear/vergo-pos/blob/main/server/models/Admin.js): `server/models/Admin.js`
- [Seller Records](https://github.com/vergo-wear/vergo-pos/blob/main/server/models/Seller.js): `server/models/Seller.js`

### Inventory Data

- [Item Records](https://github.com/vergo-wear/vergo-pos/blob/main/server/models/Item.js): `server/models/Item.js`

### Sales and Reporting

- [Active Sales](https://github.com/vergo-wear/vergo-pos/blob/main/server/models/Sale.js): `server/models/Sale.js`
- [Daily Reports](https://github.com/vergo-wear/vergo-pos/blob/main/server/models/DailyReport.js): `server/models/DailyReport.js`

### Other components

- **Cashier**
- **Admin User**
- **Seller User**

## Connections

- Cashier → POS Checkout: uses
- Route Entry → POS Checkout: routes to (evidence: `src/main.jsx`)
- Route Entry → Admin Login: routes to (evidence: `src/main.jsx`)
- Route Entry → Seller Login: routes to (evidence: `src/main.jsx`)
- Route Entry → Admin Dashboard: routes to (evidence: `src/main.jsx`)
- POS Checkout → Item Card: renders (evidence: `src/App.jsx`)
- POS Checkout → Cart Item: renders (evidence: `src/App.jsx`)
- POS Checkout → Item Routes: fetches items (evidence: `src/App.jsx`)
- POS Checkout → Sale Routes: submits sale (evidence: `src/App.jsx`)
- Admin User → Admin Dashboard: uses
- Seller User → Seller Login: uses
- Admin Dashboard → Admin Layout: renders (evidence: `src/pages/AdminDashboard.jsx`)
- Admin Dashboard → Item Routes: updates items (evidence: `src/pages/AdminDashboard.jsx`)
- Admin Dashboard → Sale Routes: resets sales (evidence: `src/pages/AdminDashboard.jsx`)
- API Server → Admin Auth Routes: mounts (evidence: `server/server.js`)
- API Server → Seller Auth Routes: mounts (evidence: `server/server.js`)
- API Server → Item Routes: mounts (evidence: `server/server.js`)
- API Server → Sale Routes: mounts (evidence: `server/server.js`)
- Admin Auth Routes → Admin Records: reads and writes (evidence: `server/routes/adminRoutes.js`)
- Seller Auth Routes → Seller Records: reads and writes (evidence: `server/routes/sellerRoutes.js`)
- Item Routes → Item Records: reads and writes (evidence: `server/routes/itemRoutes.js`)
- Sale Routes → Active Sales: reads and writes (evidence: `server/routes/saleRoutes.js`)
- Sale Routes → Daily Reports: archives reports (evidence: `server/routes/saleRoutes.js`)
- Sale Routes → Item Records: checks and decrements stock (evidence: `server/routes/saleRoutes.js`)
- Item Routes → JWT Guard: guards writes (evidence: `server/routes/itemRoutes.js`)
- Sale Routes → JWT Guard: guards admin actions (evidence: `server/routes/saleRoutes.js`)
