# shippexdevs/shippex architecture

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

## Overview

Shippex is a Spring Boot backend for user accounts and shipping-related product and order management. The main user workflow is registering and verifying a phone number with an OTP, signing in for a JWT, browsing products, and placing or managing orders; administrators have separate account and order-management capabilities. Redis supports OTP state, MongoDB is the application’s documented database, and WhatsApp delivery is an external integration. Dashboard, admin-order, and notification components are represented from the repository tree, but their internal calls are not verified by the sampled sources.

Main entry points: [`src/main/java/com/shippex/service/impl/OtpService.java`](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/service/impl/OtpService.java) (OTP verification), [`src/main/java/com/shippex/controller/AppUserController.java`](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/controller/AppUserController.java) (Account API), [`src/main/java/com/shippex/service/AppUserService.java`](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/service/AppUserService.java) (User accounts), [`src/main/java/com/shippex/controller/ProductController.java`](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/controller/ProductController.java) (Product API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity and accounts"]
  node_account_api["Account API"]
  node_user_service["User accounts"]
  node_auth_api["User authentication"]
  node_otp["OTP verification<br/>[OtpService.java]"]
end

subgraph group_commerce["Products and orders"]
  node_product_api["Product API"]
  node_product_service["Product catalog"]
  node_order_api["Order API"]
  node_order_service["Order management<br/>[OrderService.java]"]
end

subgraph group_operations["Admin operations"]
  node_admin_auth_api["Admin authentication"]
  node_admin_api["Admin accounts"]
  node_admin_service["Admin services<br/>[AdminService.java]"]
  node_admin_order_api["Admin orders"]
  node_dashboard["Dashboard"]
end

subgraph group_integrations["External integrations"]
  node_whatsapp["WhatsApp messaging"]
  node_meta["Meta WhatsApp API"]
end

subgraph group_platform["Persistence and security"]
  node_app_user_store[("User records")]
  node_product_store[("Product records")]
  node_order_store[("Order records")]
  node_redis[("Redis state")]
  node_mongo[("MongoDB")]
end

node_user(("Platform user"))
node_admin_actor(("Administrator"))

node_user -->|"manages profile"| node_account_api
node_account_api -->|"delegates updates"| node_user_service
node_user -.->|"signs in"| node_auth_api
node_user -.->|"requests verification"| node_otp
node_otp -->|"stores OTP state"| node_redis
node_otp -->|"sends OTP"| node_whatsapp
node_whatsapp -->|"sends message"| node_meta
node_user -.->|"browses catalog"| node_product_api
node_product_api -->|"delegates catalog"| node_product_service
node_user -.->|"places orders"| node_order_api
node_order_api -->|"delegates orders"| node_order_service
node_admin_actor -->|"signs in"| node_admin_auth_api
node_admin_actor -->|"manages admins"| node_admin_api
node_admin_api -->|"delegates management"| node_admin_service
node_admin_actor -.->|"manages orders"| node_admin_order_api
node_admin_actor -.->|"views metrics"| node_dashboard
node_user_service -.->|"uses repository"| node_app_user_store
node_product_service -.->|"uses repository"| node_product_store
node_order_service -.->|"uses repository"| node_order_store
node_app_user_store -.->|"persists users"| node_mongo
node_product_store -.->|"persists products"| node_mongo
node_order_store -.->|"persists orders"| node_mongo

click node_account_api "https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/controller/AppUserController.java"
click node_user_service "https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/service/AppUserService.java"
click node_auth_api "https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/controller/AuthController.java"
click node_admin_auth_api "https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/controller/AdminAuthController.java"
click node_otp "https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/service/impl/OtpService.java"
click node_whatsapp "https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/service/impl/WhatsAppService.java"
click node_product_api "https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/controller/ProductController.java"
click node_product_service "https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/service/ProductService.java"
click node_order_api "https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/controller/OrderController.java"
click node_order_service "https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/service/OrderService.java"
click node_admin_api "https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/controller/AdminController.java"
click node_admin_service "https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/service/AdminService.java"
click node_admin_order_api "https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/controller/AdminOrderController.java"
click node_dashboard "https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/service/impl/DashboardServiceImpl.java"
click node_app_user_store "https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/repository/AppUserRepository.java"
click node_product_store "https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/repository/ProductRepository.java"
click node_order_store "https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/repository/OrderRepository.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_account_api,node_user_service,node_auth_api,node_otp,node_user toneBlue
class node_product_api,node_product_service,node_order_api,node_order_service toneAmber
class node_admin_auth_api,node_admin_api,node_admin_service,node_admin_order_api,node_dashboard toneMint
class node_whatsapp,node_meta toneRose
class node_app_user_store,node_product_store,node_order_store,node_redis,node_mongo,node_admin_actor toneIndigo
```

## Components

### Identity and accounts

- [Account API](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/controller/AppUserController.java): `src/main/java/com/shippex/controller/AppUserController.java`
- [User accounts](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/service/AppUserService.java): `src/main/java/com/shippex/service/AppUserService.java`
- [User authentication](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/controller/AuthController.java): `src/main/java/com/shippex/controller/AuthController.java`
- [OTP verification](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/service/impl/OtpService.java): `src/main/java/com/shippex/service/impl/OtpService.java`

### Products and orders

- [Product API](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/controller/ProductController.java): `src/main/java/com/shippex/controller/ProductController.java`
- [Product catalog](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/service/ProductService.java): `src/main/java/com/shippex/service/ProductService.java`
- [Order API](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/controller/OrderController.java): `src/main/java/com/shippex/controller/OrderController.java`
- [Order management](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/service/OrderService.java): `src/main/java/com/shippex/service/OrderService.java`

### Admin operations

- [Admin authentication](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/controller/AdminAuthController.java): `src/main/java/com/shippex/controller/AdminAuthController.java`
- [Admin accounts](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/controller/AdminController.java): `src/main/java/com/shippex/controller/AdminController.java`
- [Admin services](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/service/AdminService.java): `src/main/java/com/shippex/service/AdminService.java`
- [Admin orders](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/controller/AdminOrderController.java): `src/main/java/com/shippex/controller/AdminOrderController.java`
- [Dashboard](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/service/impl/DashboardServiceImpl.java): `src/main/java/com/shippex/service/impl/DashboardServiceImpl.java`

### External integrations

- [WhatsApp messaging](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/service/impl/WhatsAppService.java): `src/main/java/com/shippex/service/impl/WhatsAppService.java`
- **Meta WhatsApp API**

### Persistence and security

- [User records](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/repository/AppUserRepository.java): `src/main/java/com/shippex/repository/AppUserRepository.java`
- [Product records](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/repository/ProductRepository.java): `src/main/java/com/shippex/repository/ProductRepository.java`
- [Order records](https://github.com/shippexdevs/shippex/blob/main/src/main/java/com/shippex/repository/OrderRepository.java): `src/main/java/com/shippex/repository/OrderRepository.java`
- **Redis state**
- **MongoDB**

### Other components

- **Platform user**
- **Administrator**

## Connections

- Platform user → Account API: manages profile (evidence: `src/main/java/com/shippex/controller/AppUserController.java`)
- Account API → User accounts: delegates updates (evidence: `src/main/java/com/shippex/controller/AppUserController.java`)
- Platform user → User authentication: signs in (evidence: `README.md`)
- Platform user → OTP verification: requests verification (evidence: `README.md`)
- OTP verification → Redis state: stores OTP state (evidence: `src/main/java/com/shippex/service/impl/OtpService.java`)
- OTP verification → WhatsApp messaging: sends OTP (evidence: `src/main/java/com/shippex/service/impl/OtpService.java`)
- WhatsApp messaging → Meta WhatsApp API: sends message (evidence: `src/main/java/com/shippex/service/impl/WhatsAppService.java`)
- Platform user → Product API: browses catalog
- Product API → Product catalog: delegates catalog (evidence: `src/main/java/com/shippex/controller/ProductController.java`)
- Platform user → Order API: places orders
- Order API → Order management: delegates orders (evidence: `src/main/java/com/shippex/controller/OrderController.java`)
- Administrator → Admin authentication: signs in (evidence: `README.md`)
- Administrator → Admin accounts: manages admins (evidence: `src/main/java/com/shippex/controller/AdminController.java`)
- Admin accounts → Admin services: delegates management (evidence: `src/main/java/com/shippex/controller/AdminController.java`)
- Administrator → Admin orders: manages orders
- Administrator → Dashboard: views metrics
- User accounts → User records: uses repository
- Product catalog → Product records: uses repository
- Order management → Order records: uses repository
- User records → MongoDB: persists users
- Product records → MongoDB: persists products
- Order records → MongoDB: persists orders
