# ajith104/inventory-management-system architecture

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

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

## Overview

This is an inventory-management web application: users manage products, suppliers, purchases, sales and users, and view dashboard statistics. The Angular frontend routes users to feature screens; feature components use client services, while the Spring backend exposes controllers, applies domain logic and persists entities through repositories. Purchases and sales adjust product stock; dashboard statistics aggregate repository counts. The sampled product client targets a local `/products` API. Other frontend-to-backend links are left unverified because their request details were not excerpted.

Main entry points: [`Frontend/src/app/app.routes.ts`](https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/app.routes.ts) (Feature routes), [`Backend/src/main/java/com/inventorymanagement/controller`](https://github.com/ajith104/inventory-management-system/tree/main/Backend/src/main/java/com/inventorymanagement/controller) (REST controllers), [`Backend/src/main/java/com/inventorymanagement/service/DashboardService.java`](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/service/DashboardService.java) (Dashboard aggregation), [`Backend/src/main/java/com/inventorymanagement/repository/ProductRepository.java`](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/repository/ProductRepository.java) (Product repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Angular frontend"]
  node_app["Root app<br/>[app.ts]"]
  node_routes["Feature routes<br/>[app.routes.ts]"]
  node_dashboard_ui["Dashboard screen<br/>[dashboard.ts]"]
  node_products_ui["Products screen<br/>[products.ts]"]
  node_purchases_ui["Purchases screen<br/>[purchases.ts]"]
  node_sales_ui["Sales screen<br/>[sales.ts]"]
  node_suppliers_ui["Suppliers screen<br/>[suppliers.ts]"]
  node_users_ui["Users screen<br/>[users.ts]"]
end

subgraph group_clients["Frontend services"]
  node_dashboard_client["Dashboard client<br/>[dashboard.ts]"]
  node_product_client["Product client<br/>[product.ts]"]
  node_purchase_client["Purchase client<br/>[purchase.ts]"]
  node_sale_client["Sale client<br/>[sale.ts]"]
  node_supplier_client["Supplier client<br/>[supplier.ts]"]
  node_user_client["User client<br/>[user.ts]"]
end

subgraph group_backend["Spring application"]
  node_controllers["REST controllers"]
  node_product_logic["Product operations"]
  node_purchase_logic["Purchase operations"]
  node_sale_logic["Sale operations<br/>[SaleService.java]"]
  node_supplier_logic["Supplier operations"]
  node_user_logic["User operations<br/>[UserService.java]"]
  node_dashboard_logic["Dashboard aggregation"]
  node_prediction["Prediction logic"]
end

subgraph group_domain["Inventory domain"]
  node_product["Product record<br/>[Product.java]"]
  node_purchase["Purchase record<br/>[Purchase.java]"]
  node_sale["Sale record<br/>[Sale.java]"]
  node_supplier["Supplier record<br/>[Supplier.java]"]
  node_account["User record<br/>[User.java]"]
  node_stats["Dashboard stats"]
end

subgraph group_persistence["Persistence"]
  node_product_repo[("Product repository")]
  node_purchase_repo[("Purchase repository")]
  node_sale_repo[("Sale repository")]
  node_supplier_repo[("Supplier repository")]
  node_user_repo[("User repository")]
end

node_user(("Inventory user"))

node_user -->|"uses"| node_app
node_app -->|"renders routes"| node_routes
node_routes -->|"routes to"| node_dashboard_ui
node_routes -->|"routes to"| node_products_ui
node_routes -->|"routes to"| node_purchases_ui
node_routes -->|"routes to"| node_sales_ui
node_routes -->|"routes to"| node_suppliers_ui
node_routes -->|"routes to"| node_users_ui
node_products_ui -->|"calls"| node_product_client
node_purchases_ui -->|"calls"| node_purchase_client
node_purchases_ui -->|"loads products"| node_product_client
node_sales_ui -->|"calls"| node_sale_client
node_sales_ui -->|"loads products"| node_product_client
node_suppliers_ui -->|"calls"| node_supplier_client
node_dashboard_ui -.->|"loads stats"| node_dashboard_client
node_users_ui -.->|"uses"| node_user_client
node_product_client -.->|"requests products"| node_controllers
node_controllers -->|"delegates"| node_product_logic
node_controllers -->|"delegates"| node_purchase_logic
node_controllers -->|"delegates"| node_sale_logic
node_controllers -->|"delegates"| node_supplier_logic
node_controllers -->|"delegates"| node_user_logic
node_controllers -.->|"delegates"| node_dashboard_logic
node_product_logic -->|"reads and writes"| node_product_repo
node_purchase_logic -->|"reads and writes"| node_purchase_repo
node_purchase_logic -->|"adjusts stock"| node_product_repo
node_sale_logic -->|"reads and writes"| node_sale_repo
node_sale_logic -->|"adjusts stock"| node_product_repo
node_sale_logic -.->|"uses"| node_prediction
node_supplier_logic -->|"reads and writes"| node_supplier_repo
node_user_logic -->|"reads and writes"| node_user_repo
node_dashboard_logic -->|"counts"| node_product_repo
node_dashboard_logic -->|"counts"| node_purchase_repo
node_dashboard_logic -->|"counts"| node_sale_repo
node_dashboard_logic -->|"counts"| node_supplier_repo
node_dashboard_logic -->|"constructs"| node_stats
node_product_repo -->|"stores"| node_product
node_purchase_repo -->|"stores"| node_purchase
node_sale_repo -->|"stores"| node_sale
node_supplier_repo -->|"stores"| node_supplier
node_user_repo -->|"stores"| node_account

click node_app "https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/app.ts"
click node_routes "https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/app.routes.ts"
click node_dashboard_ui "https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/components/dashboard/dashboard.ts"
click node_products_ui "https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/components/products/products.ts"
click node_purchases_ui "https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/components/purchases/purchases.ts"
click node_sales_ui "https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/components/sales/sales.ts"
click node_suppliers_ui "https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/components/suppliers/suppliers.ts"
click node_users_ui "https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/components/users/users.ts"
click node_dashboard_client "https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/services/dashboard.ts"
click node_product_client "https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/services/product.ts"
click node_purchase_client "https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/services/purchase.ts"
click node_sale_client "https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/services/sale.ts"
click node_supplier_client "https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/services/supplier.ts"
click node_user_client "https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/services/user.ts"
click node_controllers "https://github.com/ajith104/inventory-management-system/tree/main/Backend/src/main/java/com/inventorymanagement/controller"
click node_product_logic "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/service/ProductService.java"
click node_purchase_logic "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/service/PurchaseService.java"
click node_sale_logic "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/service/SaleService.java"
click node_supplier_logic "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/service/SupplierService.java"
click node_user_logic "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/service/UserService.java"
click node_dashboard_logic "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/service/DashboardService.java"
click node_prediction "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/service/PredictionService.java"
click node_product "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/model/Product.java"
click node_purchase "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/model/Purchase.java"
click node_sale "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/model/Sale.java"
click node_supplier "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/model/Supplier.java"
click node_account "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/model/User.java"
click node_stats "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/dto/DashboardStats.java"
click node_product_repo "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/repository/ProductRepository.java"
click node_purchase_repo "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/repository/PurchaseRepository.java"
click node_sale_repo "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/repository/SaleRepository.java"
click node_supplier_repo "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/repository/SupplierRepository.java"
click node_user_repo "https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/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_routes,node_dashboard_ui,node_products_ui,node_purchases_ui,node_sales_ui,node_suppliers_ui,node_users_ui,node_user toneBlue
class node_dashboard_client,node_product_client,node_purchase_client,node_sale_client,node_supplier_client,node_user_client toneAmber
class node_controllers,node_product_logic,node_purchase_logic,node_sale_logic,node_supplier_logic,node_user_logic,node_dashboard_logic,node_prediction toneMint
class node_product,node_purchase,node_sale,node_supplier,node_account,node_stats toneRose
class node_product_repo,node_purchase_repo,node_sale_repo,node_supplier_repo,node_user_repo toneIndigo
```

## Components

### Angular frontend

- [Root app](https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/app.ts): `Frontend/src/app/app.ts`
- [Feature routes](https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/app.routes.ts): `Frontend/src/app/app.routes.ts`
- [Dashboard screen](https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/components/dashboard/dashboard.ts): `Frontend/src/app/components/dashboard/dashboard.ts`
- [Products screen](https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/components/products/products.ts): `Frontend/src/app/components/products/products.ts`
- [Purchases screen](https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/components/purchases/purchases.ts): `Frontend/src/app/components/purchases/purchases.ts`
- [Sales screen](https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/components/sales/sales.ts): `Frontend/src/app/components/sales/sales.ts`
- [Suppliers screen](https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/components/suppliers/suppliers.ts): `Frontend/src/app/components/suppliers/suppliers.ts`
- [Users screen](https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/components/users/users.ts): `Frontend/src/app/components/users/users.ts`

### Frontend services

- [Dashboard client](https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/services/dashboard.ts): `Frontend/src/app/services/dashboard.ts`
- [Product client](https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/services/product.ts): `Frontend/src/app/services/product.ts`
- [Purchase client](https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/services/purchase.ts): `Frontend/src/app/services/purchase.ts`
- [Sale client](https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/services/sale.ts): `Frontend/src/app/services/sale.ts`
- [Supplier client](https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/services/supplier.ts): `Frontend/src/app/services/supplier.ts`
- [User client](https://github.com/ajith104/inventory-management-system/blob/main/Frontend/src/app/services/user.ts): `Frontend/src/app/services/user.ts`

### Spring application

- [REST controllers](https://github.com/ajith104/inventory-management-system/tree/main/Backend/src/main/java/com/inventorymanagement/controller): `Backend/src/main/java/com/inventorymanagement/controller`
- [Product operations](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/service/ProductService.java): `Backend/src/main/java/com/inventorymanagement/service/ProductService.java`
- [Purchase operations](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/service/PurchaseService.java): `Backend/src/main/java/com/inventorymanagement/service/PurchaseService.java`
- [Sale operations](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/service/SaleService.java): `Backend/src/main/java/com/inventorymanagement/service/SaleService.java`
- [Supplier operations](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/service/SupplierService.java): `Backend/src/main/java/com/inventorymanagement/service/SupplierService.java`
- [User operations](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/service/UserService.java): `Backend/src/main/java/com/inventorymanagement/service/UserService.java`
- [Dashboard aggregation](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/service/DashboardService.java): `Backend/src/main/java/com/inventorymanagement/service/DashboardService.java`
- [Prediction logic](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/service/PredictionService.java): `Backend/src/main/java/com/inventorymanagement/service/PredictionService.java`

### Inventory domain

- [Product record](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/model/Product.java): `Backend/src/main/java/com/inventorymanagement/model/Product.java`
- [Purchase record](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/model/Purchase.java): `Backend/src/main/java/com/inventorymanagement/model/Purchase.java`
- [Sale record](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/model/Sale.java): `Backend/src/main/java/com/inventorymanagement/model/Sale.java`
- [Supplier record](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/model/Supplier.java): `Backend/src/main/java/com/inventorymanagement/model/Supplier.java`
- [User record](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/model/User.java): `Backend/src/main/java/com/inventorymanagement/model/User.java`
- [Dashboard stats](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/dto/DashboardStats.java): `Backend/src/main/java/com/inventorymanagement/dto/DashboardStats.java`

### Persistence

- [Product repository](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/repository/ProductRepository.java): `Backend/src/main/java/com/inventorymanagement/repository/ProductRepository.java`
- [Purchase repository](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/repository/PurchaseRepository.java): `Backend/src/main/java/com/inventorymanagement/repository/PurchaseRepository.java`
- [Sale repository](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/repository/SaleRepository.java): `Backend/src/main/java/com/inventorymanagement/repository/SaleRepository.java`
- [Supplier repository](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/repository/SupplierRepository.java): `Backend/src/main/java/com/inventorymanagement/repository/SupplierRepository.java`
- [User repository](https://github.com/ajith104/inventory-management-system/blob/main/Backend/src/main/java/com/inventorymanagement/repository/UserRepository.java): `Backend/src/main/java/com/inventorymanagement/repository/UserRepository.java`

### Other components

- **Inventory user**

## Connections

- Inventory user → Root app: uses
- Root app → Feature routes: renders routes (evidence: `Frontend/src/app/app.ts`)
- Feature routes → Dashboard screen: routes to (evidence: `Frontend/src/app/app.routes.ts`)
- Feature routes → Products screen: routes to (evidence: `Frontend/src/app/app.routes.ts`)
- Feature routes → Purchases screen: routes to (evidence: `Frontend/src/app/app.routes.ts`)
- Feature routes → Sales screen: routes to (evidence: `Frontend/src/app/app.routes.ts`)
- Feature routes → Suppliers screen: routes to (evidence: `Frontend/src/app/app.routes.ts`)
- Feature routes → Users screen: routes to (evidence: `Frontend/src/app/app.routes.ts`)
- Products screen → Product client: calls (evidence: `Frontend/src/app/components/products/products.ts`)
- Purchases screen → Purchase client: calls (evidence: `Frontend/src/app/components/purchases/purchases.ts`)
- Purchases screen → Product client: loads products (evidence: `Frontend/src/app/components/purchases/purchases.ts`)
- Sales screen → Sale client: calls (evidence: `Frontend/src/app/components/sales/sales.ts`)
- Sales screen → Product client: loads products (evidence: `Frontend/src/app/components/sales/sales.ts`)
- Suppliers screen → Supplier client: calls (evidence: `Frontend/src/app/components/suppliers/suppliers.ts`)
- Dashboard screen → Dashboard client: loads stats
- Users screen → User client: uses
- Product client → REST controllers: requests products (evidence: `Frontend/src/app/services/product.ts`)
- REST controllers → Product operations: delegates (evidence: `Backend/src/main/java/com/inventorymanagement/controller/ProductController.java`)
- REST controllers → Purchase operations: delegates (evidence: `Backend/src/main/java/com/inventorymanagement/controller/PurchaseController.java`)
- REST controllers → Sale operations: delegates (evidence: `Backend/src/main/java/com/inventorymanagement/controller/SaleController.java`)
- REST controllers → Supplier operations: delegates (evidence: `Backend/src/main/java/com/inventorymanagement/controller/SupplierController.java`)
- REST controllers → User operations: delegates (evidence: `Backend/src/main/java/com/inventorymanagement/controller/UserController.java`)
- REST controllers → Dashboard aggregation: delegates
- Product operations → Product repository: reads and writes (evidence: `Backend/src/main/java/com/inventorymanagement/service/ProductService.java`)
- Purchase operations → Purchase repository: reads and writes (evidence: `Backend/src/main/java/com/inventorymanagement/service/PurchaseService.java`)
- Purchase operations → Product repository: adjusts stock (evidence: `Backend/src/main/java/com/inventorymanagement/service/PurchaseService.java`)
- Sale operations → Sale repository: reads and writes (evidence: `Backend/src/main/java/com/inventorymanagement/service/SaleService.java`)
- Sale operations → Product repository: adjusts stock (evidence: `Backend/src/main/java/com/inventorymanagement/service/SaleService.java`)
- Sale operations → Prediction logic: uses (evidence: `Backend/src/main/java/com/inventorymanagement/service/SaleService.java`)
- Supplier operations → Supplier repository: reads and writes (evidence: `Backend/src/main/java/com/inventorymanagement/service/SupplierService.java`)
- User operations → User repository: reads and writes (evidence: `Backend/src/main/java/com/inventorymanagement/service/UserService.java`)
- Dashboard aggregation → Product repository: counts (evidence: `Backend/src/main/java/com/inventorymanagement/service/DashboardService.java`)
- Dashboard aggregation → Purchase repository: counts (evidence: `Backend/src/main/java/com/inventorymanagement/service/DashboardService.java`)
- Dashboard aggregation → Sale repository: counts (evidence: `Backend/src/main/java/com/inventorymanagement/service/DashboardService.java`)
- Dashboard aggregation → Supplier repository: counts (evidence: `Backend/src/main/java/com/inventorymanagement/service/DashboardService.java`)
- Dashboard aggregation → Dashboard stats: constructs (evidence: `Backend/src/main/java/com/inventorymanagement/service/DashboardService.java`)
- Product repository → Product record: stores (evidence: `Backend/src/main/java/com/inventorymanagement/repository/ProductRepository.java`)
- Purchase repository → Purchase record: stores (evidence: `Backend/src/main/java/com/inventorymanagement/repository/PurchaseRepository.java`)
- Sale repository → Sale record: stores (evidence: `Backend/src/main/java/com/inventorymanagement/repository/SaleRepository.java`)
- Supplier repository → Supplier record: stores (evidence: `Backend/src/main/java/com/inventorymanagement/repository/SupplierRepository.java`)
- User repository → User record: stores (evidence: `Backend/src/main/java/com/inventorymanagement/repository/UserRepository.java`)
