# jilbertvasquez/inventory-system architecture

> Architecture diagram of the GitHub repository jilbertvasquez/inventory-system, 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/jilbertvasquez/inventory-system
- Repository: https://github.com/jilbertvasquez/inventory-system

## Overview

InventorySystem is a Java Swing desktop inventory-management application backed by MySQL. Users sign in or register, then navigate operational screens to maintain inventory, suppliers and stores, receive incoming orders, prepare shipments, and manage users. The README also describes inventory search/filtering and export; those capabilities are included at the inventory-screen level, but their implementation was not sampled. Several screens issue SQL directly, while UserService handles account operations. The graph reflects documented features and sampled navigation/SQL behavior; unsampled subsystem wiring is intentionally left unspecified.

Main entry points: [`src/inventorysystem/MainMenu.java`](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/MainMenu.java) (Main menu), [`src/inventorysystem/Inventory.java`](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/Inventory.java) (Inventory), [`src/inventorysystem/IncomingOrders.java`](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/IncomingOrders.java) (Incoming orders), [`src/inventorysystem/UserService.java`](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/UserService.java) (User service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and navigation"]
  node_login["Sign in<br/>[Login.java]"]
  node_signup["Registration<br/>[SignUp.java]"]
  node_menu["Main menu<br/>[MainMenu.java]"]
  node_user_service["User service<br/>[UserService.java]"]
end

subgraph group_catalog["Catalog management"]
  node_inventory["Inventory<br/>[Inventory.java]"]
  node_edit_inventory["Edit inventory<br/>[EditInventory.java]"]
  node_stores["Stores<br/>[Stores.java]"]
  node_store_edit["Store details"]
  node_suppliers["Suppliers<br/>[Suppliers.java]"]
  node_supplier_edit["Supplier details"]
  node_supplier_products["Supplier products"]
  node_supplier_product_edit["Product details"]
end

subgraph group_operations["Stock operations"]
  node_incoming["Incoming orders"]
  node_add_incoming["Receive stock"]
  node_incoming_edit["Edit receipt"]
  node_prepare["Prepare shipment<br/>[PrepareOrder.java]"]
  node_shipping["Shipping orders"]
  node_shipping_edit["Edit shipment"]
end

subgraph group_admin["Administration"]
  node_users["Users<br/>[Users.java]"]
  node_user_edit["Edit user<br/>[EditUser.java]"]
end

node_user(("User"))
node_database[("MySQL database")]

node_user -->|"signs in"| node_login
node_user -->|"registers"| node_signup
node_login -->|"authenticates"| node_user_service
node_signup -->|"registers"| node_user_service
node_user_service -->|"reads/writes accounts"| node_database
node_login -->|"opens after login"| node_menu
node_menu -->|"opens"| node_inventory
node_menu -->|"opens"| node_stores
node_menu -->|"opens"| node_suppliers
node_menu -->|"opens"| node_incoming
node_menu -->|"opens"| node_shipping
node_menu -->|"opens"| node_users
node_inventory -->|"queries/updates"| node_database
node_inventory -->|"opens edit"| node_edit_inventory
node_inventory -->|"opens preparation"| node_prepare
node_stores -->|"queries/updates"| node_database
node_stores -->|"opens edit"| node_store_edit
node_suppliers -->|"queries/updates"| node_database
node_suppliers -->|"opens edit"| node_supplier_edit
node_supplier_products -->|"queries/updates"| node_database
node_supplier_products -->|"opens edit"| node_supplier_product_edit
node_incoming -->|"queries/updates"| node_database
node_incoming -->|"opens edit"| node_incoming_edit
node_incoming -->|"opens receipt"| node_add_incoming
node_add_incoming -->|"reads/writes receipt"| node_database
node_prepare -->|"reads/writes shipment"| node_database
node_prepare -->|"reads current user"| node_user_service
node_shipping -->|"queries/updates"| node_database
node_shipping -->|"opens edit"| node_shipping_edit
node_shipping_edit -->|"updates stock"| node_database
node_users -->|"queries/updates"| node_database
node_users -->|"opens edit"| node_user_edit

click node_login "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/Login.java"
click node_signup "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/SignUp.java"
click node_menu "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/MainMenu.java"
click node_user_service "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/UserService.java"
click node_inventory "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/Inventory.java"
click node_edit_inventory "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/EditInventory.java"
click node_stores "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/Stores.java"
click node_store_edit "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/EditStoreDetails.java"
click node_suppliers "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/Suppliers.java"
click node_supplier_edit "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/EditSupplierDetails.java"
click node_supplier_products "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/SupplierProducts.java"
click node_supplier_product_edit "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/EditSupplierProductDetails.java"
click node_incoming "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/IncomingOrders.java"
click node_add_incoming "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/AddIncomingOrder.java"
click node_incoming_edit "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/EditIncomingOrder.java"
click node_prepare "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/PrepareOrder.java"
click node_shipping "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/ShippingOrders.java"
click node_shipping_edit "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/EditShippingOrder.java"
click node_users "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/Users.java"
click node_user_edit "https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/EditUser.java"

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_login,node_signup,node_menu,node_user_service,node_user toneBlue
class node_inventory,node_edit_inventory,node_stores,node_store_edit,node_suppliers,node_supplier_edit,node_supplier_products,node_supplier_product_edit,node_database toneAmber
class node_incoming,node_add_incoming,node_incoming_edit,node_prepare,node_shipping,node_shipping_edit toneMint
class node_users,node_user_edit toneRose
```

## Components

### Access and navigation

- [Sign in](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/Login.java): `src/inventorysystem/Login.java`
- [Registration](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/SignUp.java): `src/inventorysystem/SignUp.java`
- [Main menu](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/MainMenu.java): `src/inventorysystem/MainMenu.java`
- [User service](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/UserService.java): `src/inventorysystem/UserService.java`

### Catalog management

- [Inventory](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/Inventory.java): `src/inventorysystem/Inventory.java`
- [Edit inventory](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/EditInventory.java): `src/inventorysystem/EditInventory.java`
- [Stores](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/Stores.java): `src/inventorysystem/Stores.java`
- [Store details](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/EditStoreDetails.java): `src/inventorysystem/EditStoreDetails.java`
- [Suppliers](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/Suppliers.java): `src/inventorysystem/Suppliers.java`
- [Supplier details](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/EditSupplierDetails.java): `src/inventorysystem/EditSupplierDetails.java`
- [Supplier products](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/SupplierProducts.java): `src/inventorysystem/SupplierProducts.java`
- [Product details](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/EditSupplierProductDetails.java): `src/inventorysystem/EditSupplierProductDetails.java`

### Stock operations

- [Incoming orders](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/IncomingOrders.java): `src/inventorysystem/IncomingOrders.java`
- [Receive stock](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/AddIncomingOrder.java): `src/inventorysystem/AddIncomingOrder.java`
- [Edit receipt](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/EditIncomingOrder.java): `src/inventorysystem/EditIncomingOrder.java`
- [Prepare shipment](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/PrepareOrder.java): `src/inventorysystem/PrepareOrder.java`
- [Shipping orders](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/ShippingOrders.java): `src/inventorysystem/ShippingOrders.java`
- [Edit shipment](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/EditShippingOrder.java): `src/inventorysystem/EditShippingOrder.java`

### Administration

- [Users](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/Users.java): `src/inventorysystem/Users.java`
- [Edit user](https://github.com/jilbertvasquez/inventory-system/blob/master/src/inventorysystem/EditUser.java): `src/inventorysystem/EditUser.java`

### Other components

- **User**
- **MySQL database**

## Connections

- User → Sign in: signs in
- User → Registration: registers
- Sign in → User service: authenticates
- Registration → User service: registers
- User service → MySQL database: reads/writes accounts
- Sign in → Main menu: opens after login
- Main menu → Inventory: opens
- Main menu → Stores: opens
- Main menu → Suppliers: opens
- Main menu → Incoming orders: opens
- Main menu → Shipping orders: opens
- Main menu → Users: opens
- Inventory → MySQL database: queries/updates
- Inventory → Edit inventory: opens edit
- Inventory → Prepare shipment: opens preparation
- Stores → MySQL database: queries/updates
- Stores → Store details: opens edit
- Suppliers → MySQL database: queries/updates
- Suppliers → Supplier details: opens edit
- Supplier products → MySQL database: queries/updates
- Supplier products → Product details: opens edit
- Incoming orders → MySQL database: queries/updates
- Incoming orders → Edit receipt: opens edit
- Incoming orders → Receive stock: opens receipt
- Receive stock → MySQL database: reads/writes receipt
- Prepare shipment → MySQL database: reads/writes shipment
- Prepare shipment → User service: reads current user
- Shipping orders → MySQL database: queries/updates
- Shipping orders → Edit shipment: opens edit
- Edit shipment → MySQL database: updates stock
- Users → MySQL database: queries/updates
- Users → Edit user: opens edit
