# bouabidi/azure-ecommerce-platform architecture

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

- Interactive diagram: https://gitdiagram.com/bouabidi/azure-ecommerce-platform
- Repository: https://github.com/bouabidi/azure-ecommerce-platform

## Overview

Azure Commerce Platform is a full-stack shop: customers browse products, manage a cart, authenticate, and place orders; administrators manage products, images, and order status. The Angular app provides the user-facing flows, while NestJS controllers dispatch domain operations to services. The README also documents categories and image upload. Sampled source confirms several API dispatches and storage behavior; frontend-to-API wiring and most unsampled service internals are shown only where the tree and documented capabilities support the subsystem, not as speculative call chains.

Main entry points: [`apps/web/src/app/app.routes.ts`](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/web/src/app/app.routes.ts) (App routes), [`apps/api/src/database/prisma.service.ts`](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/database/prisma.service.ts) (Prisma service), [`apps/api/src/auth/services/auth.service.ts`](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/auth/services/auth.service.ts) (Auth service), [`apps/api/src/product-images/storage/file-storage.service.ts`](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/product-images/storage/file-storage.service.ts) (File storage abstraction)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Angular storefront"]
  node_webapp["Angular app<br/>[app.ts]"]
  node_routes["App routes<br/>[app.routes.ts]"]
  node_productui["Product browsing"]
  node_cartui["Cart"]
  node_checkoutui["Checkout and orders"]
  node_adminui["Admin product tools"]
  node_authui["Auth screens"]
  node_cartstore["Cart local storage"]
  node_tokenstore["Token storage<br/>[storage.service.ts]"]
end

subgraph group_identity["Identity and access"]
  node_authcontroller["Auth endpoints<br/>[auth.controller.ts]"]
  node_authservice["Auth service<br/>[auth.service.ts]"]
  node_users["User service<br/>[users.service.ts]"]
  node_refreshtokens["Refresh-token service"]
  node_usersapi["Admin user endpoint"]
end

subgraph group_commerce["Commerce API"]
  node_productsapi["Product endpoints"]
  node_productservice["Product service"]
  node_categories["Category API"]
  node_imagesapi["Product image endpoints"]
  node_imagesservice["Image service"]
  node_ordersapi["Order endpoints"]
  node_orderservice["Order service<br/>[orders.service.ts]"]
end

subgraph group_data["Persistence and storage"]
  node_prisma["Prisma service<br/>[prisma.service.ts]"]
  node_postgres[("PostgreSQL")]
  node_filestorage["File storage abstraction"]
  node_localstorage["Local file storage"]
  node_azurestorage["Azure Blob storage"]
end

node_shopper(("Shopper"))
node_admin(("Administrator"))
node_azureblob[("Azure Blob")]

node_shopper -->|"uses"| node_webapp
node_admin -->|"uses"| node_webapp
node_webapp -->|"loads routes"| node_routes
node_routes -->|"routes to"| node_productui
node_routes -->|"routes to"| node_cartui
node_routes -->|"routes to"| node_authui
node_routes -->|"routes to"| node_adminui
node_routes -->|"routes to"| node_checkoutui
node_cartui -->|"persists cart"| node_cartstore
node_authui -->|"stores tokens"| node_tokenstore
node_authcontroller -->|"dispatches"| node_authservice
node_authservice -->|"looks up users"| node_users
node_authservice -->|"manages tokens"| node_refreshtokens
node_productsapi -->|"dispatches"| node_productservice
node_ordersapi -->|"dispatches"| node_orderservice
node_imagesapi -->|"dispatches"| node_imagesservice
node_productservice -->|"uses database"| node_prisma
node_orderservice -->|"uses database"| node_prisma
node_users -->|"uses database"| node_prisma
node_refreshtokens -->|"uses database"| node_prisma
node_prisma -->|"reads and writes"| node_postgres
node_imagesservice -->|"stores images"| node_filestorage
node_filestorage -->|"selects provider"| node_localstorage
node_filestorage -.->|"selects provider"| node_azurestorage
node_azurestorage -.->|"uploads blobs"| node_azureblob
node_usersapi -->|"dispatches"| node_users

