# dmitzdev/inventech-engineeringmanagementsystem architecture

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

- Interactive diagram: https://gitdiagram.com/dmitzdev/inventech-engineeringmanagementsystem
- Repository: https://github.com/dmitzdev/inventech-engineeringmanagementsystem

## Overview

This is a laboratory-equipment kiosk for student borrowing, advance reservations, and returns, with a separate administration area for inventory, reservations, transactions, reporting, and dashboard views. The main kiosk flow collects borrower details, selects a lab and equipment, then commits a transaction; the shared transaction context coordinates state and inventory updates. Return and clearance handling are additional paths. Kairo provides inventory-aware AI assistance, and the app generates a printable borrower sheet. The README is empty, so feature coverage comes from the source index and sampled references; unsampled details are not assumed.

Main entry points: [`src/context/TransactionContext.jsx`](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/context/TransactionContext.jsx) (Transaction state), [`src/App.jsx`](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/App.jsx) (Kiosk router), [`src/components/admin/AdminPanel.jsx`](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/admin/AdminPanel.jsx) (Admin panel), [`src/components/steps/EquipmentCatalog.jsx`](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/EquipmentCatalog.jsx) (Equipment catalog)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_kiosk["Kiosk workflow"]
  node_app["Kiosk router<br/>[App.jsx]"]
  node_borrower["Borrower details<br/>[BorrowerForm.jsx]"]
  node_lab["Lab selection<br/>[LabSelector.jsx]"]
  node_catalog["Equipment catalog"]
  node_cart["Borrow cart<br/>[BorrowCart.jsx]"]
  node_reservation["Advance booking"]
  node_commit["Transaction commit"]
end

subgraph group_returns["Returns and records"]
  node_returns["Return handling"]
  node_clearance["Return clearance"]
  node_secure["Secure return station"]
  node_sheet["Borrower sheet<br/>[BorrowerSheet.jsx]"]
end

subgraph group_admin["Administration"]
  node_admin["Admin panel<br/>[AdminPanel.jsx]"]
  node_inventory["Inventory manager"]
  node_reservations["Reservation manager"]
  node_dashboard["Dashboard"]
  node_audit["Audit reports<br/>[AuditReports.jsx]"]
  node_history["Transaction history"]
end

subgraph group_support["Shared services"]
  node_txstate["Transaction state"]
  node_equipment["Equipment data<br/>[equipmentData.js]"]
  node_assistant["Kairo assistant"]
  node_ai["Kairo AI service<br/>[kairoAiService.js]"]
end

node_student(("Student"))
node_gemini{{"Gemini API"}}

node_student -->|"starts session"| node_app
node_app -->|"routes step"| node_borrower
node_app -->|"routes step"| node_lab
node_app -->|"routes step"| node_catalog
node_app -->|"routes step"| node_commit
node_app -->|"routes admin"| node_admin
node_borrower -->|"updates state"| node_txstate
node_lab -->|"reads state"| node_txstate
node_catalog -->|"updates state"| node_txstate
node_catalog -->|"opens cart"| node_cart
node_catalog -->|"opens booking"| node_reservation
node_cart -->|"updates state"| node_txstate
node_reservation -->|"updates state"| node_txstate
node_commit -->|"commits transaction"| node_txstate
node_txstate -->|"updates inventory"| node_equipment
node_txstate -->|"provides transaction data"| node_sheet
node_app -->|"renders sheet"| node_sheet
node_returns -->|"updates return"| node_txstate
node_clearance -->|"updates clearance"| node_txstate
node_secure -->|"reads state"| node_txstate
node_admin -->|"renders section"| node_inventory
node_admin -->|"renders section"| node_reservations
node_admin -->|"renders section"| node_dashboard
node_admin -->|"renders section"| node_audit
node_admin -->|"renders section"| node_history
node_inventory -->|"reads state"| node_txstate
node_inventory -->|"uses equipment data"| node_equipment
node_reservations -->|"reads state"| node_txstate
node_reservations -->|"uses print sheet"| node_sheet
node_dashboard -->|"reads state"| node_txstate
node_dashboard -->|"reads equipment"| node_equipment
node_assistant -->|"asks assistant"| node_ai
node_ai -->|"reads inventory"| node_equipment
node_ai -->|"requests generation"| node_gemini
node_assistant -->|"uses session state"| node_txstate

