# nimbalkar3735/inventory-management-system architecture

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

- Interactive diagram: https://gitdiagram.com/nimbalkar3735/inventory-management-system
- Repository: https://github.com/nimbalkar3735/inventory-management-system

## Overview

This is a full-stack inventory management application. Users register or sign in, then manage categories and products, search and filter inventory, adjust quantities, and monitor low-stock items; the protected dashboard summarizes inventory. The graph reflects the documented React routes and REST capabilities, plus sampled controller/service/repository calls. Page-level frontend requests and dashboard metric calculations were not sampled, so those details are represented only at the API-client boundary. MySQL persistence and JWT security are documented capabilities.

Main entry points: [`Inventory-Management-System/frontend/src/App.jsx`](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/App.jsx) (Route application), [`Inventory-Management-System/frontend/src/services/api.js`](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/services/api.js) (API client), [`Inventory-Management-System/backend/src/main/java/com/yugant/backend/controller/AuthController.java`](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/controller/AuthController.java) (Auth API), [`Inventory-Management-System/backend/src/main/java/com/yugant/backend/service/ProductService.java`](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/service/ProductService.java) (Product service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web application"]
  node_app["Route application<br/>[App.jsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.jsx]"]
  node_apiclient["API client<br/>[api.js]"]
end

subgraph group_identity["Identity and access"]
  node_authctx["Auth state<br/>[AuthContext.jsx]"]
  node_login["Login and register<br/>[Login.jsx]"]
  node_protected["Route guard<br/>[ProtectedRoute.jsx]"]
  node_authcontroller["Auth API"]
  node_userservice["User service<br/>[UserService.java]"]
  node_jwt["JWT service<br/>[JwtService.java]"]
  node_security["Security configuration"]
  node_jwtfilter["JWT filter"]
end

subgraph group_inventory["Inventory operations"]
  node_products["Product management<br/>[Products.jsx]"]
  node_productform["Product editor<br/>[ProductForm.jsx]"]
  node_categories["Category management<br/>[Categories.jsx]"]
  node_lowstock["Low-stock view<br/>[LowStock.jsx]"]
  node_productcontroller["Product API"]
  node_productservice["Product service"]
  node_categorycontroller["Category API"]
  node_categoryservice["Category service"]
end

subgraph group_persistence["Persistence"]
  node_productrepo["Product repository"]
  node_categoryrepo["Category repository"]
  node_userrepo["User repository"]
  node_database[("MySQL database")]
end

node_user(("User"))

node_user -->|"uses"| node_app
node_app -->|"routes"| node_login
node_app -->|"guards routes"| node_protected
node_app -->|"routes"| node_dashboard
node_app -->|"routes"| node_products
node_app -->|"routes"| node_productform
node_app -->|"routes"| node_categories
node_app -->|"routes"| node_lowstock
node_app -->|"provides auth"| node_authctx
node_login -->|"uses auth"| node_authctx
node_authctx -->|"requests"| node_apiclient
node_dashboard -->|"requests"| node_apiclient
node_products -->|"requests"| node_apiclient
node_productform -->|"requests"| node_apiclient
node_categories -->|"requests"| node_apiclient
node_lowstock -->|"requests"| node_apiclient
node_apiclient -->|"HTTP API"| node_authcontroller
node_apiclient -->|"HTTP API"| node_productcontroller
node_apiclient -->|"HTTP API"| node_categorycontroller
node_authcontroller -->|"calls"| node_userservice
node_authcontroller -->|"issues tokens"| node_jwt
node_userservice -->|"reads and writes"| node_userrepo
node_security -->|"configures"| node_jwtfilter
node_jwtfilter -->|"validates tokens"| node_jwt
node_productcontroller -->|"calls"| node_productservice
node_productservice -->|"searches and writes"| node_productrepo
node_productservice -->|"loads category"| node_categoryrepo
node_categorycontroller -->|"calls"| node_categoryservice
node_categoryservice -->|"reads and writes"| node_categoryrepo
node_productrepo -->|"persists"| node_database
node_categoryrepo -->|"persists"| node_database
node_userrepo -->|"persists"| node_database

click node_app "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/App.jsx"
click node_authctx "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/context/AuthContext.jsx"
click node_login "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/pages/Login.jsx"
click node_protected "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/components/ProtectedRoute.jsx"
click node_dashboard "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/pages/Dashboard.jsx"
click node_products "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/pages/Products.jsx"
click node_productform "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/pages/ProductForm.jsx"
click node_categories "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/pages/Categories.jsx"
click node_lowstock "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/pages/LowStock.jsx"
click node_apiclient "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/services/api.js"
click node_authcontroller "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/controller/AuthController.java"
click node_userservice "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/service/UserService.java"
click node_jwt "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/security/JwtService.java"
click node_security "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/config/SecurityConfig.java"
click node_jwtfilter "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/security/JwtAuthenticationFilter.java"
click node_productcontroller "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/controller/ProductController.java"
click node_productservice "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/service/ProductService.java"
click node_categorycontroller "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/controller/CategoryController.java"
click node_categoryservice "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/service/CategoryService.java"
click node_productrepo "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/repository/ProductRepository.java"
click node_categoryrepo "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/repository/CategoryRepository.java"
click node_userrepo "https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/repository/UserRepository.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_app,node_dashboard,node_apiclient,node_user toneBlue
class node_authctx,node_login,node_protected,node_authcontroller,node_userservice,node_jwt,node_security,node_jwtfilter toneAmber
class node_products,node_productform,node_categories,node_lowstock,node_productcontroller,node_productservice,node_categorycontroller,node_categoryservice toneMint
class node_productrepo,node_categoryrepo,node_userrepo,node_database toneRose
```

## Components

### Web application

- [Route application](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/App.jsx): `Inventory-Management-System/frontend/src/App.jsx`
- [Dashboard](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/pages/Dashboard.jsx): `Inventory-Management-System/frontend/src/pages/Dashboard.jsx`
- [API client](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/services/api.js): `Inventory-Management-System/frontend/src/services/api.js`

### Identity and access

- [Auth state](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/context/AuthContext.jsx): `Inventory-Management-System/frontend/src/context/AuthContext.jsx`
- [Login and register](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/pages/Login.jsx): `Inventory-Management-System/frontend/src/pages/Login.jsx`
- [Route guard](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/components/ProtectedRoute.jsx): `Inventory-Management-System/frontend/src/components/ProtectedRoute.jsx`
- [Auth API](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/controller/AuthController.java): `Inventory-Management-System/backend/src/main/java/com/yugant/backend/controller/AuthController.java`
- [User service](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/service/UserService.java): `Inventory-Management-System/backend/src/main/java/com/yugant/backend/service/UserService.java`
- [JWT service](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/security/JwtService.java): `Inventory-Management-System/backend/src/main/java/com/yugant/backend/security/JwtService.java`
- [Security configuration](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/config/SecurityConfig.java): `Inventory-Management-System/backend/src/main/java/com/yugant/backend/config/SecurityConfig.java`
- [JWT filter](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/security/JwtAuthenticationFilter.java): `Inventory-Management-System/backend/src/main/java/com/yugant/backend/security/JwtAuthenticationFilter.java`

### Inventory operations

- [Product management](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/pages/Products.jsx): `Inventory-Management-System/frontend/src/pages/Products.jsx`
- [Product editor](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/pages/ProductForm.jsx): `Inventory-Management-System/frontend/src/pages/ProductForm.jsx`
- [Category management](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/pages/Categories.jsx): `Inventory-Management-System/frontend/src/pages/Categories.jsx`
- [Low-stock view](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/frontend/src/pages/LowStock.jsx): `Inventory-Management-System/frontend/src/pages/LowStock.jsx`
- [Product API](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/controller/ProductController.java): `Inventory-Management-System/backend/src/main/java/com/yugant/backend/controller/ProductController.java`
- [Product service](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/service/ProductService.java): `Inventory-Management-System/backend/src/main/java/com/yugant/backend/service/ProductService.java`
- [Category API](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/controller/CategoryController.java): `Inventory-Management-System/backend/src/main/java/com/yugant/backend/controller/CategoryController.java`
- [Category service](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/service/CategoryService.java): `Inventory-Management-System/backend/src/main/java/com/yugant/backend/service/CategoryService.java`

### Persistence

- [Product repository](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/repository/ProductRepository.java): `Inventory-Management-System/backend/src/main/java/com/yugant/backend/repository/ProductRepository.java`
- [Category repository](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/repository/CategoryRepository.java): `Inventory-Management-System/backend/src/main/java/com/yugant/backend/repository/CategoryRepository.java`
- [User repository](https://github.com/nimbalkar3735/inventory-management-system/blob/main/Inventory-Management-System/backend/src/main/java/com/yugant/backend/repository/UserRepository.java): `Inventory-Management-System/backend/src/main/java/com/yugant/backend/repository/UserRepository.java`
- **MySQL database**

### Other components

- **User**

## Connections

- User → Route application: uses
- Route application → Login and register: routes
- Route application → Route guard: guards routes
- Route application → Dashboard: routes
- Route application → Product management: routes
- Route application → Product editor: routes
- Route application → Category management: routes
- Route application → Low-stock view: routes
- Route application → Auth state: provides auth
- Login and register → Auth state: uses auth
- Auth state → API client: requests
- Dashboard → API client: requests
- Product management → API client: requests
- Product editor → API client: requests
- Category management → API client: requests
- Low-stock view → API client: requests
- API client → Auth API: HTTP API
- API client → Product API: HTTP API
- API client → Category API: HTTP API
- Auth API → User service: calls
- Auth API → JWT service: issues tokens
- User service → User repository: reads and writes
- Security configuration → JWT filter: configures
- JWT filter → JWT service: validates tokens
- Product API → Product service: calls
- Product service → Product repository: searches and writes
- Product service → Category repository: loads category
- Category API → Category service: calls
- Category service → Category repository: reads and writes
- Product repository → MySQL database: persists
- Category repository → MySQL database: persists
- User repository → MySQL database: persists
