# nhanvt24/dynamodb architecture

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

- Interactive diagram: https://gitdiagram.com/nhanvt24/dynamodb
- Repository: https://github.com/nhanvt24/dynamodb

## Overview

Supermarket Platform is a customer storefront and administrative console backed by a NestJS API and AWS services. The customer workflow is browsing products, submitting an order, and completing payment; the API also supports product administration, uploads, customer accounts, and order status. Separate asynchronous workers handle queued work, notifications, email, and scheduled reporting. The map uses documented structure and sampled controller behavior; several worker and module connections are shown only where their role is supported by the tree or README.

Main entry points: [`apps/api/src/database/dynamodb/client.ts`](https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/database/dynamodb/client.ts) (DynamoDB), [`apps/web/src/features/admin/screens/AdminConsole.tsx`](https://github.com/nhanvt24/dynamodb/blob/main/apps/web/src/features/admin/screens/AdminConsole.tsx) (Admin console), [`apps/api/src/core/app/create-app.ts`](https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/core/app/create-app.ts) (App factory), [`apps/api/src/modules/vnpay/vnpay.controller.ts`](https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/modules/vnpay/vnpay.controller.ts) (VNPAY payments)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_storefront_ui["Storefront UI"]
  node_checkout_ui["Checkout<br/>[page.tsx]"]
  node_store_api["Store API client<br/>[store-api.ts]"]
  node_admin_ui["Admin console<br/>[AdminConsole.tsx]"]
  node_auth_ui["Cognito client auth<br/>[cognito-auth.ts]"]
end

subgraph group_commerce["Commerce API"]
  node_http["HTTP entrypoint<br/>[server.ts]"]
  node_app_factory["App factory<br/>[create-app.ts]"]
  node_storefront["Storefront orders"]
  node_shopping["Product management"]
  node_payment["VNPAY payments"]
end

subgraph group_operations["Admin and identity"]
  node_uploads["Uploads API"]
  node_storage_ui["Storage manager<br/>[StorageManager.tsx]"]
  node_email_admin["Email delivery admin"]
  node_admin_ops["Queue and archive ops"]
end

subgraph group_async["Async services"]
  node_notifications["Notifications"]
  node_queue_workers["Queue workers"]
  node_scheduled_jobs["Scheduled jobs"]
  node_workflow_tasks["Workflow tasks"]
end

node_customer(("Customer"))
node_admin(("Administrator"))
node_dynamodb[("DynamoDB<br/>[client.ts]")]
node_vnpay_service["VNPAY"]
node_cognito["Amazon Cognito"]
node_s3[("S3 storage")]
node_eventbridge["EventBridge<br/>[publisher.ts]"]
node_ses["Amazon SES<br/>[client.ts]"]

node_customer -->|"browses"| node_storefront_ui
node_storefront_ui -->|"fetches products"| node_store_api
node_checkout_ui -->|"submits orders"| node_store_api
node_store_api -->|"calls API"| node_http
node_admin -->|"manages"| node_admin_ui
node_admin_ui -->|"authenticates"| node_auth_ui
node_auth_ui -->|"signs in"| node_cognito
node_http -->|"creates app"| node_app_factory
node_app_factory -->|"routes requests"| node_storefront
node_app_factory -->|"routes requests"| node_shopping
node_app_factory -->|"routes requests"| node_payment
node_storefront -->|"reads and writes"| node_dynamodb
node_shopping -->|"reads and writes"| node_dynamodb
node_payment -->|"records payments"| node_dynamodb
node_payment -->|"verifies payments"| node_vnpay_service
node_admin_ui -->|"opens storage"| node_storage_ui
node_storage_ui -->|"requests upload URLs"| node_uploads
node_uploads -->|"presigns access"| node_s3
node_storage_ui -.->|"uploads files"| node_s3
node_admin_ui -->|"manages email"| node_email_admin
node_email_admin -->|"publishes campaigns"| node_eventbridge
node_email_admin -->|"reads delivery state"| node_dynamodb
node_admin_ui -->|"manages operations"| node_admin_ops
node_admin_ops -->|"replays archives"| node_eventbridge
node_admin_ops -->|"replays DLQs"| node_queue_workers
node_queue_workers -->|"reads and writes"| node_dynamodb
node_queue_workers -.->|"serves notifications"| node_notifications
node_scheduled_jobs -.->|"publishes events"| node_eventbridge
node_workflow_tasks -.->|"sends mail"| node_ses
node_notifications -->|"reads and writes"| node_dynamodb

click node_storefront_ui "https://github.com/nhanvt24/dynamodb/blob/main/apps/web/app/store/products/products-page-client.tsx"
click node_checkout_ui "https://github.com/nhanvt24/dynamodb/blob/main/apps/web/app/store/checkout/page.tsx"
click node_store_api "https://github.com/nhanvt24/dynamodb/blob/main/apps/web/app/store/store-api.ts"
click node_admin_ui "https://github.com/nhanvt24/dynamodb/blob/main/apps/web/src/features/admin/screens/AdminConsole.tsx"
click node_auth_ui "https://github.com/nhanvt24/dynamodb/blob/main/apps/web/src/features/auth/lib/cognito-auth.ts"
click node_http "https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/entrypoints/http/server.ts"
click node_app_factory "https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/core/app/create-app.ts"
click node_storefront "https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/modules/storefront/storefront.controller.ts"
click node_shopping "https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/modules/shopping/shopping.controller.ts"
click node_payment "https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/modules/vnpay/vnpay.controller.ts"
click node_dynamodb "https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/database/dynamodb/client.ts"
click node_uploads "https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/modules/uploads/uploads.controller.ts"
click node_storage_ui "https://github.com/nhanvt24/dynamodb/blob/main/apps/web/src/features/admin/components/StorageManager.tsx"
click node_s3 "https://github.com/nhanvt24/dynamodb/blob/main/infra/stack/s3-storage-stack.ts"
click node_email_admin "https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/modules/email-deliveries/email-deliveries.controller.ts"
click node_admin_ops "https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/modules/admin-ops/admin-ops.controller.ts"
click node_notifications "https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/modules/notifications/notifications.controller.ts"
click node_queue_workers "https://github.com/nhanvt24/dynamodb/tree/main/apps/api/src/entrypoints/lambda/queue"
click node_scheduled_jobs "https://github.com/nhanvt24/dynamodb/tree/main/apps/api/src/entrypoints/lambda/jobs"
click node_workflow_tasks "https://github.com/nhanvt24/dynamodb/tree/main/apps/api/src/entrypoints/lambda/workflow"
click node_eventbridge "https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/integrations/eventbridge/publisher.ts"
click node_ses "https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/integrations/ses/client.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_checkout_ui,node_store_api,node_admin_ui,node_auth_ui toneBlue
class node_http,node_app_factory,node_storefront,node_shopping,node_payment,node_dynamodb,node_s3 toneAmber
class node_uploads,node_storage_ui,node_email_admin,node_admin_ops toneMint
class node_notifications,node_queue_workers,node_scheduled_jobs,node_workflow_tasks toneRose
class node_customer,node_admin,node_vnpay_service,node_cognito toneIndigo
class node_eventbridge,node_ses toneTeal
```

## Components

### Web experience

- [Storefront UI](https://github.com/nhanvt24/dynamodb/blob/main/apps/web/app/store/products/products-page-client.tsx): `apps/web/app/store/products/products-page-client.tsx`
- [Checkout](https://github.com/nhanvt24/dynamodb/blob/main/apps/web/app/store/checkout/page.tsx): `apps/web/app/store/checkout/page.tsx`
- [Store API client](https://github.com/nhanvt24/dynamodb/blob/main/apps/web/app/store/store-api.ts): `apps/web/app/store/store-api.ts`
- [Admin console](https://github.com/nhanvt24/dynamodb/blob/main/apps/web/src/features/admin/screens/AdminConsole.tsx): `apps/web/src/features/admin/screens/AdminConsole.tsx`
- [Cognito client auth](https://github.com/nhanvt24/dynamodb/blob/main/apps/web/src/features/auth/lib/cognito-auth.ts): `apps/web/src/features/auth/lib/cognito-auth.ts`

### Commerce API

- [HTTP entrypoint](https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/entrypoints/http/server.ts): `apps/api/src/entrypoints/http/server.ts`
- [App factory](https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/core/app/create-app.ts): `apps/api/src/core/app/create-app.ts`
- [Storefront orders](https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/modules/storefront/storefront.controller.ts): `apps/api/src/modules/storefront/storefront.controller.ts`
- [Product management](https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/modules/shopping/shopping.controller.ts): `apps/api/src/modules/shopping/shopping.controller.ts`
- [VNPAY payments](https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/modules/vnpay/vnpay.controller.ts): `apps/api/src/modules/vnpay/vnpay.controller.ts`

### Admin and identity

- [Uploads API](https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/modules/uploads/uploads.controller.ts): `apps/api/src/modules/uploads/uploads.controller.ts`
- [Storage manager](https://github.com/nhanvt24/dynamodb/blob/main/apps/web/src/features/admin/components/StorageManager.tsx): `apps/web/src/features/admin/components/StorageManager.tsx`
- [Email delivery admin](https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/modules/email-deliveries/email-deliveries.controller.ts): `apps/api/src/modules/email-deliveries/email-deliveries.controller.ts`
- [Queue and archive ops](https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/modules/admin-ops/admin-ops.controller.ts): `apps/api/src/modules/admin-ops/admin-ops.controller.ts`

### Async services

- [Notifications](https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/modules/notifications/notifications.controller.ts): `apps/api/src/modules/notifications/notifications.controller.ts`
- [Queue workers](https://github.com/nhanvt24/dynamodb/tree/main/apps/api/src/entrypoints/lambda/queue): `apps/api/src/entrypoints/lambda/queue`
- [Scheduled jobs](https://github.com/nhanvt24/dynamodb/tree/main/apps/api/src/entrypoints/lambda/jobs): `apps/api/src/entrypoints/lambda/jobs`
- [Workflow tasks](https://github.com/nhanvt24/dynamodb/tree/main/apps/api/src/entrypoints/lambda/workflow): `apps/api/src/entrypoints/lambda/workflow`

### Other components

- **Customer**
- **Administrator**
- [DynamoDB](https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/database/dynamodb/client.ts): `apps/api/src/database/dynamodb/client.ts`
- **VNPAY**
- **Amazon Cognito**
- [S3 storage](https://github.com/nhanvt24/dynamodb/blob/main/infra/stack/s3-storage-stack.ts): `infra/stack/s3-storage-stack.ts`
- [EventBridge](https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/integrations/eventbridge/publisher.ts): `apps/api/src/integrations/eventbridge/publisher.ts`
- [Amazon SES](https://github.com/nhanvt24/dynamodb/blob/main/apps/api/src/integrations/ses/client.ts): `apps/api/src/integrations/ses/client.ts`

## Connections

- Customer → Storefront UI: browses
- Storefront UI → Store API client: fetches products
- Checkout → Store API client: submits orders
- Store API client → HTTP entrypoint: calls API
- Administrator → Admin console: manages
- Admin console → Cognito client auth: authenticates
- Cognito client auth → Amazon Cognito: signs in
- HTTP entrypoint → App factory: creates app
- App factory → Storefront orders: routes requests
- App factory → Product management: routes requests
- App factory → VNPAY payments: routes requests
- Storefront orders → DynamoDB: reads and writes
- Product management → DynamoDB: reads and writes
- VNPAY payments → DynamoDB: records payments
- VNPAY payments → VNPAY: verifies payments
- Admin console → Storage manager: opens storage
- Storage manager → Uploads API: requests upload URLs
- Uploads API → S3 storage: presigns access
- Storage manager → S3 storage: uploads files
- Admin console → Email delivery admin: manages email
- Email delivery admin → EventBridge: publishes campaigns
- Email delivery admin → DynamoDB: reads delivery state
- Admin console → Queue and archive ops: manages operations
- Queue and archive ops → EventBridge: replays archives
- Queue and archive ops → Queue workers: replays DLQs
- Queue workers → DynamoDB: reads and writes
- Queue workers → Notifications: serves notifications
- Scheduled jobs → EventBridge: publishes events
- Workflow tasks → Amazon SES: sends mail
- Notifications → DynamoDB: reads and writes
