# mohamedsaadaoui/smart-warehouse architecture

> Architecture diagram of the GitHub repository mohamedsaadaoui/smart-warehouse, 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/mohamedsaadaoui/smart-warehouse
- Repository: https://github.com/mohamedsaadaoui/smart-warehouse

## Overview

Smart Warehouse is a full-stack inventory and logistics platform. Users enter through the React app, authenticate, and use role-protected pages to manage products, categories, suppliers, and stock movements; the backend exposes corresponding APIs and supports dashboard, reporting, notifications, audit, and administration capabilities. The README documents these product areas and real-time notification support. Source evidence is selective, so links between unsampled frontend feature pages and backend modules are left unverified rather than inferred as calls.

Main entry points: [`frontend/src/api`](https://github.com/mohamedsaadaoui/smart-warehouse/tree/main/frontend/src/api) (API clients), [`frontend/src/routes/AppRoutes.tsx`](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/frontend/src/routes/AppRoutes.tsx) (App routes), [`src/main/java/com/saadaoui/smartwarehouse/report/controller/ReportController.java`](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/report/controller/ReportController.java) (Reports and exports), [`src/main/java/com/saadaoui/smartwarehouse/notification/controller/NotificationController.java`](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/notification/controller/NotificationController.java) (Notifications)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_routes["App routes<br/>[AppRoutes.tsx]"]
  node_auth_ui["Auth context<br/>[AuthContext.tsx]"]
  node_web_api["API clients"]
  node_inventory_pages["Inventory pages"]
  node_reports_page["Reports page<br/>[Reports.tsx]"]
end

subgraph group_security["Identity and access"]
  node_auth_api["Authentication API"]
  node_jwt["JWT security<br/>[JwtService.java]"]
end

subgraph group_inventory["Inventory operations"]
  node_products["Products and categories"]
  node_suppliers["Supplier management"]
  node_movements["Stock movements"]
  node_stock_data[("Warehouse records<br/>[Product.java]")]
end

subgraph group_insights["Insights and records"]
  node_dashboard["Dashboard analytics"]
  node_reports["Reports and exports"]
  node_audit["Audit logging"]
end

subgraph group_platform["Administration and messaging"]
  node_user_admin["User management"]
  node_settings["Application settings"]
  node_notifications["Notifications"]
  node_websocket["WebSocket push"]
end

node_user(("Warehouse user"))

node_user -->|"uses"| node_routes
node_routes -.->|"guards access"| node_auth_ui
node_routes -->|"routes to"| node_inventory_pages
node_routes -->|"routes to"| node_reports_page
node_auth_ui -->|"authenticates through"| node_web_api
node_web_api -.->|"calls API"| node_auth_api
node_web_api -.->|"calls API"| node_products
node_web_api -.->|"calls API"| node_suppliers
node_web_api -.->|"calls API"| node_movements
node_web_api -.->|"calls API"| node_dashboard
node_web_api -.->|"calls API"| node_reports
node_web_api -.->|"calls API"| node_notifications
node_auth_api -.->|"issues tokens"| node_jwt
node_movements -.->|"updates stock"| node_stock_data
node_products -.->|"manages records"| node_stock_data
node_reports -.->|"serves reports"| node_reports_page
node_notifications -.->|"pushes updates"| node_websocket
node_user -.->|"views summaries"| node_dashboard
node_user -.->|"requests analytics"| node_reports
node_user -.->|"reviews activity"| node_audit
node_user -.->|"administers users"| node_user_admin
node_user -.->|"configures platform"| node_settings
node_user -.->|"sends messages"| node_notifications

click node_routes "https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/frontend/src/routes/AppRoutes.tsx"
click node_auth_ui "https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/frontend/src/context/AuthContext.tsx"
click node_web_api "https://github.com/mohamedsaadaoui/smart-warehouse/tree/main/frontend/src/api"
click node_inventory_pages "https://github.com/mohamedsaadaoui/smart-warehouse/tree/main/frontend/src/pages"
click node_reports_page "https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/frontend/src/pages/Reports.tsx"
click node_auth_api "https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/auth/controller/AuthController.java"
click node_jwt "https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/auth/security/JwtService.java"
click node_products "https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/product/service/impl/ProductServiceImpl.java"
click node_suppliers "https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/supplier/service/impl/SupplierServiceImpl.java"
click node_movements "https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/movement/controller/MovementController.java"
click node_stock_data "https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/entity/Product.java"
click node_dashboard "https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/dashboard/service/impl/DashboardServiceImpl.java"
click node_reports "https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/report/controller/ReportController.java"
click node_audit "https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/audit/service/impl/AuditLogServiceImpl.java"
click node_user_admin "https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/user/controller/UserController.java"
click node_settings "https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/settings/service/impl/SettingsServiceImpl.java"
click node_notifications "https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/notification/controller/NotificationController.java"
click node_websocket "https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/websocket/WebSocketConfig.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_routes,node_auth_ui,node_web_api,node_inventory_pages,node_reports_page,node_user toneBlue
class node_auth_api,node_jwt toneAmber
class node_products,node_suppliers,node_movements,node_stock_data toneMint
class node_dashboard,node_reports,node_audit toneRose
class node_user_admin,node_settings,node_notifications,node_websocket toneIndigo
```

## Components

### Web application

- [App routes](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/frontend/src/routes/AppRoutes.tsx): `frontend/src/routes/AppRoutes.tsx`
- [Auth context](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/frontend/src/context/AuthContext.tsx): `frontend/src/context/AuthContext.tsx`
- [API clients](https://github.com/mohamedsaadaoui/smart-warehouse/tree/main/frontend/src/api): `frontend/src/api`
- [Inventory pages](https://github.com/mohamedsaadaoui/smart-warehouse/tree/main/frontend/src/pages): `frontend/src/pages`
- [Reports page](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/frontend/src/pages/Reports.tsx): `frontend/src/pages/Reports.tsx`

### Identity and access

- [Authentication API](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/auth/controller/AuthController.java): `src/main/java/com/saadaoui/smartwarehouse/auth/controller/AuthController.java`
- [JWT security](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/auth/security/JwtService.java): `src/main/java/com/saadaoui/smartwarehouse/auth/security/JwtService.java`

### Inventory operations

- [Products and categories](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/product/service/impl/ProductServiceImpl.java): `src/main/java/com/saadaoui/smartwarehouse/product/service/impl/ProductServiceImpl.java`
- [Supplier management](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/supplier/service/impl/SupplierServiceImpl.java): `src/main/java/com/saadaoui/smartwarehouse/supplier/service/impl/SupplierServiceImpl.java`
- [Stock movements](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/movement/controller/MovementController.java): `src/main/java/com/saadaoui/smartwarehouse/movement/controller/MovementController.java`
- [Warehouse records](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/entity/Product.java): `src/main/java/com/saadaoui/smartwarehouse/entity/Product.java`

### Insights and records

- [Dashboard analytics](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/dashboard/service/impl/DashboardServiceImpl.java): `src/main/java/com/saadaoui/smartwarehouse/dashboard/service/impl/DashboardServiceImpl.java`
- [Reports and exports](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/report/controller/ReportController.java): `src/main/java/com/saadaoui/smartwarehouse/report/controller/ReportController.java`
- [Audit logging](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/audit/service/impl/AuditLogServiceImpl.java): `src/main/java/com/saadaoui/smartwarehouse/audit/service/impl/AuditLogServiceImpl.java`

### Administration and messaging

- [User management](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/user/controller/UserController.java): `src/main/java/com/saadaoui/smartwarehouse/user/controller/UserController.java`
- [Application settings](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/settings/service/impl/SettingsServiceImpl.java): `src/main/java/com/saadaoui/smartwarehouse/settings/service/impl/SettingsServiceImpl.java`
- [Notifications](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/notification/controller/NotificationController.java): `src/main/java/com/saadaoui/smartwarehouse/notification/controller/NotificationController.java`
- [WebSocket push](https://github.com/mohamedsaadaoui/smart-warehouse/blob/main/src/main/java/com/saadaoui/smartwarehouse/websocket/WebSocketConfig.java): `src/main/java/com/saadaoui/smartwarehouse/websocket/WebSocketConfig.java`

### Other components

- **Warehouse user**

## Connections

- Warehouse user → App routes: uses (evidence: `frontend/src/routes/AppRoutes.tsx`)
- App routes → Auth context: guards access
- App routes → Inventory pages: routes to (evidence: `frontend/src/routes/AppRoutes.tsx`)
- App routes → Reports page: routes to (evidence: `frontend/src/routes/AppRoutes.tsx`)
- Auth context → API clients: authenticates through (evidence: `frontend/src/context/AuthContext.tsx`)
- API clients → Authentication API: calls API
- API clients → Products and categories: calls API
- API clients → Supplier management: calls API
- API clients → Stock movements: calls API
- API clients → Dashboard analytics: calls API
- API clients → Reports and exports: calls API
- API clients → Notifications: calls API
- Authentication API → JWT security: issues tokens
- Stock movements → Warehouse records: updates stock
- Products and categories → Warehouse records: manages records
- Reports and exports → Reports page: serves reports
- Notifications → WebSocket push: pushes updates
- Warehouse user → Dashboard analytics: views summaries (evidence: `README.md`)
- Warehouse user → Reports and exports: requests analytics (evidence: `README.md`)
- Warehouse user → Audit logging: reviews activity (evidence: `README.md`)
- Warehouse user → User management: administers users (evidence: `README.md`)
- Warehouse user → Application settings: configures platform (evidence: `README.md`)
- Warehouse user → Notifications: sends messages (evidence: `README.md`)
