# hasanasiabd/ecommerce architecture

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

- Interactive diagram: https://gitdiagram.com/hasanasiabd/ecommerce
- Repository: https://github.com/hasanasiabd/ecommerce

## Overview

MyShop is a Next.js storefront with customer accounts, persistent cart and wishlist, Stripe checkout, and separate admin and developer panels. The main purchase path is browsing products, maintaining a cart, creating a payment session, and receiving payment updates; account registration adds email OTP verification, while developers manage admin accounts and admins manage catalog and orders. The graph preserves these domains and the shared authentication and persistence layer. Some pages and routes were not sampled, so their internal calls and UI-to-API wiring are not asserted.

Main entry points: [`src/lib/db.ts`](https://github.com/hasanasiabd/ecommerce/blob/main/src/lib/db.ts) (Application database), [`src/lib/auth.ts`](https://github.com/hasanasiabd/ecommerce/blob/main/src/lib/auth.ts) (Session auth), [`src/lib/stripe.ts`](https://github.com/hasanasiabd/ecommerce/blob/main/src/lib/stripe.ts) (Stripe client), [`src/components/navbar.tsx`](https://github.com/hasanasiabd/ecommerce/blob/main/src/components/navbar.tsx) (Store navigation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_storefront["Storefront"]
  node_storefront_ui["Storefront pages"]
  node_navigation["Store navigation<br/>[navbar.tsx]"]
  node_catalog_api["Product catalog API<br/>[route.ts]"]
  node_category_api["Category API<br/>[route.ts]"]
end

subgraph group_accounts["Accounts"]
  node_account_ui["Account pages<br/>[page.tsx]"]
  node_auth_login["Login API<br/>[route.ts]"]
  node_auth_register["Registration API<br/>[route.ts]"]
  node_auth_verify["OTP verification API<br/>[route.ts]"]
  node_otp["OTP service<br/>[otp.ts]"]
  node_session_auth["Session auth<br/>[auth.ts]"]
  node_resend["Resend service<br/>[resend.ts]"]
end

subgraph group_commerce["Commerce"]
  node_cart_api["Cart API<br/>[route.ts]"]
  node_wishlist_api["Wishlist API<br/>[route.ts]"]
  node_checkout_api["Checkout session API<br/>[route.ts]"]
  node_checkout_status["Checkout status API<br/>[route.ts]"]
  node_checkout_cancel["Checkout cancel API<br/>[route.ts]"]
  node_orders_api["Customer orders API<br/>[route.ts]"]
  node_stripe_webhook["Payment webhook<br/>[route.ts]"]
  node_stripe_lib["Stripe client<br/>[stripe.ts]"]
end

subgraph group_operations["Management"]
  node_admin_ui["Admin panel"]
  node_admin_api["Admin catalog and orders APIs"]
  node_developer_ui["Developer panel"]
  node_developer_api["Admin account API<br/>[route.ts]"]
  node_upload_api["Image upload API<br/>[route.ts]"]
  node_cloudinary["Cloudinary client<br/>[cloudinary.ts]"]
end

subgraph group_platform["Shared services"]
  node_database[("Application database<br/>[db.ts]")]
  node_env["Panel configuration<br/>[env.ts]"]
end

node_customer(("Customer"))
node_stripe["Stripe"]
node_email["Email delivery"]

node_auth_login -->|"creates OTP"| node_otp
node_auth_login -->|"sends code"| node_resend
node_auth_login -->|"checks account"| node_database
node_auth_login -->|"creates session"| node_session_auth
node_auth_register -->|"creates OTP"| node_otp
node_auth_register -->|"sends code"| node_resend
node_auth_verify -->|"verifies code"| node_otp
node_auth_verify -->|"creates account"| node_database
node_auth_verify -->|"creates session"| node_session_auth
node_otp -->|"stores codes"| node_database
node_session_auth -->|"validates user"| node_database
node_cart_api -->|"checks session"| node_session_auth
node_cart_api -->|"reads and writes"| node_database
node_wishlist_api -->|"checks session"| node_session_auth
node_wishlist_api -->|"reads and writes"| node_database
node_catalog_api -->|"reads catalog"| node_database
node_category_api -->|"reads categories"| node_database
node_checkout_api -->|"checks session"| node_session_auth
node_checkout_api -->|"locks stock and orders"| node_database
node_checkout_api -->|"creates payment session"| node_stripe_lib
node_stripe_lib -.->|"connects to"| node_stripe
node_checkout_status -->|"checks session"| node_session_auth
node_checkout_status -->|"reads order state"| node_database
node_checkout_status -->|"uses payment client"| node_stripe_lib
node_checkout_cancel -->|"checks session"| node_session_auth
node_checkout_cancel -->|"updates order"| node_database
node_checkout_cancel -->|"uses payment client"| node_stripe_lib
node_stripe_webhook -->|"updates payment records"| node_database
node_stripe_webhook -->|"uses payment client"| node_stripe_lib
node_orders_api -->|"checks session"| node_session_auth
node_orders_api -->|"reads orders"| node_database
node_admin_api -->|"checks session"| node_session_auth
node_admin_api -->|"manages records"| node_database
node_developer_api -->|"checks session"| node_session_auth
node_developer_api -->|"manages admins"| node_database
node_developer_api -->|"reads panel path"| node_env
node_upload_api -->|"uploads images"| node_cloudinary
node_navigation -->|"reads session"| node_session_auth
node_navigation -->|"gets panel paths"| node_env
node_navigation -->|"counts cart items"| node_database
node_navigation -->|"links storefront"| node_storefront_ui

click node_storefront_ui "https://github.com/hasanasiabd/ecommerce/tree/main/src/app"
click node_navigation "https://github.com/hasanasiabd/ecommerce/blob/main/src/components/navbar.tsx"
click node_catalog_api "https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/products/route.ts"
click node_category_api "https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/categories/route.ts"
click node_account_ui "https://github.com/hasanasiabd/ecommerce/blob/main/src/app/login/page.tsx"
click node_auth_login "https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/auth/login/route.ts"
click node_auth_register "https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/auth/register/route.ts"
click node_auth_verify "https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/auth/verify-otp/route.ts"
click node_otp "https://github.com/hasanasiabd/ecommerce/blob/main/src/lib/otp.ts"
click node_session_auth "https://github.com/hasanasiabd/ecommerce/blob/main/src/lib/auth.ts"
click node_cart_api "https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/cart/route.ts"
click node_wishlist_api "https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/wishlist/route.ts"
click node_checkout_api "https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/checkout/session/route.ts"
click node_checkout_status "https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/checkout/status/route.ts"
click node_checkout_cancel "https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/checkout/cancel/route.ts"
click node_orders_api "https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/orders/route.ts"
click node_stripe_webhook "https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/stripe/webhook/route.ts"
click node_stripe_lib "https://github.com/hasanasiabd/ecommerce/blob/main/src/lib/stripe.ts"
click node_admin_ui "https://github.com/hasanasiabd/ecommerce/tree/main/src/app/admin"
click node_admin_api "https://github.com/hasanasiabd/ecommerce/tree/main/src/app/api/admin"
click node_developer_ui "https://github.com/hasanasiabd/ecommerce/tree/main/src/app/developer"
click node_developer_api "https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/developer/admins/route.ts"
click node_upload_api "https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/admin/upload/route.ts"
click node_cloudinary "https://github.com/hasanasiabd/ecommerce/blob/main/src/lib/cloudinary.ts"
click node_resend "https://github.com/hasanasiabd/ecommerce/blob/main/src/lib/resend.ts"
click node_database "https://github.com/hasanasiabd/ecommerce/blob/main/src/lib/db.ts"
click node_env "https://github.com/hasanasiabd/ecommerce/blob/main/src/lib/env.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_storefront_ui,node_navigation,node_catalog_api,node_category_api toneBlue
class node_account_ui,node_auth_login,node_auth_register,node_auth_verify,node_otp,node_session_auth,node_resend toneAmber
class node_cart_api,node_wishlist_api,node_checkout_api,node_checkout_status,node_checkout_cancel,node_orders_api,node_stripe_webhook,node_stripe_lib toneMint
class node_admin_ui,node_admin_api,node_developer_ui,node_developer_api,node_upload_api,node_cloudinary toneRose
class node_database,node_env,node_customer,node_stripe,node_email toneIndigo
```

## Components

### Storefront

- [Storefront pages](https://github.com/hasanasiabd/ecommerce/tree/main/src/app): `src/app`
- [Store navigation](https://github.com/hasanasiabd/ecommerce/blob/main/src/components/navbar.tsx): `src/components/navbar.tsx`
- [Product catalog API](https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/products/route.ts): `src/app/api/products/route.ts`
- [Category API](https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/categories/route.ts): `src/app/api/categories/route.ts`

### Accounts

- [Account pages](https://github.com/hasanasiabd/ecommerce/blob/main/src/app/login/page.tsx): `src/app/login/page.tsx`
- [Login API](https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/auth/login/route.ts): `src/app/api/auth/login/route.ts`
- [Registration API](https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/auth/register/route.ts): `src/app/api/auth/register/route.ts`
- [OTP verification API](https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/auth/verify-otp/route.ts): `src/app/api/auth/verify-otp/route.ts`
- [OTP service](https://github.com/hasanasiabd/ecommerce/blob/main/src/lib/otp.ts): `src/lib/otp.ts`
- [Session auth](https://github.com/hasanasiabd/ecommerce/blob/main/src/lib/auth.ts): `src/lib/auth.ts`
- [Resend service](https://github.com/hasanasiabd/ecommerce/blob/main/src/lib/resend.ts): `src/lib/resend.ts`

### Commerce

- [Cart API](https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/cart/route.ts): `src/app/api/cart/route.ts`
- [Wishlist API](https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/wishlist/route.ts): `src/app/api/wishlist/route.ts`
- [Checkout session API](https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/checkout/session/route.ts): `src/app/api/checkout/session/route.ts`
- [Checkout status API](https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/checkout/status/route.ts): `src/app/api/checkout/status/route.ts`
- [Checkout cancel API](https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/checkout/cancel/route.ts): `src/app/api/checkout/cancel/route.ts`
- [Customer orders API](https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/orders/route.ts): `src/app/api/orders/route.ts`
- [Payment webhook](https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/stripe/webhook/route.ts): `src/app/api/stripe/webhook/route.ts`
- [Stripe client](https://github.com/hasanasiabd/ecommerce/blob/main/src/lib/stripe.ts): `src/lib/stripe.ts`

### Management

- [Admin panel](https://github.com/hasanasiabd/ecommerce/tree/main/src/app/admin): `src/app/admin`
- [Admin catalog and orders APIs](https://github.com/hasanasiabd/ecommerce/tree/main/src/app/api/admin): `src/app/api/admin`
- [Developer panel](https://github.com/hasanasiabd/ecommerce/tree/main/src/app/developer): `src/app/developer`
- [Admin account API](https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/developer/admins/route.ts): `src/app/api/developer/admins/route.ts`
- [Image upload API](https://github.com/hasanasiabd/ecommerce/blob/main/src/app/api/admin/upload/route.ts): `src/app/api/admin/upload/route.ts`
- [Cloudinary client](https://github.com/hasanasiabd/ecommerce/blob/main/src/lib/cloudinary.ts): `src/lib/cloudinary.ts`

### Shared services

- [Application database](https://github.com/hasanasiabd/ecommerce/blob/main/src/lib/db.ts): `src/lib/db.ts`
- [Panel configuration](https://github.com/hasanasiabd/ecommerce/blob/main/src/lib/env.ts): `src/lib/env.ts`

### Other components

- **Customer**
- **Stripe**
- **Email delivery**

## Connections

- Login API → OTP service: creates OTP (evidence: `src/app/api/auth/login/route.ts`)
- Login API → Resend service: sends code (evidence: `src/app/api/auth/login/route.ts`)
- Login API → Application database: checks account (evidence: `src/app/api/auth/login/route.ts`)
- Login API → Session auth: creates session (evidence: `src/app/api/auth/login/route.ts`)
- Registration API → OTP service: creates OTP (evidence: `src/app/api/auth/register/route.ts`)
- Registration API → Resend service: sends code (evidence: `src/app/api/auth/register/route.ts`)
- OTP verification API → OTP service: verifies code (evidence: `src/app/api/auth/verify-otp/route.ts`)
- OTP verification API → Application database: creates account (evidence: `src/app/api/auth/verify-otp/route.ts`)
- OTP verification API → Session auth: creates session (evidence: `src/app/api/auth/verify-otp/route.ts`)
- OTP service → Application database: stores codes (evidence: `src/lib/otp.ts`)
- Session auth → Application database: validates user (evidence: `src/lib/auth.ts`)
- Cart API → Session auth: checks session (evidence: `src/app/api/cart/route.ts`)
- Cart API → Application database: reads and writes (evidence: `src/app/api/cart/route.ts`)
- Wishlist API → Session auth: checks session (evidence: `src/app/api/wishlist/route.ts`)
- Wishlist API → Application database: reads and writes (evidence: `src/app/api/wishlist/route.ts`)
- Product catalog API → Application database: reads catalog (evidence: `src/app/api/products/route.ts`)
- Category API → Application database: reads categories (evidence: `src/app/api/categories/route.ts`)
- Checkout session API → Session auth: checks session (evidence: `src/app/api/checkout/session/route.ts`)
- Checkout session API → Application database: locks stock and orders (evidence: `src/app/api/checkout/session/route.ts`)
- Checkout session API → Stripe client: creates payment session (evidence: `src/app/api/checkout/session/route.ts`)
- Stripe client → Stripe: connects to
- Checkout status API → Session auth: checks session (evidence: `src/app/api/checkout/status/route.ts`)
- Checkout status API → Application database: reads order state (evidence: `src/app/api/checkout/status/route.ts`)
- Checkout status API → Stripe client: uses payment client (evidence: `src/app/api/checkout/status/route.ts`)
- Checkout cancel API → Session auth: checks session (evidence: `src/app/api/checkout/cancel/route.ts`)
- Checkout cancel API → Application database: updates order (evidence: `src/app/api/checkout/cancel/route.ts`)
- Checkout cancel API → Stripe client: uses payment client (evidence: `src/app/api/checkout/cancel/route.ts`)
- Payment webhook → Application database: updates payment records (evidence: `src/app/api/stripe/webhook/route.ts`)
- Payment webhook → Stripe client: uses payment client (evidence: `src/app/api/stripe/webhook/route.ts`)
- Customer orders API → Session auth: checks session (evidence: `src/app/api/orders/route.ts`)
- Customer orders API → Application database: reads orders (evidence: `src/app/api/orders/route.ts`)
- Admin catalog and orders APIs → Session auth: checks session (evidence: `src/app/api/admin/products/route.ts`)
- Admin catalog and orders APIs → Application database: manages records (evidence: `src/app/api/admin/products/route.ts`)
- Admin account API → Session auth: checks session (evidence: `src/app/api/developer/admins/route.ts`)
- Admin account API → Application database: manages admins (evidence: `src/app/api/developer/admins/route.ts`)
- Admin account API → Panel configuration: reads panel path (evidence: `src/app/api/developer/admins/route.ts`)
- Image upload API → Cloudinary client: uploads images (evidence: `src/app/api/admin/upload/route.ts`)
- Store navigation → Session auth: reads session (evidence: `src/components/navbar.tsx`)
- Store navigation → Panel configuration: gets panel paths (evidence: `src/components/navbar.tsx`)
- Store navigation → Application database: counts cart items (evidence: `src/components/navbar.tsx`)
- Store navigation → Storefront pages: links storefront (evidence: `src/components/navbar.tsx`)
