# layvanntha-glitch/inventory-management architecture

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

- Interactive diagram: https://gitdiagram.com/layvanntha-glitch/inventory-management
- Repository: https://github.com/layvanntha-glitch/inventory-management

## Overview

This is a React/Laravel sales and inventory system. Staff authenticate, then use the frontend’s routed screens to manage stock, contacts, purchases, sales, refunds, shifts, and settings; the API persists business records and supplies dashboard and reporting results. The graph preserves the documented capabilities, but several page implementations and controllers were not sampled, so some frontend/API links rely on README documentation rather than inspected calls.

Main entry points: [`frontend/src/App.jsx`](https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/App.jsx) (App routing), [`backend/routes/api.php`](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/routes/api.php) (API routes), [`backend/app/Http/Controllers/ReportController.php`](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/ReportController.php) (Reports and dashboard), [`backend/app/Http/Controllers/PayWayController.php`](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/PayWayController.php) (PayWay checkout)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Frontend application"]
  node_app["App routing<br/>[App.jsx]"]
  node_auth["Authentication<br/>[AuthContext.jsx]"]
  node_sales_screen["Sales screens<br/>[Sales.jsx]"]
  node_pos_screen["POS screen<br/>[POS.jsx]"]
  node_purchases_screen["Purchases screen<br/>[Purchases.jsx]"]
  node_items_screen["Items screen<br/>[Items.jsx]"]
  node_contacts_screen["Contacts screen<br/>[Contacts.jsx]"]
  node_refunds_screen["Refunds screen<br/>[Refunds.jsx]"]
  node_shifts_screen["Shift screen<br/>[Shift.jsx]"]
  node_reports_screen["Reports screen<br/>[Reports.jsx]"]
  node_dashboard_screen["Dashboard screen<br/>[Dashboard.jsx]"]
  node_settings_screen["Settings screen<br/>[Settings.jsx]"]
  node_users_screen["User management<br/>[Users.jsx]"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_transactions["Inventory and transactions"]
  node_contact_controller["Contact controller"]
  node_item_controller["Item controller<br/>[ItemController.php]"]
  node_purchase_controller["Purchase controller"]
  node_sale_controller["Sale controller<br/>[SaleController.php]"]
  node_refund_controller["Refund controller"]
  node_payway_controller["PayWay checkout"]
  node_payway_service["PayWay gateway service<br/>[PayWayService.php]"]
  node_items_model["Item inventory model<br/>[Item.php]"]
  node_sale_model["Sale record<br/>[Sale.php]"]
  node_sale_lines["Sale line items<br/>[SaleItem.php]"]
  node_purchase_model["Purchase record<br/>[Purchase.php]"]
  node_purchase_lines["Purchase line items<br/>[PurchaseItem.php]"]
end

subgraph group_operations["Operations and insights"]
  node_report_controller["Reports and dashboard"]
  node_setting_controller["Settings controller"]
  node_shift_controller["Shift controller"]
  node_user_controller["User controller<br/>[UserController.php]"]
end

subgraph group_platform["API and persistence"]
  node_api_routes["API routes<br/>[api.php]"]
  node_auth_controller["Auth controller<br/>[AuthController.php]"]
  node_business_models["Business records"]
end

node_staff(("Staff user"))

node_staff -->|"uses"| node_app
node_app -->|"provides auth"| node_auth
node_app -->|"routes to"| node_sales_screen
node_app -->|"routes to"| node_pos_screen
node_app -->|"routes to"| node_purchases_screen
node_app -->|"routes to"| node_items_screen
node_app -->|"routes to"| node_contacts_screen
node_app -->|"routes to"| node_refunds_screen
node_app -->|"routes to"| node_shifts_screen
node_app -->|"routes to"| node_reports_screen
node_app -->|"routes to"| node_dashboard_screen
node_app -->|"routes to"| node_settings_screen
node_app -->|"routes to"| node_users_screen
node_pos_screen -->|"requests"| node_api_client
node_sales_screen -->|"requests"| node_api_client
node_api_client -->|"calls REST API"| node_api_routes
node_api_routes -->|"routes auth"| node_auth_controller
node_api_routes -->|"routes contacts"| node_contact_controller
node_api_routes -->|"routes items"| node_item_controller
node_api_routes -->|"routes purchases"| node_purchase_controller
node_api_routes -->|"routes sales"| node_sale_controller
node_api_routes -->|"routes refunds"| node_refund_controller
node_api_routes -->|"routes payments"| node_payway_controller
node_api_routes -->|"routes reports"| node_report_controller
node_api_routes -->|"routes settings"| node_setting_controller
node_api_routes -->|"routes shifts"| node_shift_controller
node_api_routes -->|"routes users"| node_user_controller
node_purchase_controller -->|"creates purchases"| node_purchase_model
node_purchase_controller -->|"creates lines"| node_purchase_lines
node_purchase_controller -->|"updates stock"| node_items_model
node_sale_controller -->|"creates sales"| node_sale_model
node_sale_controller -->|"creates lines"| node_sale_lines
node_sale_controller -->|"checks stock"| node_items_model
node_payway_controller -->|"checks payment"| node_payway_service
node_payway_controller -->|"finalizes sale"| node_sale_model
node_payway_controller -->|"creates lines"| node_sale_lines
node_payway_controller -->|"decrements stock"| node_items_model
node_report_controller -->|"queries sales"| node_sale_model
node_report_controller -->|"aggregates sales"| node_sale_lines
node_report_controller -->|"queries purchases"| node_purchase_model
node_report_controller -->|"aggregates purchases"| node_purchase_lines
node_report_controller -->|"values stock"| node_items_model
node_api_routes -.->|"serves records"| node_business_models

click node_app "https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/App.jsx"
click node_auth "https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/context/AuthContext.jsx"
click node_sales_screen "https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Sales.jsx"
click node_pos_screen "https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/POS.jsx"
click node_purchases_screen "https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Purchases.jsx"
click node_items_screen "https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Items.jsx"
click node_contacts_screen "https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Contacts.jsx"
click node_refunds_screen "https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Refunds.jsx"
click node_shifts_screen "https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Shift.jsx"
click node_reports_screen "https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Reports.jsx"
click node_dashboard_screen "https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Dashboard.jsx"
click node_settings_screen "https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Settings.jsx"
click node_users_screen "https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Users.jsx"
click node_api_client "https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/services/api.js"
click node_api_routes "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/routes/api.php"
click node_auth_controller "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/AuthController.php"
click node_contact_controller "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/ContactController.php"
click node_item_controller "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/ItemController.php"
click node_purchase_controller "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/PurchaseController.php"
click node_sale_controller "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/SaleController.php"
click node_refund_controller "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/RefundController.php"
click node_payway_controller "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/PayWayController.php"
click node_payway_service "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Services/PayWayService.php"
click node_report_controller "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/ReportController.php"
click node_setting_controller "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/SettingController.php"
click node_shift_controller "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/ShiftController.php"
click node_user_controller "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/UserController.php"
click node_business_models "https://github.com/layvanntha-glitch/inventory-management/tree/main/backend/app/Models"
click node_items_model "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Models/Item.php"
click node_sale_model "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Models/Sale.php"
click node_sale_lines "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Models/SaleItem.php"
click node_purchase_model "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Models/Purchase.php"
click node_purchase_lines "https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Models/PurchaseItem.php"

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_auth,node_sales_screen,node_pos_screen,node_purchases_screen,node_items_screen,node_contacts_screen,node_refunds_screen,node_shifts_screen,node_reports_screen,node_dashboard_screen,node_settings_screen,node_users_screen,node_api_client,node_staff toneBlue
class node_contact_controller,node_item_controller,node_purchase_controller,node_sale_controller,node_refund_controller,node_payway_controller,node_payway_service,node_items_model,node_sale_model,node_sale_lines,node_purchase_model,node_purchase_lines toneAmber
class node_report_controller,node_setting_controller,node_shift_controller,node_user_controller toneMint
class node_api_routes,node_auth_controller,node_business_models toneRose
```

## Components

### Frontend application

- [App routing](https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Authentication](https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [Sales screens](https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Sales.jsx): `frontend/src/pages/Sales.jsx`
- [POS screen](https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/POS.jsx): `frontend/src/pages/POS.jsx`
- [Purchases screen](https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Purchases.jsx): `frontend/src/pages/Purchases.jsx`
- [Items screen](https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Items.jsx): `frontend/src/pages/Items.jsx`
- [Contacts screen](https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Contacts.jsx): `frontend/src/pages/Contacts.jsx`
- [Refunds screen](https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Refunds.jsx): `frontend/src/pages/Refunds.jsx`
- [Shift screen](https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Shift.jsx): `frontend/src/pages/Shift.jsx`
- [Reports screen](https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Reports.jsx): `frontend/src/pages/Reports.jsx`
- [Dashboard screen](https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Dashboard.jsx): `frontend/src/pages/Dashboard.jsx`
- [Settings screen](https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Settings.jsx): `frontend/src/pages/Settings.jsx`
- [User management](https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/pages/Users.jsx): `frontend/src/pages/Users.jsx`
- [API client](https://github.com/layvanntha-glitch/inventory-management/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`

### Inventory and transactions

- [Contact controller](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/ContactController.php): `backend/app/Http/Controllers/ContactController.php`
- [Item controller](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/ItemController.php): `backend/app/Http/Controllers/ItemController.php`
- [Purchase controller](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/PurchaseController.php): `backend/app/Http/Controllers/PurchaseController.php`
- [Sale controller](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/SaleController.php): `backend/app/Http/Controllers/SaleController.php`
- [Refund controller](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/RefundController.php): `backend/app/Http/Controllers/RefundController.php`
- [PayWay checkout](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/PayWayController.php): `backend/app/Http/Controllers/PayWayController.php`
- [PayWay gateway service](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Services/PayWayService.php): `backend/app/Services/PayWayService.php`
- [Item inventory model](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Models/Item.php): `backend/app/Models/Item.php`
- [Sale record](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Models/Sale.php): `backend/app/Models/Sale.php`
- [Sale line items](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Models/SaleItem.php): `backend/app/Models/SaleItem.php`
- [Purchase record](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Models/Purchase.php): `backend/app/Models/Purchase.php`
- [Purchase line items](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Models/PurchaseItem.php): `backend/app/Models/PurchaseItem.php`

### Operations and insights

- [Reports and dashboard](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/ReportController.php): `backend/app/Http/Controllers/ReportController.php`
- [Settings controller](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/SettingController.php): `backend/app/Http/Controllers/SettingController.php`
- [Shift controller](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/ShiftController.php): `backend/app/Http/Controllers/ShiftController.php`
- [User controller](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/UserController.php): `backend/app/Http/Controllers/UserController.php`

### API and persistence

- [API routes](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/routes/api.php): `backend/routes/api.php`
- [Auth controller](https://github.com/layvanntha-glitch/inventory-management/blob/main/backend/app/Http/Controllers/AuthController.php): `backend/app/Http/Controllers/AuthController.php`
- [Business records](https://github.com/layvanntha-glitch/inventory-management/tree/main/backend/app/Models): `backend/app/Models`

### Other components

- **Staff user**

## Connections

- Staff user → App routing: uses (evidence: `frontend/src/App.jsx`)
- App routing → Authentication: provides auth (evidence: `frontend/src/App.jsx`)
- App routing → Sales screens: routes to (evidence: `frontend/src/App.jsx`)
- App routing → POS screen: routes to (evidence: `frontend/src/App.jsx`)
- App routing → Purchases screen: routes to (evidence: `frontend/src/App.jsx`)
- App routing → Items screen: routes to (evidence: `frontend/src/App.jsx`)
- App routing → Contacts screen: routes to (evidence: `frontend/src/App.jsx`)
- App routing → Refunds screen: routes to (evidence: `frontend/src/App.jsx`)
- App routing → Shift screen: routes to (evidence: `frontend/src/App.jsx`)
- App routing → Reports screen: routes to (evidence: `frontend/src/App.jsx`)
- App routing → Dashboard screen: routes to (evidence: `frontend/src/App.jsx`)
- App routing → Settings screen: routes to (evidence: `frontend/src/App.jsx`)
- App routing → User management: routes to (evidence: `frontend/src/App.jsx`)
- POS screen → API client: requests (evidence: `frontend/src/pages/POS.jsx`)
- Sales screens → API client: requests (evidence: `frontend/src/pages/Sales.jsx`)
- API client → API routes: calls REST API (evidence: `README.md`)
- API routes → Auth controller: routes auth (evidence: `backend/routes/api.php`)
- API routes → Contact controller: routes contacts (evidence: `backend/routes/api.php`)
- API routes → Item controller: routes items (evidence: `backend/routes/api.php`)
- API routes → Purchase controller: routes purchases (evidence: `backend/routes/api.php`)
- API routes → Sale controller: routes sales (evidence: `backend/routes/api.php`)
- API routes → Refund controller: routes refunds (evidence: `backend/routes/api.php`)
- API routes → PayWay checkout: routes payments (evidence: `backend/routes/api.php`)
- API routes → Reports and dashboard: routes reports (evidence: `backend/routes/api.php`)
- API routes → Settings controller: routes settings (evidence: `backend/routes/api.php`)
- API routes → Shift controller: routes shifts (evidence: `backend/routes/api.php`)
- API routes → User controller: routes users (evidence: `backend/routes/api.php`)
- Purchase controller → Purchase record: creates purchases (evidence: `backend/app/Http/Controllers/PurchaseController.php`)
- Purchase controller → Purchase line items: creates lines (evidence: `backend/app/Http/Controllers/PurchaseController.php`)
- Purchase controller → Item inventory model: updates stock (evidence: `backend/app/Http/Controllers/PurchaseController.php`)
- Sale controller → Sale record: creates sales (evidence: `backend/app/Http/Controllers/SaleController.php`)
- Sale controller → Sale line items: creates lines (evidence: `backend/app/Http/Controllers/SaleController.php`)
- Sale controller → Item inventory model: checks stock (evidence: `backend/app/Http/Controllers/SaleController.php`)
- PayWay checkout → PayWay gateway service: checks payment (evidence: `backend/app/Http/Controllers/PayWayController.php`)
- PayWay checkout → Sale record: finalizes sale (evidence: `backend/app/Http/Controllers/PayWayController.php`)
- PayWay checkout → Sale line items: creates lines (evidence: `backend/app/Http/Controllers/PayWayController.php`)
- PayWay checkout → Item inventory model: decrements stock (evidence: `backend/app/Http/Controllers/PayWayController.php`)
- Reports and dashboard → Sale record: queries sales (evidence: `backend/app/Http/Controllers/ReportController.php`)
- Reports and dashboard → Sale line items: aggregates sales (evidence: `backend/app/Http/Controllers/ReportController.php`)
- Reports and dashboard → Purchase record: queries purchases (evidence: `backend/app/Http/Controllers/ReportController.php`)
- Reports and dashboard → Purchase line items: aggregates purchases (evidence: `backend/app/Http/Controllers/ReportController.php`)
- Reports and dashboard → Item inventory model: values stock (evidence: `backend/app/Http/Controllers/ReportController.php`)
- API routes → Business records: serves records
