# prajan2425/mern-2083 architecture

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

- Interactive diagram: https://gitdiagram.com/prajan2425/mern-2083
- Repository: https://github.com/prajan2425/mern-2083

## Overview

This is an Express commerce backend with account authentication, product and user management, order fulfillment, and cash or Khalti payments; it also exposes server-rendered product pages. The main flow is a client request through server-mounted routes and controllers into services and MongoDB models, with optional payment, email, and image-upload integrations. The README is empty, and several route, service, and integration implementations were not sampled, so uncertain internal dispatch links are omitted.

Main entry points: [`src/server.js`](https://github.com/prajan2425/mern-2083/blob/main/src/server.js) (Express server), [`src/services/order.service.js`](https://github.com/prajan2425/mern-2083/blob/main/src/services/order.service.js) (Order service), [`src/services/user.service.js`](https://github.com/prajan2425/mern-2083/blob/main/src/services/user.service.js) (User service), [`src/services/auth.service.js`](https://github.com/prajan2425/mern-2083/blob/main/src/services/auth.service.js) (Auth service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["HTTP entry"]
  node_server["Express server<br/>[server.js]"]
  node_product_routes["Product routes<br/>[product.route.js]"]
  node_order_routes["Order routes<br/>[order.route.js]"]
  node_user_routes["User routes<br/>[user.route.js]"]
  node_auth_routes["Auth routes<br/>[auth.route.js]"]
  node_page_routes["Page routes<br/>[page.route.js]"]
end

subgraph group_commerce["Commerce workflows"]
  node_product_controller["Product controller"]
  node_order_controller["Order controller"]
  node_page_controller["Page controller<br/>[page.controller.js]"]
  node_product_service["Product service<br/>[product.service.js]"]
  node_order_service["Order service<br/>[order.service.js]"]
end

subgraph group_identity["Identity and access"]
  node_auth_controller["Auth controller<br/>[auth.controller.js]"]
  node_user_controller["User controller<br/>[user.controller.js]"]
  node_auth_service["Auth service<br/>[auth.service.js]"]
  node_user_service["User service<br/>[user.service.js]"]
  node_auth_middleware["JWT middleware<br/>[auth.js]"]
  node_jwt["JWT utility<br/>[jwt.js]"]
end

subgraph group_persistence["Data and integrations"]
  node_product_model[("Product records<br/>[Products.js]")]
  node_order_model[("Order records<br/>[Order.js]")]
  node_payment_model[("Payment records<br/>[Payment.js]")]
  node_user_model[("User records<br/>[User.js]")]
  node_database["MongoDB connection<br/>[database.js]"]
  node_payment_util["Khalti payment<br/>[payment.js]"]
  node_email_util["Email utility<br/>[email.js]"]
  node_image_util["Image uploader<br/>[fileUploader.js]"]
end

node_client(("Client"))
node_payment_gateway{{"Khalti gateway"}}
node_cloudinary{{"Cloudinary"}}

node_client -->|"sends requests"| node_server
node_server -->|"mounts"| node_product_routes
node_server -->|"mounts"| node_order_routes
node_server -->|"mounts"| node_user_routes
node_server -->|"mounts"| node_auth_routes
node_server -->|"mounts"| node_page_routes
node_server -->|"guards users/orders"| node_auth_middleware
node_server -->|"connects"| node_database
node_server -.->|"connects"| node_cloudinary
node_order_controller -->|"calls"| node_order_service
node_product_controller -->|"calls"| node_product_service
node_page_controller -->|"calls"| node_product_service
node_auth_controller -->|"calls"| node_auth_service
node_auth_controller -->|"creates token"| node_jwt
node_user_controller -->|"calls"| node_user_service
node_auth_middleware -->|"verifies token"| node_jwt
node_order_service -->|"reads/writes"| node_order_model
node_order_service -->|"reads/writes"| node_payment_model
node_order_service -->|"gets user"| node_user_service
node_order_service -->|"requests payment"| node_payment_util
node_payment_util -->|"processes payment"| node_payment_gateway
node_product_service -->|"reads/writes"| node_product_model
node_user_service -->|"reads/writes"| node_user_model
node_user_service -->|"registers user"| node_auth_service
node_user_service -->|"uploads image"| node_image_util
node_auth_service -->|"reads/writes"| node_user_model
node_auth_service -->|"sends reset email"| node_email_util

click node_server "https://github.com/prajan2425/mern-2083/blob/main/src/server.js"
click node_product_routes "https://github.com/prajan2425/mern-2083/blob/main/src/routes/product.route.js"
click node_order_routes "https://github.com/prajan2425/mern-2083/blob/main/src/routes/order.route.js"
click node_user_routes "https://github.com/prajan2425/mern-2083/blob/main/src/routes/user.route.js"
click node_auth_routes "https://github.com/prajan2425/mern-2083/blob/main/src/routes/auth.route.js"
click node_page_routes "https://github.com/prajan2425/mern-2083/blob/main/src/routes/page.route.js"
click node_product_controller "https://github.com/prajan2425/mern-2083/blob/main/src/controllers/product.controller.js"
click node_order_controller "https://github.com/prajan2425/mern-2083/blob/main/src/controllers/order.controller.js"
click node_page_controller "https://github.com/prajan2425/mern-2083/blob/main/src/controllers/page.controller.js"
click node_product_service "https://github.com/prajan2425/mern-2083/blob/main/src/services/product.service.js"
click node_order_service "https://github.com/prajan2425/mern-2083/blob/main/src/services/order.service.js"
click node_product_model "https://github.com/prajan2425/mern-2083/blob/main/src/models/Products.js"
click node_order_model "https://github.com/prajan2425/mern-2083/blob/main/src/models/Order.js"
click node_payment_model "https://github.com/prajan2425/mern-2083/blob/main/src/models/Payment.js"
click node_auth_controller "https://github.com/prajan2425/mern-2083/blob/main/src/controllers/auth.controller.js"
click node_user_controller "https://github.com/prajan2425/mern-2083/blob/main/src/controllers/user.controller.js"
click node_auth_service "https://github.com/prajan2425/mern-2083/blob/main/src/services/auth.service.js"
click node_user_service "https://github.com/prajan2425/mern-2083/blob/main/src/services/user.service.js"
click node_auth_middleware "https://github.com/prajan2425/mern-2083/blob/main/src/middlewares/auth.js"
click node_jwt "https://github.com/prajan2425/mern-2083/blob/main/src/utils/jwt.js"
click node_user_model "https://github.com/prajan2425/mern-2083/blob/main/src/models/User.js"
click node_database "https://github.com/prajan2425/mern-2083/blob/main/src/config/database.js"
click node_payment_util "https://github.com/prajan2425/mern-2083/blob/main/src/utils/payment.js"
click node_email_util "https://github.com/prajan2425/mern-2083/blob/main/src/utils/email.js"
click node_image_util "https://github.com/prajan2425/mern-2083/blob/main/src/utils/fileUploader.js"

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_server,node_product_routes,node_order_routes,node_user_routes,node_auth_routes,node_page_routes,node_client toneBlue
class node_product_controller,node_order_controller,node_page_controller,node_product_service,node_order_service toneAmber
class node_auth_controller,node_user_controller,node_auth_service,node_user_service,node_auth_middleware,node_jwt toneMint
class node_product_model,node_order_model,node_payment_model,node_user_model,node_database,node_payment_util,node_email_util,node_image_util toneRose
class node_payment_gateway,node_cloudinary toneIndigo
```

## Components

### HTTP entry

- [Express server](https://github.com/prajan2425/mern-2083/blob/main/src/server.js): `src/server.js`
- [Product routes](https://github.com/prajan2425/mern-2083/blob/main/src/routes/product.route.js): `src/routes/product.route.js`
- [Order routes](https://github.com/prajan2425/mern-2083/blob/main/src/routes/order.route.js): `src/routes/order.route.js`
- [User routes](https://github.com/prajan2425/mern-2083/blob/main/src/routes/user.route.js): `src/routes/user.route.js`
- [Auth routes](https://github.com/prajan2425/mern-2083/blob/main/src/routes/auth.route.js): `src/routes/auth.route.js`
- [Page routes](https://github.com/prajan2425/mern-2083/blob/main/src/routes/page.route.js): `src/routes/page.route.js`

### Commerce workflows

- [Product controller](https://github.com/prajan2425/mern-2083/blob/main/src/controllers/product.controller.js): `src/controllers/product.controller.js`
- [Order controller](https://github.com/prajan2425/mern-2083/blob/main/src/controllers/order.controller.js): `src/controllers/order.controller.js`
- [Page controller](https://github.com/prajan2425/mern-2083/blob/main/src/controllers/page.controller.js): `src/controllers/page.controller.js`
- [Product service](https://github.com/prajan2425/mern-2083/blob/main/src/services/product.service.js): `src/services/product.service.js`
- [Order service](https://github.com/prajan2425/mern-2083/blob/main/src/services/order.service.js): `src/services/order.service.js`

### Identity and access

- [Auth controller](https://github.com/prajan2425/mern-2083/blob/main/src/controllers/auth.controller.js): `src/controllers/auth.controller.js`
- [User controller](https://github.com/prajan2425/mern-2083/blob/main/src/controllers/user.controller.js): `src/controllers/user.controller.js`
- [Auth service](https://github.com/prajan2425/mern-2083/blob/main/src/services/auth.service.js): `src/services/auth.service.js`
- [User service](https://github.com/prajan2425/mern-2083/blob/main/src/services/user.service.js): `src/services/user.service.js`
- [JWT middleware](https://github.com/prajan2425/mern-2083/blob/main/src/middlewares/auth.js): `src/middlewares/auth.js`
- [JWT utility](https://github.com/prajan2425/mern-2083/blob/main/src/utils/jwt.js): `src/utils/jwt.js`

### Data and integrations

- [Product records](https://github.com/prajan2425/mern-2083/blob/main/src/models/Products.js): `src/models/Products.js`
- [Order records](https://github.com/prajan2425/mern-2083/blob/main/src/models/Order.js): `src/models/Order.js`
- [Payment records](https://github.com/prajan2425/mern-2083/blob/main/src/models/Payment.js): `src/models/Payment.js`
- [User records](https://github.com/prajan2425/mern-2083/blob/main/src/models/User.js): `src/models/User.js`
- [MongoDB connection](https://github.com/prajan2425/mern-2083/blob/main/src/config/database.js): `src/config/database.js`
- [Khalti payment](https://github.com/prajan2425/mern-2083/blob/main/src/utils/payment.js): `src/utils/payment.js`
- [Email utility](https://github.com/prajan2425/mern-2083/blob/main/src/utils/email.js): `src/utils/email.js`
- [Image uploader](https://github.com/prajan2425/mern-2083/blob/main/src/utils/fileUploader.js): `src/utils/fileUploader.js`

### Other components

- **Client**
- **Khalti gateway**
- **Cloudinary**

## Connections

- Client → Express server: sends requests
- Express server → Product routes: mounts
- Express server → Order routes: mounts
- Express server → User routes: mounts
- Express server → Auth routes: mounts
- Express server → Page routes: mounts
- Express server → JWT middleware: guards users/orders
- Express server → MongoDB connection: connects
- Express server → Cloudinary: connects
- Order controller → Order service: calls
- Product controller → Product service: calls
- Page controller → Product service: calls
- Auth controller → Auth service: calls
- Auth controller → JWT utility: creates token
- User controller → User service: calls
- JWT middleware → JWT utility: verifies token
- Order service → Order records: reads/writes
- Order service → Payment records: reads/writes
- Order service → User service: gets user
- Order service → Khalti payment: requests payment
- Khalti payment → Khalti gateway: processes payment
- Product service → Product records: reads/writes
- User service → User records: reads/writes
- User service → Auth service: registers user
- User service → Image uploader: uploads image
- Auth service → User records: reads/writes
- Auth service → Email utility: sends reset email
