# siam-ar/logistics_erp_prototype architecture

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

- Interactive diagram: https://gitdiagram.com/siam-ar/logistics_erp_prototype
- Repository: https://github.com/siam-ar/logistics_erp_prototype

## Overview

This is a demo Logistics ERP with a read-only dashboard and finance, fleet, and inventory management. Users view module pages backed by MongoDB, submit create/update/delete changes through API routes, and see refreshed data; the dashboard aggregates the same collections into overview metrics. The graph covers the principal pages, domain interfaces, API and persistence layers. Several relationships are documented in the README or SOURCE INDEX; unsampled route details are represented only at the documented module level.

Main entry points: [`src/lib/db.ts`](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/lib/db.ts) (MongoDB access), [`src/lib/dashboard.ts`](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/lib/dashboard.ts) (Metrics aggregation), [`src/lib/validate.ts`](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/lib/validate.ts) (Input validation), [`src/app/finance/page.tsx`](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/finance/page.tsx) (Finance page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application shell"]
end

subgraph group_finance["Finance"]
  node_finance_page["Finance page<br/>[page.tsx]"]
  node_finance_ui["Finance ledger UI<br/>[FinanceLedger.tsx]"]
  node_finance_editor["Entry editor<br/>[AddEntryDrawer.tsx]"]
  node_finance_api["Finance API<br/>[route.ts]"]
  node_finance_id_api["Finance item API<br/>[route.ts]"]
end

subgraph group_operations["Fleet and inventory"]
  node_fleet_page["Fleet page<br/>[page.tsx]"]
  node_fleet_ui["Fleet management UI<br/>[FleetView.tsx]"]
  node_fleet_api["Fleet API<br/>[route.ts]"]
  node_fleet_id_api["Fleet item API<br/>[route.ts]"]
  node_inventory_page["Inventory page<br/>[page.tsx]"]
  node_inventory_ui["Inventory management UI"]
  node_inventory_api["Inventory API<br/>[route.ts]"]
  node_inventory_id_api["Inventory item API<br/>[route.ts]"]
end

subgraph group_data["Dashboard and data"]
  node_dashboard_page["Dashboard page<br/>[page.tsx]"]
  node_metrics["Metrics aggregation<br/>[dashboard.ts]"]
  node_dashboard_ui["Dashboard panels"]
  node_validator["Input validation<br/>[validate.ts]"]
  node_db_access["MongoDB access<br/>[db.ts]"]
  node_seed["Sample data seeding<br/>[seed.ts]"]
end

node_user(("Operator"))
node_mongo[("MongoDB")]

node_user -->|"opens"| node_finance_page
node_user -->|"opens"| node_fleet_page
node_user -->|"opens"| node_inventory_page
node_user -->|"opens"| node_dashboard_page
node_finance_page -->|"renders"| node_finance_ui
node_fleet_page -->|"renders"| node_fleet_ui
node_inventory_page -->|"renders"| node_inventory_ui
node_finance_ui -->|"uses"| node_finance_editor
node_finance_editor -->|"submits entries"| node_finance_api
node_finance_ui -->|"submits changes"| node_finance_id_api
node_fleet_ui -->|"submits changes"| node_fleet_api
node_fleet_ui -->|"submits changes"| node_fleet_id_api
node_inventory_ui -->|"submits changes"| node_inventory_api
node_inventory_ui -->|"submits changes"| node_inventory_id_api
node_finance_page -->|"reads"| node_mongo
node_fleet_page -->|"reads"| node_mongo
node_inventory_page -->|"reads"| node_mongo
node_finance_api -->|"gets database"| node_db_access
node_finance_id_api -->|"gets database"| node_db_access
node_fleet_api -->|"validates input"| node_validator
node_fleet_id_api -->|"validates input"| node_validator
node_inventory_api -->|"validates input"| node_validator
node_inventory_id_api -->|"validates input"| node_validator
node_fleet_api -->|"gets database"| node_db_access
node_inventory_api -->|"gets database"| node_db_access
node_finance_id_api -->|"writes"| node_mongo
node_fleet_id_api -->|"writes"| node_mongo
node_inventory_id_api -->|"writes"| node_mongo
node_db_access -->|"connects"| node_mongo
node_dashboard_page -->|"requests metrics"| node_metrics
node_metrics -->|"queries collections"| node_db_access
node_metrics -->|"seeds if empty"| node_seed
node_metrics -->|"aggregates data"| node_mongo
node_dashboard_page -->|"renders"| node_dashboard_ui
node_dashboard_ui -->|"displays overview"| node_mongo

click node_finance_page "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/finance/page.tsx"
click node_finance_ui "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/components/finance/FinanceLedger.tsx"
click node_finance_editor "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/components/finance/AddEntryDrawer.tsx"
click node_finance_api "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/api/finance/route.ts"
click node_finance_id_api "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/api/finance/%5Bid%5D/route.ts"
click node_fleet_page "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/fleet/page.tsx"
click node_fleet_ui "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/components/fleet/FleetView.tsx"
click node_fleet_api "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/api/fleet/route.ts"
click node_fleet_id_api "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/api/fleet/%5Bid%5D/route.ts"
click node_inventory_page "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/inventory/page.tsx"
click node_inventory_ui "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/components/inventory/InventoryClient.tsx"
click node_inventory_api "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/api/inventory/route.ts"
click node_inventory_id_api "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/api/inventory/%5Bid%5D/route.ts"
click node_dashboard_page "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/page.tsx"
click node_metrics "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/lib/dashboard.ts"
click node_dashboard_ui "https://github.com/siam-ar/logistics_erp_prototype/tree/main/src/components/dashboard"
click node_validator "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/lib/validate.ts"
click node_db_access "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/lib/db.ts"
click node_seed "https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/lib/seed.ts"

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_finance_page,node_finance_ui,node_finance_editor,node_finance_api,node_finance_id_api,node_mongo toneAmber
class node_fleet_page,node_fleet_ui,node_fleet_api,node_fleet_id_api,node_inventory_page,node_inventory_ui,node_inventory_api,node_inventory_id_api toneMint
class node_dashboard_page,node_metrics,node_dashboard_ui,node_validator,node_db_access,node_seed toneRose
class node_user toneIndigo
```

## Components

### Finance

- [Finance page](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/finance/page.tsx): `src/app/finance/page.tsx`
- [Finance ledger UI](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/components/finance/FinanceLedger.tsx): `src/components/finance/FinanceLedger.tsx`
- [Entry editor](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/components/finance/AddEntryDrawer.tsx): `src/components/finance/AddEntryDrawer.tsx`
- [Finance API](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/api/finance/route.ts): `src/app/api/finance/route.ts`
- [Finance item API](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/api/finance/%5Bid%5D/route.ts): `src/app/api/finance/[id]/route.ts`

### Fleet and inventory

- [Fleet page](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/fleet/page.tsx): `src/app/fleet/page.tsx`
- [Fleet management UI](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/components/fleet/FleetView.tsx): `src/components/fleet/FleetView.tsx`
- [Fleet API](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/api/fleet/route.ts): `src/app/api/fleet/route.ts`
- [Fleet item API](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/api/fleet/%5Bid%5D/route.ts): `src/app/api/fleet/[id]/route.ts`
- [Inventory page](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/inventory/page.tsx): `src/app/inventory/page.tsx`
- [Inventory management UI](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/components/inventory/InventoryClient.tsx): `src/components/inventory/InventoryClient.tsx`
- [Inventory API](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/api/inventory/route.ts): `src/app/api/inventory/route.ts`
- [Inventory item API](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/api/inventory/%5Bid%5D/route.ts): `src/app/api/inventory/[id]/route.ts`

### Dashboard and data

- [Dashboard page](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/app/page.tsx): `src/app/page.tsx`
- [Metrics aggregation](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/lib/dashboard.ts): `src/lib/dashboard.ts`
- [Dashboard panels](https://github.com/siam-ar/logistics_erp_prototype/tree/main/src/components/dashboard): `src/components/dashboard`
- [Input validation](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/lib/validate.ts): `src/lib/validate.ts`
- [MongoDB access](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/lib/db.ts): `src/lib/db.ts`
- [Sample data seeding](https://github.com/siam-ar/logistics_erp_prototype/blob/main/src/lib/seed.ts): `src/lib/seed.ts`

### Other components

- **Operator**
- **MongoDB**

## Connections

- Operator → Finance page: opens
- Operator → Fleet page: opens
- Operator → Inventory page: opens
- Operator → Dashboard page: opens
- Finance page → Finance ledger UI: renders (evidence: `src/app/finance/page.tsx`)
- Fleet page → Fleet management UI: renders (evidence: `src/app/fleet/page.tsx`)
- Inventory page → Inventory management UI: renders (evidence: `src/app/inventory/page.tsx`)
- Finance ledger UI → Entry editor: uses (evidence: `src/components/finance/FinanceLedger.tsx`)
- Entry editor → Finance API: submits entries
- Finance ledger UI → Finance item API: submits changes
- Fleet management UI → Fleet API: submits changes
- Fleet management UI → Fleet item API: submits changes
- Inventory management UI → Inventory API: submits changes (evidence: `src/components/inventory/InventoryClient.tsx`)
- Inventory management UI → Inventory item API: submits changes (evidence: `src/components/inventory/InventoryClient.tsx`)
- Finance page → MongoDB: reads
- Fleet page → MongoDB: reads
- Inventory page → MongoDB: reads
- Finance API → MongoDB access: gets database (evidence: `src/app/api/finance/route.ts`)
- Finance item API → MongoDB access: gets database (evidence: `src/app/api/finance/[id]/route.ts`)
- Fleet API → Input validation: validates input (evidence: `src/app/api/fleet/route.ts`)
- Fleet item API → Input validation: validates input (evidence: `src/app/api/fleet/[id]/route.ts`)
- Inventory API → Input validation: validates input (evidence: `src/app/api/inventory/route.ts`)
- Inventory item API → Input validation: validates input (evidence: `src/app/api/inventory/[id]/route.ts`)
- Fleet API → MongoDB access: gets database (evidence: `src/app/api/fleet/route.ts`)
- Inventory API → MongoDB access: gets database (evidence: `src/app/api/inventory/route.ts`)
- Finance item API → MongoDB: writes
- Fleet item API → MongoDB: writes
- Inventory item API → MongoDB: writes
- MongoDB access → MongoDB: connects (evidence: `src/lib/db.ts`)
- Dashboard page → Metrics aggregation: requests metrics (evidence: `src/app/page.tsx`)
- Metrics aggregation → MongoDB access: queries collections (evidence: `src/lib/dashboard.ts`)
- Metrics aggregation → Sample data seeding: seeds if empty (evidence: `src/lib/dashboard.ts`)
- Metrics aggregation → MongoDB: aggregates data (evidence: `src/lib/dashboard.ts`)
- Dashboard page → Dashboard panels: renders (evidence: `src/app/page.tsx`)
- Dashboard panels → MongoDB: displays overview
