# laoluafolami/netiks_store_wk4 architecture

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

- Interactive diagram: https://gitdiagram.com/laoluafolami/netiks_store_wk4
- Repository: https://github.com/laoluafolami/netiks_store_wk4

## Overview

Netiks Store is a multi-service marketplace: shoppers browse products and submit demo-card orders, while sellers authenticate, create stores and categories, publish products and images, and review orders. The web app routes user actions through its server-side handlers or API proxy to the gateway, which dispatches to identity, vendor, catalog, and media services. Catalog, identity, and vendor services have database-backed persistence; media handles uploaded files. The README excerpt describes deployment staging, not product behavior, so it does not establish runtime product links. Service internals beyond sampled routes are represented only where the tree supports them.

Main entry points: [`apps/gateway/app/main.py`](https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/gateway/app/main.py) (Gateway router), [`apps/web/src/app`](https://github.com/laoluafolami/netiks_store_wk4/tree/main/apps/web/src/app) (Storefront pages), [`apps/web/src/app/checkout/actions/route.ts`](https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/web/src/app/checkout/actions/route.ts) (Checkout action), [`apps/web/src/app/studio/page.tsx`](https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/web/src/app/studio/page.tsx) (Seller studio)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_webpages["Storefront pages"]
  node_studio["Seller studio<br/>[page.tsx]"]
  node_dashboard["Vendor dashboard<br/>[page.tsx]"]
  node_auth_actions["Auth actions<br/>[route.ts]"]
  node_studio_actions["Studio actions<br/>[route.ts]"]
  node_dashboard_actions["Dashboard actions<br/>[route.ts]"]
  node_checkout_actions["Checkout action<br/>[route.ts]"]
  node_api_proxy["API proxy<br/>[route.ts]"]
end

subgraph group_gateway["API gateway"]
  node_gateway_app["Gateway router<br/>[main.py]"]
  node_gateway_auth["Auth routes<br/>[auth.py]"]
  node_gateway_stores["Store routes<br/>[stores.py]"]
  node_gateway_catalog["Catalog routes<br/>[catalog.py]"]
  node_gateway_uploads["Upload routes<br/>[uploads.py]"]
end

subgraph group_domains["Marketplace services"]
  node_identity["Identity service<br/>[routes.py]"]
  node_vendor["Vendor service<br/>[routes.py]"]
  node_catalog["Catalog service<br/>[routes.py]"]
  node_media["Media service<br/>[main.py]"]
  node_admin["Admin service<br/>[main.py]"]
end

subgraph group_state["Persistence and media"]
  node_identity_db[("Identity database<br/>[database.py]")]
  node_vendor_db[("Vendor database<br/>[database.py]")]
  node_catalog_db[("Catalog database<br/>[database.py]")]
  node_media_files[("Uploaded media<br/>[service.py]")]
end

node_shopper(("Shopper"))
node_seller(("Seller"))

node_shopper -->|"browses"| node_webpages
node_webpages -->|"submits order"| node_checkout_actions
node_checkout_actions -->|"posts checkout"| node_api_proxy
node_seller -->|"uses account"| node_webpages
node_seller -->|"manages shop"| node_studio
node_seller -->|"manages listings"| node_dashboard
node_studio -->|"submits actions"| node_studio_actions
node_dashboard -->|"submits actions"| node_dashboard_actions
node_webpages -->|"authenticates"| node_auth_actions
node_studio_actions -->|"calls API"| node_gateway_app
node_dashboard_actions -->|"calls API"| node_gateway_app
node_checkout_actions -->|"posts order"| node_gateway_app
node_api_proxy -->|"forwards requests"| node_gateway_app
node_gateway_app -->|"dispatches auth"| node_gateway_auth
node_gateway_app -->|"dispatches stores"| node_gateway_stores
node_gateway_app -->|"dispatches catalog"| node_gateway_catalog
node_gateway_app -->|"dispatches uploads"| node_gateway_uploads
node_gateway_auth -->|"forwards auth"| node_identity
node_gateway_stores -->|"forwards stores"| node_vendor
node_gateway_catalog -->|"forwards catalog"| node_catalog
node_gateway_uploads -->|"forwards uploads"| node_media
node_identity -->|"reads/writes"| node_identity_db
node_vendor -->|"reads/writes"| node_vendor_db
node_catalog -->|"reads/writes"| node_catalog_db
node_media -->|"saves/resolves"| node_media_files

click node_webpages "https://github.com/laoluafolami/netiks_store_wk4/tree/main/apps/web/src/app"
click node_studio "https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/web/src/app/studio/page.tsx"
click node_dashboard "https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/web/src/app/dashboard/page.tsx"
click node_auth_actions "https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/web/src/app/auth/actions/%5Baction%5D/route.ts"
click node_studio_actions "https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/web/src/app/studio/actions/%5Baction%5D/route.ts"
click node_dashboard_actions "https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/web/src/app/dashboard/actions/%5Baction%5D/route.ts"
click node_checkout_actions "https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/web/src/app/checkout/actions/route.ts"
click node_api_proxy "https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/web/src/app/api/%5B...path%5D/route.ts"
click node_gateway_app "https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/gateway/app/main.py"
click node_gateway_auth "https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/gateway/app/routes/auth.py"
click node_gateway_stores "https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/gateway/app/routes/stores.py"
click node_gateway_catalog "https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/gateway/app/routes/catalog.py"
click node_gateway_uploads "https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/gateway/app/routes/uploads.py"
click node_identity "https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/identity-service/app/routes.py"
click node_vendor "https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/vendor-service/app/routes.py"
click node_catalog "https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/catalog-service/app/routes.py"
click node_media "https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/media-service/app/main.py"
click node_admin "https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/admin-service/app/main.py"
click node_identity_db "https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/identity-service/app/database.py"
click node_vendor_db "https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/vendor-service/app/database.py"
click node_catalog_db "https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/catalog-service/app/database.py"
click node_media_files "https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/media-service/app/service.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_webpages,node_studio,node_dashboard,node_auth_actions,node_studio_actions,node_dashboard_actions,node_checkout_actions,node_api_proxy toneBlue
class node_gateway_app,node_gateway_auth,node_gateway_stores,node_gateway_catalog,node_gateway_uploads toneAmber
class node_identity,node_vendor,node_catalog,node_media,node_admin toneMint
class node_identity_db,node_vendor_db,node_catalog_db,node_media_files toneRose
class node_shopper,node_seller toneIndigo
```

## Components

### Web experience

- [Storefront pages](https://github.com/laoluafolami/netiks_store_wk4/tree/main/apps/web/src/app): `apps/web/src/app`
- [Seller studio](https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/web/src/app/studio/page.tsx): `apps/web/src/app/studio/page.tsx`
- [Vendor dashboard](https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/web/src/app/dashboard/page.tsx): `apps/web/src/app/dashboard/page.tsx`
- [Auth actions](https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/web/src/app/auth/actions/%5Baction%5D/route.ts): `apps/web/src/app/auth/actions/[action]/route.ts`
- [Studio actions](https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/web/src/app/studio/actions/%5Baction%5D/route.ts): `apps/web/src/app/studio/actions/[action]/route.ts`
- [Dashboard actions](https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/web/src/app/dashboard/actions/%5Baction%5D/route.ts): `apps/web/src/app/dashboard/actions/[action]/route.ts`
- [Checkout action](https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/web/src/app/checkout/actions/route.ts): `apps/web/src/app/checkout/actions/route.ts`
- [API proxy](https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/web/src/app/api/%5B...path%5D/route.ts): `apps/web/src/app/api/[...path]/route.ts`

### API gateway

- [Gateway router](https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/gateway/app/main.py): `apps/gateway/app/main.py`
- [Auth routes](https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/gateway/app/routes/auth.py): `apps/gateway/app/routes/auth.py`
- [Store routes](https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/gateway/app/routes/stores.py): `apps/gateway/app/routes/stores.py`
- [Catalog routes](https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/gateway/app/routes/catalog.py): `apps/gateway/app/routes/catalog.py`
- [Upload routes](https://github.com/laoluafolami/netiks_store_wk4/blob/main/apps/gateway/app/routes/uploads.py): `apps/gateway/app/routes/uploads.py`

### Marketplace services

- [Identity service](https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/identity-service/app/routes.py): `services/identity-service/app/routes.py`
- [Vendor service](https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/vendor-service/app/routes.py): `services/vendor-service/app/routes.py`
- [Catalog service](https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/catalog-service/app/routes.py): `services/catalog-service/app/routes.py`
- [Media service](https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/media-service/app/main.py): `services/media-service/app/main.py`
- [Admin service](https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/admin-service/app/main.py): `services/admin-service/app/main.py`

### Persistence and media

- [Identity database](https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/identity-service/app/database.py): `services/identity-service/app/database.py`
- [Vendor database](https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/vendor-service/app/database.py): `services/vendor-service/app/database.py`
- [Catalog database](https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/catalog-service/app/database.py): `services/catalog-service/app/database.py`
- [Uploaded media](https://github.com/laoluafolami/netiks_store_wk4/blob/main/services/media-service/app/service.py): `services/media-service/app/service.py`

### Other components

- **Shopper**
- **Seller**

## Connections

- Shopper → Storefront pages: browses
- Storefront pages → Checkout action: submits order
- Checkout action → API proxy: posts checkout
- Seller → Storefront pages: uses account
- Seller → Seller studio: manages shop
- Seller → Vendor dashboard: manages listings
- Seller studio → Studio actions: submits actions
- Vendor dashboard → Dashboard actions: submits actions
- Storefront pages → Auth actions: authenticates
- Studio actions → Gateway router: calls API
- Dashboard actions → Gateway router: calls API
- Checkout action → Gateway router: posts order
- API proxy → Gateway router: forwards requests
- Gateway router → Auth routes: dispatches auth
- Gateway router → Store routes: dispatches stores
- Gateway router → Catalog routes: dispatches catalog
- Gateway router → Upload routes: dispatches uploads
- Auth routes → Identity service: forwards auth
- Store routes → Vendor service: forwards stores
- Catalog routes → Catalog service: forwards catalog
- Upload routes → Media service: forwards uploads
- Identity service → Identity database: reads/writes
- Vendor service → Vendor database: reads/writes
- Catalog service → Catalog database: reads/writes
- Media service → Uploaded media: saves/resolves
