# fahim-khandakar/seller-mama-backend architecture

> Architecture diagram of the GitHub repository fahim-khandakar/seller-mama-backend, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/fahim-khandakar/seller-mama-backend
- Repository: https://github.com/fahim-khandakar/seller-mama-backend

## Overview

Seller Mama is a commerce backend exposing versioned Express APIs for authentication, catalog management, coupons, orders, and users. Requests enter through the application and route registry, then domain controllers invoke services that perform domain work; services use Mongoose models and shared query, token, and media utilities. The order service references product, coupon, and user data. The README is empty, and route wiring, database connection details, and several listed modules were not excerpted, so those links are omitted rather than inferred.

Main entry points: [`src/app/modules/product/product.service.ts`](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/product/product.service.ts) (Product Service), [`src/app/modules/order/order.service.ts`](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/order/order.service.ts) (Order Service), [`src/utils/QueryBuilder.ts`](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/utils/QueryBuilder.ts) (Query Builder), [`src/app.ts`](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app.ts) (Express App)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_platform["API Platform"]
  node_app["Express App<br/>[app.ts]"]
  node_routes["API Routes<br/>[index.ts]"]
  node_errors["Error Handling"]
end

subgraph group_identity["Identity &amp; Users"]
  node_auth_controller["Auth Controller<br/>[auth.controller.ts]"]
  node_auth_service["Auth Service<br/>[auth.service.ts]"]
  node_user_controller["User Controller<br/>[user.controller.ts]"]
  node_user_service["User Service<br/>[user.service.ts]"]
  node_user_model[("User Model<br/>[user.model.ts]")]
end

subgraph group_catalog["Catalog"]
  node_category["Category Management"]
  node_main_category["Main Category Management"]
  node_type["Type Management<br/>[type.service.ts]"]
  node_product_controller["Product Controller"]
  node_product_service["Product Service<br/>[product.service.ts]"]
  node_product_model[("Product Model<br/>[product.model.ts]")]
end

subgraph group_commerce["Commerce Operations"]
  node_coupon_controller["Coupon Controller"]
  node_coupon_service["Coupon Service<br/>[coupon.service.ts]"]
  node_coupon_utils["Coupon Rules<br/>[coupon.utils.ts]"]
  node_order_controller["Order Controller"]
  node_order_service["Order Service<br/>[order.service.ts]"]
  node_order_model[("Order Model<br/>[order.model.ts]")]
end

subgraph group_shared["Shared Services"]
  node_query_builder["Query Builder<br/>[QueryBuilder.ts]"]
  node_tokens["User Tokens<br/>[userTokens.ts]"]
  node_cloudinary["Cloudinary Media"]
  node_email["Email Sender<br/>[sendEmail.ts]"]
end

node_client(("API Client"))
node_mongo[("MongoDB")]

node_client -->|"sends requests"| node_app
node_app -->|"mounts API"| node_routes
node_app -->|"handles errors"| node_errors
node_auth_controller -->|"invokes"| node_auth_service
node_auth_controller -->|"creates tokens"| node_tokens
node_auth_service -->|"reads users"| node_user_model
node_auth_service -->|"sends email"| node_email
node_user_controller -->|"invokes"| node_user_service
node_user_service -->|"accesses users"| node_user_model
node_category -->|"builds queries"| node_query_builder
node_main_category -->|"builds queries"| node_query_builder
node_type -->|"builds queries"| node_query_builder
node_product_controller -->|"invokes"| node_product_service
node_product_service -->|"queries products"| node_product_model
node_product_service -->|"builds queries"| node_query_builder
node_product_service -->|"manages media"| node_cloudinary
node_product_service -->|"uses category model"| node_main_category
node_product_service -->|"uses category model"| node_category
node_product_service -->|"uses type model"| node_type
node_coupon_controller -->|"invokes"| node_coupon_service
node_coupon_controller -->|"uses coupon rules"| node_coupon_utils
node_order_controller -->|"invokes"| node_order_service
node_order_service -->|"queries orders"| node_order_model
node_order_service -->|"uses product data"| node_product_model
node_order_service -->|"applies coupon rules"| node_coupon_utils
node_order_service -->|"uses user data"| node_user_model
node_order_service -->|"builds queries"| node_query_builder