click node_app "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/App.jsx"
click node_borrower "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/BorrowerForm.jsx"
click node_lab "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/LabSelector.jsx"
click node_catalog "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/EquipmentCatalog.jsx"
click node_cart "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/BorrowCart.jsx"
click node_reservation "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/ReservationModal.jsx"
click node_commit "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/TransactionCommit.jsx"
click node_txstate "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/context/TransactionContext.jsx"
click node_equipment "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/data/equipmentData.js"
click node_returns "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/ReturnEquipmentModal.jsx"
click node_clearance "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/ReturnClearanceModal.jsx"
click node_secure "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/SecureReturnStation.jsx"
click node_sheet "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/print/BorrowerSheet.jsx"
click node_admin "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/admin/AdminPanel.jsx"
click node_inventory "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/admin/InventoryManager.jsx"
click node_reservations "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/admin/ReservationManager.jsx"
click node_dashboard "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/admin/DashboardOverview.jsx"
click node_audit "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/admin/AuditReports.jsx"
click node_history "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/admin/TransactionHistory.jsx"
click node_assistant "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/ui/FloatingKairoBot.jsx"
click node_ai "https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/services/kairoAiService.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_borrower,node_lab,node_catalog,node_cart,node_reservation,node_commit toneBlue
class node_returns,node_clearance,node_secure,node_sheet toneAmber
class node_admin,node_inventory,node_reservations,node_dashboard,node_audit,node_history,node_gemini toneMint
class node_txstate,node_equipment,node_assistant,node_ai toneRose
class node_student toneIndigo
```

## Components

### Kiosk workflow

- [Kiosk router](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/App.jsx): `src/App.jsx`
- [Borrower details](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/BorrowerForm.jsx): `src/components/steps/BorrowerForm.jsx`
- [Lab selection](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/LabSelector.jsx): `src/components/steps/LabSelector.jsx`
- [Equipment catalog](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/EquipmentCatalog.jsx): `src/components/steps/EquipmentCatalog.jsx`
- [Borrow cart](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/BorrowCart.jsx): `src/components/steps/BorrowCart.jsx`
- [Advance booking](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/ReservationModal.jsx): `src/components/steps/ReservationModal.jsx`
- [Transaction commit](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/TransactionCommit.jsx): `src/components/steps/TransactionCommit.jsx`

### Returns and records

- [Return handling](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/ReturnEquipmentModal.jsx): `src/components/steps/ReturnEquipmentModal.jsx`
- [Return clearance](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/ReturnClearanceModal.jsx): `src/components/steps/ReturnClearanceModal.jsx`
- [Secure return station](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/steps/SecureReturnStation.jsx): `src/components/steps/SecureReturnStation.jsx`
- [Borrower sheet](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/print/BorrowerSheet.jsx): `src/components/print/BorrowerSheet.jsx`

### Administration

- [Admin panel](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/admin/AdminPanel.jsx): `src/components/admin/AdminPanel.jsx`
- [Inventory manager](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/admin/InventoryManager.jsx): `src/components/admin/InventoryManager.jsx`
- [Reservation manager](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/admin/ReservationManager.jsx): `src/components/admin/ReservationManager.jsx`
- [Dashboard](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/admin/DashboardOverview.jsx): `src/components/admin/DashboardOverview.jsx`
- [Audit reports](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/admin/AuditReports.jsx): `src/components/admin/AuditReports.jsx`
- [Transaction history](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/admin/TransactionHistory.jsx): `src/components/admin/TransactionHistory.jsx`

### Shared services

- [Transaction state](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/context/TransactionContext.jsx): `src/context/TransactionContext.jsx`
- [Equipment data](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/data/equipmentData.js): `src/data/equipmentData.js`
- [Kairo assistant](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/components/ui/FloatingKairoBot.jsx): `src/components/ui/FloatingKairoBot.jsx`
- [Kairo AI service](https://github.com/dmitzdev/inventech-engineeringmanagementsystem/blob/main/src/services/kairoAiService.js): `src/services/kairoAiService.js`

### Other components

- **Student**
- **Gemini API**

## Connections

- Student → Kiosk router: starts session (evidence: `src/App.jsx`)
- Kiosk router → Borrower details: routes step (evidence: `src/App.jsx`)
- Kiosk router → Lab selection: routes step (evidence: `src/App.jsx`)
- Kiosk router → Equipment catalog: routes step (evidence: `src/App.jsx`)
- Kiosk router → Transaction commit: routes step (evidence: `src/App.jsx`)
- Kiosk router → Admin panel: routes admin (evidence: `src/App.jsx`)
- Borrower details → Transaction state: updates state (evidence: `src/components/steps/BorrowerForm.jsx`)
- Lab selection → Transaction state: reads state (evidence: `src/components/steps/LabSelector.jsx`)
- Equipment catalog → Transaction state: updates state (evidence: `src/components/steps/EquipmentCatalog.jsx`)
- Equipment catalog → Borrow cart: opens cart (evidence: `src/components/steps/EquipmentCatalog.jsx`)
- Equipment catalog → Advance booking: opens booking (evidence: `src/components/steps/EquipmentCatalog.jsx`)
- Borrow cart → Transaction state: updates state (evidence: `src/components/steps/BorrowCart.jsx`)
- Advance booking → Transaction state: updates state (evidence: `src/components/steps/ReservationModal.jsx`)
- Transaction commit → Transaction state: commits transaction (evidence: `src/components/steps/TransactionCommit.jsx`)
- Transaction state → Equipment data: updates inventory (evidence: `src/context/TransactionContext.jsx`)
- Transaction state → Borrower sheet: provides transaction data (evidence: `src/components/print/BorrowerSheet.jsx`)
- Kiosk router → Borrower sheet: renders sheet (evidence: `src/App.jsx`)
- Return handling → Transaction state: updates return (evidence: `src/components/steps/ReturnEquipmentModal.jsx`)
- Return clearance → Transaction state: updates clearance (evidence: `src/components/steps/ReturnClearanceModal.jsx`)
- Secure return station → Transaction state: reads state (evidence: `src/components/steps/SecureReturnStation.jsx`)
- Admin panel → Inventory manager: renders section (evidence: `src/components/admin/AdminPanel.jsx`)
- Admin panel → Reservation manager: renders section (evidence: `src/components/admin/AdminPanel.jsx`)
- Admin panel → Dashboard: renders section (evidence: `src/components/admin/AdminPanel.jsx`)
- Admin panel → Audit reports: renders section (evidence: `src/components/admin/AdminPanel.jsx`)
- Admin panel → Transaction history: renders section (evidence: `src/components/admin/AdminPanel.jsx`)
- Inventory manager → Transaction state: reads state (evidence: `src/components/admin/InventoryManager.jsx`)
- Inventory manager → Equipment data: uses equipment data (evidence: `src/components/admin/InventoryManager.jsx`)
- Reservation manager → Transaction state: reads state (evidence: `src/components/admin/ReservationManager.jsx`)
- Reservation manager → Borrower sheet: uses print sheet (evidence: `src/components/admin/ReservationManager.jsx`)
- Dashboard → Transaction state: reads state (evidence: `src/components/admin/DashboardOverview.jsx`)
- Dashboard → Equipment data: reads equipment (evidence: `src/components/admin/DashboardOverview.jsx`)
- Kairo assistant → Kairo AI service: asks assistant (evidence: `src/components/ui/FloatingKairoBot.jsx`)
- Kairo AI service → Equipment data: reads inventory (evidence: `src/services/kairoAiService.js`)
- Kairo AI service → Gemini API: requests generation (evidence: `src/services/kairoAiService.js`)
- Kairo assistant → Transaction state: uses session state (evidence: `src/components/ui/FloatingKairoBot.jsx`)