click node_webapp "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/web/src/app/app.ts"
click node_routes "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/web/src/app/app.routes.ts"
click node_productui "https://github.com/bouabidi/azure-ecommerce-platform/tree/main/apps/web/src/app/features/products"
click node_cartui "https://github.com/bouabidi/azure-ecommerce-platform/tree/main/apps/web/src/app/features/cart"
click node_checkoutui "https://github.com/bouabidi/azure-ecommerce-platform/tree/main/apps/web/src/app/features/orders"
click node_adminui "https://github.com/bouabidi/azure-ecommerce-platform/tree/main/apps/web/src/app/features/admin/products"
click node_authui "https://github.com/bouabidi/azure-ecommerce-platform/tree/main/apps/web/src/app/features/auth"
click node_cartstore "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/web/src/app/features/cart/services/cart-storage.service.ts"
click node_tokenstore "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/web/src/app/core/services/storage.service.ts"
click node_authcontroller "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/auth/controllers/auth.controller.ts"
click node_authservice "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/auth/services/auth.service.ts"
click node_users "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/users/users.service.ts"
click node_refreshtokens "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/auth/refresh-token/refresh-token.service.ts"
click node_productsapi "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/products/controllers/products.controller.ts"
click node_productservice "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/products/services/products.service.ts"
click node_categories "https://github.com/bouabidi/azure-ecommerce-platform/tree/main/apps/api/src/categories"
click node_imagesapi "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/product-images/controllers/product-images.controller.ts"
click node_imagesservice "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/product-images/services/product-images.service.ts"
click node_ordersapi "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/orders/controllers/orders.controller.ts"
click node_orderservice "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/orders/services/orders.service.ts"
click node_usersapi "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/users/admin.controller.ts"
click node_prisma "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/database/prisma.service.ts"
click node_filestorage "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/product-images/storage/file-storage.service.ts"
click node_localstorage "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/product-images/storage/local-file-storage.service.ts"
click node_azurestorage "https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/product-images/storage/azure-blob-storage.service.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_webapp,node_routes,node_productui,node_cartui,node_checkoutui,node_adminui,node_authui,node_cartstore,node_tokenstore toneBlue
class node_authcontroller,node_authservice,node_users,node_refreshtokens,node_usersapi,node_azureblob toneAmber
class node_productsapi,node_productservice,node_categories,node_imagesapi,node_imagesservice,node_ordersapi,node_orderservice toneMint
class node_prisma,node_postgres,node_filestorage,node_localstorage,node_azurestorage toneRose
class node_shopper,node_admin toneIndigo
```

## Components

### Angular storefront

- [Angular app](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/web/src/app/app.ts): `apps/web/src/app/app.ts`
- [App routes](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/web/src/app/app.routes.ts): `apps/web/src/app/app.routes.ts`
- [Product browsing](https://github.com/bouabidi/azure-ecommerce-platform/tree/main/apps/web/src/app/features/products): `apps/web/src/app/features/products`
- [Cart](https://github.com/bouabidi/azure-ecommerce-platform/tree/main/apps/web/src/app/features/cart): `apps/web/src/app/features/cart`
- [Checkout and orders](https://github.com/bouabidi/azure-ecommerce-platform/tree/main/apps/web/src/app/features/orders): `apps/web/src/app/features/orders`
- [Admin product tools](https://github.com/bouabidi/azure-ecommerce-platform/tree/main/apps/web/src/app/features/admin/products): `apps/web/src/app/features/admin/products`
- [Auth screens](https://github.com/bouabidi/azure-ecommerce-platform/tree/main/apps/web/src/app/features/auth): `apps/web/src/app/features/auth`
- [Cart local storage](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/web/src/app/features/cart/services/cart-storage.service.ts): `apps/web/src/app/features/cart/services/cart-storage.service.ts`
- [Token storage](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/web/src/app/core/services/storage.service.ts): `apps/web/src/app/core/services/storage.service.ts`

### Identity and access

- [Auth endpoints](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/auth/controllers/auth.controller.ts): `apps/api/src/auth/controllers/auth.controller.ts`
- [Auth service](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/auth/services/auth.service.ts): `apps/api/src/auth/services/auth.service.ts`
- [User service](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/users/users.service.ts): `apps/api/src/users/users.service.ts`
- [Refresh-token service](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/auth/refresh-token/refresh-token.service.ts): `apps/api/src/auth/refresh-token/refresh-token.service.ts`
- [Admin user endpoint](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/users/admin.controller.ts): `apps/api/src/users/admin.controller.ts`

### Commerce API

- [Product endpoints](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/products/controllers/products.controller.ts): `apps/api/src/products/controllers/products.controller.ts`
- [Product service](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/products/services/products.service.ts): `apps/api/src/products/services/products.service.ts`
- [Category API](https://github.com/bouabidi/azure-ecommerce-platform/tree/main/apps/api/src/categories): `apps/api/src/categories`
- [Product image endpoints](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/product-images/controllers/product-images.controller.ts): `apps/api/src/product-images/controllers/product-images.controller.ts`
- [Image service](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/product-images/services/product-images.service.ts): `apps/api/src/product-images/services/product-images.service.ts`
- [Order endpoints](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/orders/controllers/orders.controller.ts): `apps/api/src/orders/controllers/orders.controller.ts`
- [Order service](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/orders/services/orders.service.ts): `apps/api/src/orders/services/orders.service.ts`

### Persistence and storage

- [Prisma service](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/database/prisma.service.ts): `apps/api/src/database/prisma.service.ts`
- **PostgreSQL**
- [File storage abstraction](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/product-images/storage/file-storage.service.ts): `apps/api/src/product-images/storage/file-storage.service.ts`
- [Local file storage](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/product-images/storage/local-file-storage.service.ts): `apps/api/src/product-images/storage/local-file-storage.service.ts`
- [Azure Blob storage](https://github.com/bouabidi/azure-ecommerce-platform/blob/main/apps/api/src/product-images/storage/azure-blob-storage.service.ts): `apps/api/src/product-images/storage/azure-blob-storage.service.ts`

### Other components

- **Shopper**
- **Administrator**
- **Azure Blob**

## Connections

- Shopper → Angular app: uses
- Administrator → Angular app: uses
- Angular app → App routes: loads routes
- App routes → Product browsing: routes to
- App routes → Cart: routes to
- App routes → Auth screens: routes to
- App routes → Admin product tools: routes to
- App routes → Checkout and orders: routes to
- Cart → Cart local storage: persists cart
- Auth screens → Token storage: stores tokens
- Auth endpoints → Auth service: dispatches
- Auth service → User service: looks up users
- Auth service → Refresh-token service: manages tokens
- Product endpoints → Product service: dispatches
- Order endpoints → Order service: dispatches
- Product image endpoints → Image service: dispatches
- Product service → Prisma service: uses database
- Order service → Prisma service: uses database
- User service → Prisma service: uses database
- Refresh-token service → Prisma service: uses database
- Prisma service → PostgreSQL: reads and writes
- Image service → File storage abstraction: stores images
- File storage abstraction → Local file storage: selects provider
- File storage abstraction → Azure Blob storage: selects provider
- Azure Blob storage → Azure Blob: uploads blobs
- Admin user endpoint → User service: dispatches