click node_app "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app.ts"
click node_routes "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/routes/index.ts"
click node_errors "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/middlewares/globalErrorHandler.ts"
click node_auth_controller "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/auth/auth.controller.ts"
click node_auth_service "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/auth/auth.service.ts"
click node_user_controller "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/user/user.controller.ts"
click node_user_service "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/user/user.service.ts"
click node_user_model "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/user/user.model.ts"
click node_category "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/Category/category.service.ts"
click node_main_category "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/Main%20Category/mainCategory.service.ts"
click node_type "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/Type/type.service.ts"
click node_product_controller "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/product/product.controller.ts"
click node_product_service "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/product/product.service.ts"
click node_product_model "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/product/product.model.ts"
click node_coupon_controller "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/coupon/coupon.controller.ts"
click node_coupon_service "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/coupon/coupon.service.ts"
click node_coupon_utils "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/coupon/coupon.utils.ts"
click node_order_controller "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/order/order.controller.ts"
click node_order_service "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/order/order.service.ts"
click node_order_model "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/order/order.model.ts"
click node_query_builder "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/utils/QueryBuilder.ts"
click node_tokens "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/utils/userTokens.ts"
click node_cloudinary "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/config/cloudinary.config.ts"
click node_email "https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/utils/sendEmail.ts"

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_errors,node_client toneBlue
class node_auth_controller,node_auth_service,node_user_controller,node_user_service,node_user_model,node_mongo toneAmber
class node_category,node_main_category,node_type,node_product_controller,node_product_service,node_product_model toneMint
class node_coupon_controller,node_coupon_service,node_coupon_utils,node_order_controller,node_order_service,node_order_model toneRose
class node_query_builder,node_tokens,node_cloudinary,node_email toneIndigo
```

## Components

### API Platform

- [Express App](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app.ts): `src/app.ts`
- [API Routes](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/routes/index.ts): `src/app/routes/index.ts`
- [Error Handling](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/middlewares/globalErrorHandler.ts): `src/app/middlewares/globalErrorHandler.ts`

### Identity & Users

- [Auth Controller](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/auth/auth.controller.ts): `src/app/modules/auth/auth.controller.ts`
- [Auth Service](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/auth/auth.service.ts): `src/app/modules/auth/auth.service.ts`
- [User Controller](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/user/user.controller.ts): `src/app/modules/user/user.controller.ts`
- [User Service](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/user/user.service.ts): `src/app/modules/user/user.service.ts`
- [User Model](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/user/user.model.ts): `src/app/modules/user/user.model.ts`

### Catalog

- [Category Management](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/Category/category.service.ts): `src/app/modules/Category/category.service.ts`
- [Main Category Management](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/Main%20Category/mainCategory.service.ts): `src/app/modules/Main Category/mainCategory.service.ts`
- [Type Management](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/Type/type.service.ts): `src/app/modules/Type/type.service.ts`
- [Product Controller](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/product/product.controller.ts): `src/app/modules/product/product.controller.ts`
- [Product Service](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/product/product.service.ts): `src/app/modules/product/product.service.ts`
- [Product Model](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/product/product.model.ts): `src/app/modules/product/product.model.ts`

### Commerce Operations

- [Coupon Controller](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/coupon/coupon.controller.ts): `src/app/modules/coupon/coupon.controller.ts`
- [Coupon Service](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/coupon/coupon.service.ts): `src/app/modules/coupon/coupon.service.ts`
- [Coupon Rules](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/coupon/coupon.utils.ts): `src/app/modules/coupon/coupon.utils.ts`
- [Order Controller](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/order/order.controller.ts): `src/app/modules/order/order.controller.ts`
- [Order Service](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/order/order.service.ts): `src/app/modules/order/order.service.ts`
- [Order Model](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/app/modules/order/order.model.ts): `src/app/modules/order/order.model.ts`

### Shared Services

- [Query Builder](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/utils/QueryBuilder.ts): `src/utils/QueryBuilder.ts`
- [User Tokens](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/utils/userTokens.ts): `src/utils/userTokens.ts`
- [Cloudinary Media](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/config/cloudinary.config.ts): `src/config/cloudinary.config.ts`
- [Email Sender](https://github.com/fahim-khandakar/seller-mama-backend/blob/main/src/utils/sendEmail.ts): `src/utils/sendEmail.ts`

### Other components

- **API Client**
- **MongoDB**

## Connections

- API Client → Express App: sends requests (evidence: `src/app.ts`)
- Express App → API Routes: mounts API (evidence: `src/app.ts`)
- Express App → Error Handling: handles errors (evidence: `src/app.ts`)
- Auth Controller → Auth Service: invokes (evidence: `src/app/modules/auth/auth.controller.ts`)
- Auth Controller → User Tokens: creates tokens (evidence: `src/app/modules/auth/auth.controller.ts`)
- Auth Service → User Model: reads users (evidence: `src/app/modules/auth/auth.service.ts`)
- Auth Service → Email Sender: sends email (evidence: `src/app/modules/auth/auth.service.ts`)
- User Controller → User Service: invokes (evidence: `src/app/modules/user/user.controller.ts`)
- User Service → User Model: accesses users (evidence: `src/app/modules/user/user.service.ts`)
- Category Management → Query Builder: builds queries (evidence: `src/app/modules/Category/category.service.ts`)
- Main Category Management → Query Builder: builds queries (evidence: `src/app/modules/Main Category/mainCategory.service.ts`)
- Type Management → Query Builder: builds queries (evidence: `src/app/modules/Type/type.service.ts`)
- Product Controller → Product Service: invokes (evidence: `src/app/modules/product/product.controller.ts`)
- Product Service → Product Model: queries products (evidence: `src/app/modules/product/product.service.ts`)
- Product Service → Query Builder: builds queries (evidence: `src/app/modules/product/product.service.ts`)
- Product Service → Cloudinary Media: manages media (evidence: `src/app/modules/product/product.service.ts`)
- Product Service → Main Category Management: uses category model (evidence: `src/app/modules/product/product.service.ts`)
- Product Service → Category Management: uses category model (evidence: `src/app/modules/product/product.service.ts`)
- Product Service → Type Management: uses type model (evidence: `src/app/modules/product/product.service.ts`)
- Coupon Controller → Coupon Service: invokes (evidence: `src/app/modules/coupon/coupon.controller.ts`)
- Coupon Controller → Coupon Rules: uses coupon rules (evidence: `src/app/modules/coupon/coupon.controller.ts`)
- Order Controller → Order Service: invokes (evidence: `src/app/modules/order/order.controller.ts`)
- Order Service → Order Model: queries orders (evidence: `src/app/modules/order/order.service.ts`)
- Order Service → Product Model: uses product data (evidence: `src/app/modules/order/order.service.ts`)
- Order Service → Coupon Rules: applies coupon rules (evidence: `src/app/modules/order/order.service.ts`)
- Order Service → User Model: uses user data (evidence: `src/app/modules/order/order.service.ts`)
- Order Service → Query Builder: builds queries (evidence: `src/app/modules/order/order.service.ts`)
