# athulkrishnaaj/aromaticaorg architecture

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

- Interactive diagram: https://gitdiagram.com/athulkrishnaaj/aromaticaorg
- Repository: https://github.com/athulkrishnaaj/aromaticaorg

## Overview

This is a server-rendered e-commerce application with customer shopping and account flows plus an admin back office. Customer requests enter through the user routes, are handled by controllers, and read or update MongoDB-backed domain models; checkout places orders and updates inventory and cart state. Admin routes cover catalog, customer, order, coupon, offer, and sales management. The source index documents controller-to-model references, while excerpts show selected checkout, offer, authentication, and routing behavior; other links are limited to those references.

Main entry points: [`controllers/orderController.js`](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/orderController.js) (Checkout and orders), [`controllers/userController.js`](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/userController.js) (Account and catalog), [`routes/adminRoute.js`](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/routes/adminRoute.js) (Admin routes), [`routes/userRoute.js`](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/routes/userRoute.js) (Customer routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application entry"]
  node_user_routes["Customer routes<br/>[userRoute.js]"]
  node_admin_routes["Admin routes<br/>[adminRoute.js]"]
  node_auth["Access checks<br/>[auth.js]"]
end

subgraph group_customer["Customer commerce"]
  node_user_controller["Account and catalog<br/>[userController.js]"]
  node_cart_controller["Cart<br/>[cartController.js]"]
  node_order_controller["Checkout and orders<br/>[orderController.js]"]
  node_wishlist_controller["Wishlist"]
  node_wallet_controller["Wallet"]
  node_coupon_controller["Coupons"]
end

subgraph group_admin["Admin operations"]
  node_admin_controller["Dashboard and reports<br/>[adminController.js]"]
  node_catalog_admin["Catalog management"]
  node_category_admin["Category management"]
  node_customer_admin["Customer management"]
  node_offer_admin["Offer management<br/>[offerController.js]"]
end

subgraph group_data["Domain data"]
  node_address_data[("Addresses<br/>[addressModel.js]")]
  node_cart_data[("Cart records<br/>[cartModel.js]")]
  node_category_data[("Categories<br/>[categoryModel.js]")]
  node_coupon_data[("Coupons<br/>[couponModel.js]")]
  node_offer_data[("Offers<br/>[offerModel.js]")]
  node_order_data[("Orders<br/>[orderModel.js]")]
  node_product_data[("Products<br/>[productModel.js]")]
  node_user_data[("Users<br/>[userModel.js]")]
  node_wallet_data[("Wallets<br/>[walletModel.js]")]
  node_wishlist_data[("Wishlists<br/>[wihslistModel.js]")]
end

node_shopper(("Shopper"))
node_administrator(("Administrator"))
node_razorpay["Razorpay"]

node_shopper -->|"requests"| node_user_routes
node_user_routes -->|"routes to"| node_user_controller
node_user_routes -->|"routes to"| node_cart_controller
node_user_routes -->|"routes to"| node_order_controller
node_user_routes -->|"routes to"| node_wishlist_controller
node_user_routes -->|"routes to"| node_coupon_controller
node_user_routes -->|"routes to"| node_wallet_controller
node_user_routes -->|"guards with"| node_auth
node_administrator -->|"requests"| node_admin_routes
node_admin_routes -->|"guards with"| node_auth
node_admin_routes -->|"routes to"| node_admin_controller
node_admin_routes -->|"routes to"| node_catalog_admin
node_admin_routes -->|"routes to"| node_category_admin
node_admin_routes -->|"routes to"| node_customer_admin
node_admin_routes -->|"routes to"| node_order_controller
node_admin_routes -->|"routes to"| node_coupon_controller
node_admin_routes -->|"routes to"| node_offer_admin
node_auth -->|"checks account"| node_user_data
node_user_controller -->|"reads and updates"| node_user_data
node_user_controller -->|"reads"| node_product_data
node_user_controller -->|"reads"| node_category_data
node_user_controller -->|"reads offers"| node_offer_data
node_user_controller -->|"manages addresses"| node_address_data
node_user_controller -->|"reads orders"| node_order_data
node_user_controller -->|"reads wallet"| node_wallet_data
node_user_controller -->|"reads wishlist"| node_wishlist_data
node_user_controller -->|"reads cart"| node_cart_data
node_cart_controller -->|"reads"| node_product_data
node_cart_controller -->|"reads"| node_user_data
node_cart_controller -->|"updates"| node_cart_data
node_cart_controller -->|"reads"| node_coupon_data
node_cart_controller -->|"reads"| node_wishlist_data
node_order_controller -->|"reads"| node_user_data
node_order_controller -->|"updates inventory"| node_product_data
node_order_controller -->|"reads and clears"| node_cart_data
node_order_controller -->|"reads and updates"| node_address_data
node_order_controller -->|"creates and updates"| node_order_data
node_order_controller -->|"reads"| node_coupon_data
node_order_controller -->|"updates"| node_wallet_data
node_order_controller -->|"updates"| node_wishlist_data
node_order_controller -.->|"initializes payment"| node_razorpay
node_wishlist_controller -->|"updates"| node_wishlist_data
node_wishlist_controller -->|"reads"| node_product_data
node_wishlist_controller -->|"updates"| node_cart_data
node_wallet_controller -->|"updates"| node_wallet_data
node_wallet_controller -->|"reads"| node_user_data
node_coupon_controller -->|"manages"| node_coupon_data
node_coupon_controller -->|"updates"| node_cart_data

click node_user_routes "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/routes/userRoute.js"
click node_admin_routes "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/routes/adminRoute.js"
click node_auth "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/Authentication/auth.js"
click node_user_controller "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/userController.js"
click node_cart_controller "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/cartController.js"
click node_order_controller "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/orderController.js"
click node_wishlist_controller "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/wishlistController.js"
click node_wallet_controller "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/walletController.js"
click node_coupon_controller "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/couponController.js"
click node_admin_controller "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/adminController.js"
click node_catalog_admin "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/productController.js"
click node_category_admin "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/categoryController.js"
click node_customer_admin "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/customerController.js"
click node_offer_admin "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/offerController.js"
click node_address_data "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/addressModel.js"
click node_cart_data "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/cartModel.js"
click node_category_data "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/categoryModel.js"
click node_coupon_data "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/couponModel.js"
click node_offer_data "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/offerModel.js"
click node_order_data "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/orderModel.js"
click node_product_data "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/productModel.js"
click node_user_data "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/userModel.js"
click node_wallet_data "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/walletModel.js"
click node_wishlist_data "https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/wihslistModel.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_user_routes,node_admin_routes,node_auth toneBlue
class node_user_controller,node_cart_controller,node_order_controller,node_wishlist_controller,node_wallet_controller,node_coupon_controller toneAmber
class node_admin_controller,node_catalog_admin,node_category_admin,node_customer_admin,node_offer_admin toneMint
class node_address_data,node_cart_data,node_category_data,node_coupon_data,node_offer_data,node_order_data,node_product_data,node_user_data,node_wallet_data,node_wishlist_data toneRose
class node_shopper,node_administrator,node_razorpay toneIndigo
```

## Components

### Application entry

- [Customer routes](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/routes/userRoute.js): `routes/userRoute.js`
- [Admin routes](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/routes/adminRoute.js): `routes/adminRoute.js`
- [Access checks](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/Authentication/auth.js): `Authentication/auth.js`

### Customer commerce

- [Account and catalog](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/userController.js): `controllers/userController.js`
- [Cart](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/cartController.js): `controllers/cartController.js`
- [Checkout and orders](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/orderController.js): `controllers/orderController.js`
- [Wishlist](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/wishlistController.js): `controllers/wishlistController.js`
- [Wallet](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/walletController.js): `controllers/walletController.js`
- [Coupons](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/couponController.js): `controllers/couponController.js`

### Admin operations

- [Dashboard and reports](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/adminController.js): `controllers/adminController.js`
- [Catalog management](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/productController.js): `controllers/productController.js`
- [Category management](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/categoryController.js): `controllers/categoryController.js`
- [Customer management](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/customerController.js): `controllers/customerController.js`
- [Offer management](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/controllers/offerController.js): `controllers/offerController.js`

### Domain data

- [Addresses](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/addressModel.js): `models/addressModel.js`
- [Cart records](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/cartModel.js): `models/cartModel.js`
- [Categories](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/categoryModel.js): `models/categoryModel.js`
- [Coupons](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/couponModel.js): `models/couponModel.js`
- [Offers](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/offerModel.js): `models/offerModel.js`
- [Orders](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/orderModel.js): `models/orderModel.js`
- [Products](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/productModel.js): `models/productModel.js`
- [Users](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/userModel.js): `models/userModel.js`
- [Wallets](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/walletModel.js): `models/walletModel.js`
- [Wishlists](https://github.com/athulkrishnaaj/aromaticaorg/blob/master/models/wihslistModel.js): `models/wihslistModel.js`

### Other components

- **Shopper**
- **Administrator**
- **Razorpay**

## Connections

- Shopper → Customer routes: requests (evidence: `routes/userRoute.js`)
- Customer routes → Account and catalog: routes to (evidence: `routes/userRoute.js`)
- Customer routes → Cart: routes to (evidence: `routes/userRoute.js`)
- Customer routes → Checkout and orders: routes to (evidence: `routes/userRoute.js`)
- Customer routes → Wishlist: routes to (evidence: `routes/userRoute.js`)
- Customer routes → Coupons: routes to (evidence: `routes/userRoute.js`)
- Customer routes → Wallet: routes to (evidence: `routes/userRoute.js`)
- Customer routes → Access checks: guards with (evidence: `routes/userRoute.js`)
- Administrator → Admin routes: requests (evidence: `routes/adminRoute.js`)
- Admin routes → Access checks: guards with (evidence: `routes/adminRoute.js`)
- Admin routes → Dashboard and reports: routes to (evidence: `routes/adminRoute.js`)
- Admin routes → Catalog management: routes to (evidence: `routes/adminRoute.js`)
- Admin routes → Category management: routes to (evidence: `routes/adminRoute.js`)
- Admin routes → Customer management: routes to (evidence: `routes/adminRoute.js`)
- Admin routes → Checkout and orders: routes to (evidence: `routes/adminRoute.js`)
- Admin routes → Coupons: routes to (evidence: `routes/adminRoute.js`)
- Admin routes → Offer management: routes to (evidence: `routes/adminRoute.js`)
- Access checks → Users: checks account (evidence: `Authentication/auth.js`)
- Account and catalog → Users: reads and updates (evidence: `controllers/userController.js`)
- Account and catalog → Products: reads (evidence: `controllers/userController.js`)
- Account and catalog → Categories: reads (evidence: `controllers/userController.js`)
- Account and catalog → Offers: reads offers (evidence: `controllers/userController.js`)
- Account and catalog → Addresses: manages addresses (evidence: `controllers/userController.js`)
- Account and catalog → Orders: reads orders (evidence: `controllers/userController.js`)
- Account and catalog → Wallets: reads wallet (evidence: `controllers/userController.js`)
- Account and catalog → Wishlists: reads wishlist (evidence: `controllers/userController.js`)
- Account and catalog → Cart records: reads cart (evidence: `controllers/userController.js`)
- Cart → Products: reads (evidence: `controllers/cartController.js`)
- Cart → Users: reads (evidence: `controllers/cartController.js`)
- Cart → Cart records: updates (evidence: `controllers/cartController.js`)
- Cart → Coupons: reads (evidence: `controllers/cartController.js`)
- Cart → Wishlists: reads (evidence: `controllers/cartController.js`)
- Checkout and orders → Users: reads (evidence: `controllers/orderController.js`)
- Checkout and orders → Products: updates inventory (evidence: `controllers/orderController.js`)
- Checkout and orders → Cart records: reads and clears (evidence: `controllers/orderController.js`)
- Checkout and orders → Addresses: reads and updates (evidence: `controllers/orderController.js`)
- Checkout and orders → Orders: creates and updates (evidence: `controllers/orderController.js`)
- Checkout and orders → Coupons: reads (evidence: `controllers/orderController.js`)
- Checkout and orders → Wallets: updates (evidence: `controllers/orderController.js`)
- Checkout and orders → Wishlists: updates (evidence: `controllers/orderController.js`)
- Checkout and orders → Razorpay: initializes payment
- Wishlist → Wishlists: updates (evidence: `controllers/wishlistController.js`)
- Wishlist → Products: reads (evidence: `controllers/wishlistController.js`)
- Wishlist → Cart records: updates (evidence: `controllers/wishlistController.js`)
- Wallet → Wallets: updates (evidence: `controllers/walletController.js`)
- Wallet → Users: reads (evidence: `controllers/walletController.js`)
- Coupons → Coupons: manages (evidence: `controllers/couponController.js`)
- Coupons → Cart records: updates (evidence: `controllers/couponController.js`)
