# johnitopaisah/ecommerce-platform architecture

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

## Overview

ShopNow is an e-commerce platform with a customer storefront and a separate admin panel backed by a Django REST API. The customer workflow spans account access, product discovery, a persistent basket, checkout, payment, and order history; administrators manage catalog, orders, and users. The API routes requests to domain handlers, which use domain models and supporting services. The README documents PostgreSQL, Redis, and Stripe; some storage and payment implementation details were not sampled, so those connections are documented or marked unverified rather than inferred from code.

Main entry points: [`api/config/urls.py`](https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/config/urls.py) (API Route Configuration), [`api/apps/orders/views.py`](https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/orders/views.py) (Order Lifecycle), [`user-ui/src/lib/services.ts`](https://github.com/johnitopaisah/ecommerce-platform/blob/main/user-ui/src/lib/services.ts) (Customer API Services), [`api/apps/store/models.py`](https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/store/models.py) (Catalog Models)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_customer["Customer Storefront"]
  node_storefront["Storefront Pages"]
  node_basketpage["Basket and Checkout<br/>[page.tsx]"]
  node_accountpages["Account Pages"]
  node_userapi["Customer API Services<br/>[services.ts]"]
end

subgraph group_admin["Admin Panel"]
  node_adminpages["Admin Screens"]
  node_adminservices["Admin API Services<br/>[services.ts]"]
end

subgraph group_api["API and Domain"]
  node_routing["API Route Configuration<br/>[urls.py]"]
  node_accounts["Account and Authentication<br/>[views.py]"]
  node_catalog["Catalog and Inventory<br/>[views.py]"]
  node_catalogadmin["Catalog Administration<br/>[admin_views.py]"]
  node_basketservice["Basket Operations<br/>[service.py]"]
  node_orders["Order Lifecycle<br/>[views.py]"]
  node_orderadmin["Manual Payment Confirmation<br/>[admin_views.py]"]
  node_payments["Payment Integration<br/>[views.py]"]
  node_storemodels["Catalog Models<br/>[models.py]"]
  node_email["Email Service<br/>[email.py]"]
end

subgraph group_infra["Persistence and Integrations"]
  node_database[("PostgreSQL")]
  node_redis[("Redis Basket Store")]
  node_stripe["Stripe"]
end

node_shopper(("Shopper"))
node_adminuser(("Administrator"))

node_shopper -->|"browses"| node_storefront
node_shopper -->|"checks out"| node_basketpage
node_shopper -->|"manages account"| node_accountpages
node_adminuser -->|"manages store"| node_adminpages
node_storefront -->|"requests data"| node_userapi
node_basketpage -->|"requests basket and orders"| node_userapi
node_accountpages -->|"requests account"| node_userapi
node_userapi -->|"calls API endpoints"| node_routing
node_adminpages -->|"requests admin actions"| node_adminservices
node_adminservices -.->|"calls API endpoints"| node_routing
node_routing -->|"routes auth"| node_accounts
node_routing -->|"routes catalog"| node_catalog
node_routing -->|"routes catalog admin"| node_catalogadmin
node_routing -->|"routes orders"| node_orders
node_routing -->|"routes payment confirmation"| node_orderadmin
node_routing -->|"routes payment"| node_payments
node_orders -->|"reads basket summary"| node_basketservice
node_orders -->|"sends confirmation"| node_email
node_accounts -->|"sends account mail"| node_email
node_catalog -->|"queries catalog"| node_storemodels
node_catalogadmin -->|"manages catalog records"| node_storemodels
node_basketservice -->|"loads product details"| node_storemodels
node_storemodels -.->|"persists catalog"| node_database
node_basketservice -.->|"reads and writes basket"| node_redis
node_payments -.->|"processes payments"| node_stripe
node_orderadmin -->|"updates order status"| node_orders

click node_storefront "https://github.com/johnitopaisah/ecommerce-platform/tree/main/user-ui/src/app"
click node_basketpage "https://github.com/johnitopaisah/ecommerce-platform/blob/main/user-ui/src/app/basket/page.tsx"
click node_accountpages "https://github.com/johnitopaisah/ecommerce-platform/tree/main/user-ui/src/app/account"
click node_userapi "https://github.com/johnitopaisah/ecommerce-platform/blob/main/user-ui/src/lib/services.ts"
click node_adminpages "https://github.com/johnitopaisah/ecommerce-platform/tree/main/admin-ui/src/app/(admin)"
click node_adminservices "https://github.com/johnitopaisah/ecommerce-platform/blob/main/admin-ui/src/lib/services.ts"
click node_routing "https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/config/urls.py"
click node_accounts "https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/account/views.py"
click node_catalog "https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/store/views.py"
click node_catalogadmin "https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/store/admin_views.py"
click node_basketservice "https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/basket/service.py"
click node_orders "https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/orders/views.py"
click node_orderadmin "https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/orders/admin_views.py"
click node_payments "https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/payment/views.py"
click node_storemodels "https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/store/models.py"
click node_email "https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/core/email.py"

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,node_basketpage,node_accountpages,node_userapi toneBlue
class node_adminpages,node_adminservices toneAmber
class node_routing,node_accounts,node_catalog,node_catalogadmin,node_basketservice,node_orders,node_orderadmin,node_payments,node_storemodels,node_email toneMint
class node_database,node_redis,node_stripe toneRose
class node_shopper,node_adminuser toneIndigo
```

## Components

### Customer Storefront

- [Storefront Pages](https://github.com/johnitopaisah/ecommerce-platform/tree/main/user-ui/src/app): `user-ui/src/app`
- [Basket and Checkout](https://github.com/johnitopaisah/ecommerce-platform/blob/main/user-ui/src/app/basket/page.tsx): `user-ui/src/app/basket/page.tsx`
- [Account Pages](https://github.com/johnitopaisah/ecommerce-platform/tree/main/user-ui/src/app/account): `user-ui/src/app/account`
- [Customer API Services](https://github.com/johnitopaisah/ecommerce-platform/blob/main/user-ui/src/lib/services.ts): `user-ui/src/lib/services.ts`

### Admin Panel

- [Admin Screens](https://github.com/johnitopaisah/ecommerce-platform/tree/main/admin-ui/src/app/(admin)): `admin-ui/src/app/(admin)`
- [Admin API Services](https://github.com/johnitopaisah/ecommerce-platform/blob/main/admin-ui/src/lib/services.ts): `admin-ui/src/lib/services.ts`

### API and Domain

- [API Route Configuration](https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/config/urls.py): `api/config/urls.py`
- [Account and Authentication](https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/account/views.py): `api/apps/account/views.py`
- [Catalog and Inventory](https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/store/views.py): `api/apps/store/views.py`
- [Catalog Administration](https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/store/admin_views.py): `api/apps/store/admin_views.py`
- [Basket Operations](https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/basket/service.py): `api/apps/basket/service.py`
- [Order Lifecycle](https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/orders/views.py): `api/apps/orders/views.py`
- [Manual Payment Confirmation](https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/orders/admin_views.py): `api/apps/orders/admin_views.py`
- [Payment Integration](https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/payment/views.py): `api/apps/payment/views.py`
- [Catalog Models](https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/store/models.py): `api/apps/store/models.py`
- [Email Service](https://github.com/johnitopaisah/ecommerce-platform/blob/main/api/apps/core/email.py): `api/apps/core/email.py`

### Persistence and Integrations

- **PostgreSQL**
- **Redis Basket Store**
- **Stripe**

### Other components

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

## Connections

- Shopper → Storefront Pages: browses (evidence: `README.md`)
- Shopper → Basket and Checkout: checks out (evidence: `README.md`)
- Shopper → Account Pages: manages account (evidence: `README.md`)
- Administrator → Admin Screens: manages store (evidence: `README.md`)
- Storefront Pages → Customer API Services: requests data (evidence: `user-ui/src/lib/services.ts`)
- Basket and Checkout → Customer API Services: requests basket and orders (evidence: `user-ui/src/lib/services.ts`)
- Account Pages → Customer API Services: requests account (evidence: `user-ui/src/lib/services.ts`)
- Customer API Services → API Route Configuration: calls API endpoints (evidence: `user-ui/src/lib/services.ts`)
- Admin Screens → Admin API Services: requests admin actions (evidence: `admin-ui/src/app/(admin)/orders/page.tsx`)
- Admin API Services → API Route Configuration: calls API endpoints
- API Route Configuration → Account and Authentication: routes auth (evidence: `api/config/urls.py`)
- API Route Configuration → Catalog and Inventory: routes catalog (evidence: `api/config/urls.py`)
- API Route Configuration → Catalog Administration: routes catalog admin (evidence: `api/config/urls.py`)
- API Route Configuration → Order Lifecycle: routes orders (evidence: `api/config/urls.py`)
- API Route Configuration → Manual Payment Confirmation: routes payment confirmation (evidence: `api/config/urls.py`)
- API Route Configuration → Payment Integration: routes payment (evidence: `api/config/urls.py`)
- Order Lifecycle → Basket Operations: reads basket summary (evidence: `api/apps/orders/views.py`)
- Order Lifecycle → Email Service: sends confirmation (evidence: `api/apps/orders/views.py`)
- Account and Authentication → Email Service: sends account mail (evidence: `api/apps/account/views.py`)
- Catalog and Inventory → Catalog Models: queries catalog (evidence: `api/apps/store/views.py`)
- Catalog Administration → Catalog Models: manages catalog records (evidence: `api/apps/store/admin_views.py`)
- Basket Operations → Catalog Models: loads product details (evidence: `api/apps/basket/service.py`)
- Catalog Models → PostgreSQL: persists catalog
- Basket Operations → Redis Basket Store: reads and writes basket
- Payment Integration → Stripe: processes payments (evidence: `README.md`)
- Manual Payment Confirmation → Order Lifecycle: updates order status (evidence: `api/apps/orders/admin_views.py`)
