# juvetus/artisanconnect- architecture

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

## Overview

ArtisanConnect is a two-sided artisan marketplace with product listings and a distinct custom-service ordering flow, alongside institutional, subscription, and platform-support capabilities. The documented buyer journey runs from account creation and discovery through ordering, payment confirmation, and review; artisans publish listings and manage sales. Source excerpts verify selected backend controller-to-service calls, while several other branches are included from the repository tree and README. Frontend-to-API wiring and unsampled subsystem internals are not asserted.

Main entry points: [`backend/src/modules/listings/listings.service.ts`](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/listings/listings.service.ts) (Product listings), [`backend/src/modules/auth/auth.service.ts`](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/auth/auth.service.ts) (Authentication), [`backend/src/modules/service-orders/service-orders.service.ts`](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/service-orders/service-orders.service.ts) (Service orders and quotes), [`backend/src/app.module.ts`](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/app.module.ts) (NestJS API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application entry"]
  node_web["Marketplace web app<br/>[page.tsx]"]
  node_api["NestJS API<br/>[app.module.ts]"]
  node_postgres[("PostgreSQL")]
end

subgraph group_identity["Identity and accounts"]
  node_auth["Authentication<br/>[auth.service.ts]"]
  node_users["User accounts<br/>[users.service.ts]"]
end

subgraph group_market["Marketplace transactions"]
  node_listings["Product listings"]
  node_orders["Product orders<br/>[orders.service.ts]"]
  node_payments["Payments and escrow"]
  node_reviews["Product reviews<br/>[reviews.service.ts]"]
  node_shops["Artisan shops<br/>[shops.service.ts]"]
end

subgraph group_services["Custom services"]
  node_services["Service catalog"]
  node_serviceorders["Service orders and quotes"]
  node_servicereviews["Service reviews"]
end

subgraph group_platform["Platform capabilities"]
  node_storage["Media storage<br/>[storage.service.ts]"]
  node_subscriptions["Subscriptions"]
  node_institutions["Institutional programs<br/>[program.service.ts]"]
  node_assistant["AI assistant"]
  node_analytics["Analytics"]
  node_messaging["Messaging and notifications"]
  node_moderation["Moderation and reports"]
  node_delivery["Delivery coordination"]
end

node_customer(("Buyer or artisan"))

node_customer -->|"uses"| node_web
node_customer -->|"registers"| node_auth
node_auth -->|"uses"| node_users
node_auth -.->|"serves authentication"| node_api
node_customer -->|"searches"| node_listings
node_customer -->|"places order"| node_orders
node_customer -->|"confirms cash"| node_payments
node_customer -->|"reviews purchase"| node_reviews
node_listings -->|"uses shop data"| node_shops
node_listings -->|"uploads media"| node_storage
node_listings -->|"checks plans"| node_subscriptions
node_customer -.->|"discovers services"| node_services
node_customer -.->|"requests service"| node_serviceorders
node_serviceorders -.->|"enables reviews"| node_servicereviews
node_servicereviews -->|"checks order"| node_serviceorders
node_institutions -->|"manages programs"| node_institutions
node_subscriptions -.->|"payment integration"| node_payments
node_api -.->|"persists data"| node_postgres

click node_web "https://github.com/juvetus/artisanconnect-/blob/main/frontend/src/app/page.tsx"
click node_api "https://github.com/juvetus/artisanconnect-/blob/main/backend/src/app.module.ts"
click node_auth "https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/auth/auth.service.ts"
click node_users "https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/users/users.service.ts"
click node_listings "https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/listings/listings.service.ts"
click node_orders "https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/orders/orders.service.ts"
click node_payments "https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/payments/payments.service.ts"
click node_reviews "https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/reviews/reviews.service.ts"
click node_shops "https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/shops/shops.service.ts"
click node_services "https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/services/services.service.ts"
click node_serviceorders "https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/service-orders/service-orders.service.ts"
click node_servicereviews "https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/service-reviews/service-reviews.service.ts"
click node_storage "https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/storage/storage.service.ts"
click node_subscriptions "https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/subscriptions/subscriptions.service.ts"
click node_institutions "https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/program/program.service.ts"
click node_assistant "https://github.com/juvetus/artisanconnect-/tree/main/backend/src/modules/assistant"
click node_analytics "https://github.com/juvetus/artisanconnect-/tree/main/backend/src/modules/analytics"
click node_messaging "https://github.com/juvetus/artisanconnect-/tree/main/backend/src/modules/messages"
click node_moderation "https://github.com/juvetus/artisanconnect-/tree/main/backend/src/modules/moderation"
click node_delivery "https://github.com/juvetus/artisanconnect-/tree/main/backend/src/modules/delivery"

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,node_api,node_postgres toneBlue
class node_auth,node_users toneAmber
class node_listings,node_orders,node_payments,node_reviews,node_shops toneMint
class node_services,node_serviceorders,node_servicereviews toneRose
class node_storage,node_subscriptions,node_institutions,node_assistant,node_analytics,node_messaging,node_moderation,node_delivery,node_customer toneIndigo
```

## Components

### Application entry

- [Marketplace web app](https://github.com/juvetus/artisanconnect-/blob/main/frontend/src/app/page.tsx): `frontend/src/app/page.tsx`
- [NestJS API](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/app.module.ts): `backend/src/app.module.ts`
- **PostgreSQL**

### Identity and accounts

- [Authentication](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/auth/auth.service.ts): `backend/src/modules/auth/auth.service.ts`
- [User accounts](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/users/users.service.ts): `backend/src/modules/users/users.service.ts`

### Marketplace transactions

- [Product listings](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/listings/listings.service.ts): `backend/src/modules/listings/listings.service.ts`
- [Product orders](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/orders/orders.service.ts): `backend/src/modules/orders/orders.service.ts`
- [Payments and escrow](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/payments/payments.service.ts): `backend/src/modules/payments/payments.service.ts`
- [Product reviews](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/reviews/reviews.service.ts): `backend/src/modules/reviews/reviews.service.ts`
- [Artisan shops](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/shops/shops.service.ts): `backend/src/modules/shops/shops.service.ts`

### Custom services

- [Service catalog](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/services/services.service.ts): `backend/src/modules/services/services.service.ts`
- [Service orders and quotes](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/service-orders/service-orders.service.ts): `backend/src/modules/service-orders/service-orders.service.ts`
- [Service reviews](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/service-reviews/service-reviews.service.ts): `backend/src/modules/service-reviews/service-reviews.service.ts`

### Platform capabilities

- [Media storage](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/storage/storage.service.ts): `backend/src/modules/storage/storage.service.ts`
- [Subscriptions](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/subscriptions/subscriptions.service.ts): `backend/src/modules/subscriptions/subscriptions.service.ts`
- [Institutional programs](https://github.com/juvetus/artisanconnect-/blob/main/backend/src/modules/program/program.service.ts): `backend/src/modules/program/program.service.ts`
- [AI assistant](https://github.com/juvetus/artisanconnect-/tree/main/backend/src/modules/assistant): `backend/src/modules/assistant`
- [Analytics](https://github.com/juvetus/artisanconnect-/tree/main/backend/src/modules/analytics): `backend/src/modules/analytics`
- [Messaging and notifications](https://github.com/juvetus/artisanconnect-/tree/main/backend/src/modules/messages): `backend/src/modules/messages`
- [Moderation and reports](https://github.com/juvetus/artisanconnect-/tree/main/backend/src/modules/moderation): `backend/src/modules/moderation`
- [Delivery coordination](https://github.com/juvetus/artisanconnect-/tree/main/backend/src/modules/delivery): `backend/src/modules/delivery`

### Other components

- **Buyer or artisan**

## Connections

- Buyer or artisan → Marketplace web app: uses
- Buyer or artisan → Authentication: registers
- Authentication → User accounts: uses (evidence: `backend/src/modules/auth/auth.service.ts`)
- Authentication → NestJS API: serves authentication
- Buyer or artisan → Product listings: searches
- Buyer or artisan → Product orders: places order
- Buyer or artisan → Payments and escrow: confirms cash
- Buyer or artisan → Product reviews: reviews purchase
- Product listings → Artisan shops: uses shop data (evidence: `backend/src/modules/listings/listings.controller.ts`)
- Product listings → Media storage: uploads media (evidence: `backend/src/modules/listings/listings.controller.ts`)
- Product listings → Subscriptions: checks plans (evidence: `backend/src/modules/listings/listings.controller.ts`)
- Buyer or artisan → Service catalog: discovers services
- Buyer or artisan → Service orders and quotes: requests service
- Service orders and quotes → Service reviews: enables reviews
- Service reviews → Service orders and quotes: checks order (evidence: `backend/src/modules/service-reviews/service-reviews.service.ts`)
- Institutional programs → Institutional programs: manages programs (evidence: `backend/src/modules/program/program.service.ts`)
- Subscriptions → Payments and escrow: payment integration
- NestJS API → PostgreSQL: persists data
