# samanhoseinpour/dubai-supplement architecture

> Architecture diagram of the GitHub repository samanhoseinpour/dubai-supplement, 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/samanhoseinpour/dubai-supplement
- Repository: https://github.com/samanhoseinpour/dubai-supplement

## Overview

Dubai Supplement is currently a foundation for a Persian, RTL fitness-supplement storefront and its API; the README explicitly says catalogue and brand features are not implemented. The principal available user flow is viewing the storefront shell and design gallery. The API provides runtime configuration, health probes, and infrastructure for persistence, outbox processing, Redis, and object storage. The graph reflects documented capabilities and sampled wiring; unsampled subsystem internals and storefront-to-API calls are not inferred.

Main entry points: [`apps/api/src/app.module.ts`](https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/api/src/app.module.ts) (Root module), [`apps/api/src/infra/outbox`](https://github.com/samanhoseinpour/dubai-supplement/tree/main/apps/api/src/infra/outbox) (Transactional outbox), [`apps/web/app/page.tsx`](https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/web/app/page.tsx) (Storefront shell), [`apps/api/src/app.factory.ts`](https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/api/src/app.factory.ts) (Application factory)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_storefront["Storefront foundation"]
  node_web_shell["Storefront shell<br/>[page.tsx]"]
  node_web_design["Design gallery<br/>[page.tsx]"]
  node_web_site["Site components"]
  node_web_ui["UI primitives"]
  node_web_copy["Persian interface copy<br/>[copy.ts]"]
  node_web_theme["Theme provider<br/>[providers.tsx]"]
end

subgraph group_api["API runtime"]
  node_api_client["HTTP API<br/>[main.ts]"]
  node_app_factory["Application factory<br/>[app.factory.ts]"]
  node_app_module["Root module<br/>[app.module.ts]"]
  node_health["Health probes"]
  node_worker["Outbox worker<br/>[worker.ts]"]
end

subgraph group_infra["Infrastructure adapters"]
  node_config["Configuration"]
  node_http["HTTP policies"]
  node_db_module["Database adapter"]
  node_outbox["Transactional outbox"]
  node_redis["Redis adapter"]
  node_storage["Object storage"]
end

subgraph group_shared["Shared foundations"]
  node_contracts["Shared contracts<br/>[index.ts]"]
  node_persian["Persian utilities<br/>[index.ts]"]
end

node_shopper(("Storefront visitor"))
node_postgres_service[("PostgreSQL")]
node_redis_service[("Redis")]
node_s3_service[("S3-compatible storage")]

node_shopper -->|"opens storefront"| node_web_shell
node_shopper -->|"opens gallery"| node_web_design
node_web_shell -->|"renders shell"| node_web_site
node_web_shell -->|"uses copy"| node_web_copy
node_web_shell -->|"uses theme"| node_web_theme
node_web_design -->|"displays components"| node_web_ui
node_web_design -->|"uses copy"| node_web_copy
node_api_client -->|"creates app"| node_app_factory
node_app_factory -->|"loads validated config"| node_config
node_app_factory -->|"boots module"| node_app_module
node_app_factory -->|"registers policies"| node_http
node_api_client -.->|"starts relay when role is all"| node_outbox
node_app_module -->|"imports"| node_config
node_app_module -->|"imports"| node_db_module
node_app_module -->|"imports"| node_health
node_app_module -->|"imports"| node_outbox
node_app_module -->|"imports"| node_redis
node_app_module -->|"imports"| node_storage
node_db_module -->|"queries"| node_postgres_service
node_redis -->|"uses"| node_redis_service
node_storage -->|"reads and writes objects"| node_s3_service
node_health -->|"probes"| node_postgres_service
node_health -->|"probes"| node_redis_service
node_health -->|"checks backlog"| node_outbox
node_worker -->|"boots context"| node_app_module
node_worker -->|"starts relay"| node_outbox
node_outbox -->|"persists events"| node_postgres_service
node_contracts -->|"normalizes text"| node_persian

click node_web_shell "https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/web/app/page.tsx"
click node_web_design "https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/web/app/design/page.tsx"
click node_web_site "https://github.com/samanhoseinpour/dubai-supplement/tree/main/apps/web/components/site"
click node_web_ui "https://github.com/samanhoseinpour/dubai-supplement/tree/main/apps/web/components/ui"
click node_web_copy "https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/web/lib/copy.ts"
click node_web_theme "https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/web/components/site/providers.tsx"
click node_api_client "https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/api/src/main.ts"
click node_app_factory "https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/api/src/app.factory.ts"
click node_app_module "https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/api/src/app.module.ts"
click node_config "https://github.com/samanhoseinpour/dubai-supplement/tree/main/apps/api/src/infra/config"
click node_http "https://github.com/samanhoseinpour/dubai-supplement/tree/main/apps/api/src/infra/http"
click node_health "https://github.com/samanhoseinpour/dubai-supplement/tree/main/apps/api/src/infra/health"
click node_db_module "https://github.com/samanhoseinpour/dubai-supplement/tree/main/apps/api/src/infra/db"
click node_outbox "https://github.com/samanhoseinpour/dubai-supplement/tree/main/apps/api/src/infra/outbox"
click node_worker "https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/api/src/worker.ts"
click node_redis "https://github.com/samanhoseinpour/dubai-supplement/tree/main/apps/api/src/infra/redis"
click node_storage "https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/api/src/infra/storage/storage.provider.ts"
click node_contracts "https://github.com/samanhoseinpour/dubai-supplement/blob/main/packages/contracts/src/common/index.ts"
click node_persian "https://github.com/samanhoseinpour/dubai-supplement/blob/main/packages/persian/src/index.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_web_shell,node_web_design,node_web_site,node_web_ui,node_web_copy,node_web_theme toneBlue
class node_api_client,node_app_factory,node_app_module,node_health,node_worker,node_postgres_service,node_redis_service,node_s3_service toneAmber
class node_config,node_http,node_db_module,node_outbox,node_redis,node_storage toneMint
class node_contracts,node_persian toneRose
class node_shopper toneIndigo
```

## Components

### Storefront foundation

- [Storefront shell](https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/web/app/page.tsx): `apps/web/app/page.tsx`
- [Design gallery](https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/web/app/design/page.tsx): `apps/web/app/design/page.tsx`
- [Site components](https://github.com/samanhoseinpour/dubai-supplement/tree/main/apps/web/components/site): `apps/web/components/site`
- [UI primitives](https://github.com/samanhoseinpour/dubai-supplement/tree/main/apps/web/components/ui): `apps/web/components/ui`
- [Persian interface copy](https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/web/lib/copy.ts): `apps/web/lib/copy.ts`
- [Theme provider](https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/web/components/site/providers.tsx): `apps/web/components/site/providers.tsx`

### API runtime

- [HTTP API](https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/api/src/main.ts): `apps/api/src/main.ts`
- [Application factory](https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/api/src/app.factory.ts): `apps/api/src/app.factory.ts`
- [Root module](https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/api/src/app.module.ts): `apps/api/src/app.module.ts`
- [Health probes](https://github.com/samanhoseinpour/dubai-supplement/tree/main/apps/api/src/infra/health): `apps/api/src/infra/health`
- [Outbox worker](https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/api/src/worker.ts): `apps/api/src/worker.ts`

### Infrastructure adapters

- [Configuration](https://github.com/samanhoseinpour/dubai-supplement/tree/main/apps/api/src/infra/config): `apps/api/src/infra/config`
- [HTTP policies](https://github.com/samanhoseinpour/dubai-supplement/tree/main/apps/api/src/infra/http): `apps/api/src/infra/http`
- [Database adapter](https://github.com/samanhoseinpour/dubai-supplement/tree/main/apps/api/src/infra/db): `apps/api/src/infra/db`
- [Transactional outbox](https://github.com/samanhoseinpour/dubai-supplement/tree/main/apps/api/src/infra/outbox): `apps/api/src/infra/outbox`
- [Redis adapter](https://github.com/samanhoseinpour/dubai-supplement/tree/main/apps/api/src/infra/redis): `apps/api/src/infra/redis`
- [Object storage](https://github.com/samanhoseinpour/dubai-supplement/blob/main/apps/api/src/infra/storage/storage.provider.ts): `apps/api/src/infra/storage/storage.provider.ts`

### Shared foundations

- [Shared contracts](https://github.com/samanhoseinpour/dubai-supplement/blob/main/packages/contracts/src/common/index.ts): `packages/contracts/src/common/index.ts`
- [Persian utilities](https://github.com/samanhoseinpour/dubai-supplement/blob/main/packages/persian/src/index.ts): `packages/persian/src/index.ts`

### Other components

- **Storefront visitor**
- **PostgreSQL**
- **Redis**
- **S3-compatible storage**

## Connections

- Storefront visitor → Storefront shell: opens storefront
- Storefront visitor → Design gallery: opens gallery
- Storefront shell → Site components: renders shell
- Storefront shell → Persian interface copy: uses copy
- Storefront shell → Theme provider: uses theme
- Design gallery → UI primitives: displays components
- Design gallery → Persian interface copy: uses copy
- HTTP API → Application factory: creates app
- Application factory → Configuration: loads validated config
- Application factory → Root module: boots module
- Application factory → HTTP policies: registers policies
- HTTP API → Transactional outbox: starts relay when role is all
- Root module → Configuration: imports
- Root module → Database adapter: imports
- Root module → Health probes: imports
- Root module → Transactional outbox: imports
- Root module → Redis adapter: imports
- Root module → Object storage: imports
- Database adapter → PostgreSQL: queries
- Redis adapter → Redis: uses
- Object storage → S3-compatible storage: reads and writes objects
- Health probes → PostgreSQL: probes
- Health probes → Redis: probes
- Health probes → Transactional outbox: checks backlog
- Outbox worker → Root module: boots context
- Outbox worker → Transactional outbox: starts relay
- Transactional outbox → PostgreSQL: persists events
- Shared contracts → Persian utilities: normalizes text
