# btcrm2026/bond-therapy-crm architecture

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

- Interactive diagram: https://gitdiagram.com/btcrm2026/bond-therapy-crm
- Repository: https://github.com/btcrm2026/bond-therapy-crm

## Overview

Bond Therapy CRM is a multi-portal system for salon/customer relationship management, field sales, distributor operations, billing, and staff administration. Admin, staff, and distributor users work through the Next.js portals, which proxy requests to a NestJS API; API services enforce domain rules and persist business state through Prisma. The graph retains documented portal capabilities from the tree, while detailed call ownership is shown only where controller/service source was sampled; unsampled subsystems are represented without speculative internal wiring.

Main entry points: [`apps/api/src/main.ts`](https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/main.ts) (NestJS API), [`apps/api/src/prisma/prisma.service.ts`](https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/prisma/prisma.service.ts) (Prisma data access), [`apps/web/src/app/api`](https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/web/src/app/api) (API route proxies), [`apps/web/src/app/dashboard`](https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/web/src/app/dashboard) (Admin/staff portal)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_portal["User portals"]
  node_web_admin["Admin/staff portal"]
  node_web_dist["Distributor portal"]
  node_web_proxy["API route proxies"]
end

subgraph group_core["CRM and sales"]
  node_clients["Salon CRM"]
  node_leads["Lead management"]
  node_products["Product catalogue"]
  node_sales["Sales analytics"]
  node_targets_incentives["Targets and incentives"]
end

subgraph group_operations["Field operations"]
  node_territory["Territory planning"]
  node_routes["Field routes and visits<br/>[routes.service.ts]"]
  node_attendance["Attendance and leave"]
  node_staff["Staff administration"]
  node_letters["HR letters"]
end

subgraph group_commerce["Orders and billing"]
  node_distributors["Distributor accounts"]
  node_stock["Inventory and replenishment"]
  node_orders["Order processing"]
  node_billing["Invoices and payments"]
end

subgraph group_platform["Identity and persistence"]
  node_api["NestJS API<br/>[main.ts]"]
  node_auth["Portal authentication<br/>[auth.service.ts]"]
  node_prisma["Prisma data access<br/>[prisma.service.ts]"]
  node_notifications["Notifications"]
  node_db[("Application database<br/>[schema.prisma]")]
end

node_admin_staff(("Admin and staff users"))
node_distributor_actor(("Distributor users"))

node_admin_staff -->|"uses"| node_web_admin
node_distributor_actor -->|"uses"| node_web_dist
node_web_admin -->|"requests"| node_web_proxy
node_web_dist -->|"requests"| node_web_proxy
node_web_proxy -->|"forwards"| node_api
node_api -->|"dispatches auth"| node_auth
node_api -->|"dispatches CRM"| node_clients
node_api -->|"dispatches leads"| node_leads
node_api -->|"dispatches catalogue"| node_products
node_api -->|"dispatches reports"| node_sales
node_api -->|"dispatches calculations"| node_targets_incentives
node_api -->|"dispatches territory"| node_territory
node_api -->|"dispatches visits"| node_routes
node_api -->|"dispatches attendance"| node_attendance
node_api -->|"dispatches staff"| node_staff
node_api -->|"dispatches accounts"| node_distributors
node_api -->|"dispatches stock"| node_stock
node_api -->|"dispatches orders"| node_orders
node_api -->|"dispatches billing"| node_billing
node_api -->|"dispatches letters"| node_letters
node_api -->|"dispatches notices"| node_notifications
node_territory -->|"reads/writes"| node_prisma
node_routes -->|"reads/writes"| node_prisma
node_auth -->|"reads/writes"| node_prisma
node_clients -->|"reads/writes"| node_prisma
node_attendance -->|"reads/writes"| node_prisma
node_orders -->|"reads/writes"| node_prisma
node_billing -->|"reads/writes"| node_prisma
node_prisma -->|"queries"| node_db

click node_web_admin "https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/web/src/app/dashboard"
click node_web_dist "https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/web/src/app/distributor"
click node_web_proxy "https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/web/src/app/api"
click node_api "https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/main.ts"
click node_auth "https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/auth/auth.service.ts"
click node_prisma "https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/prisma/prisma.service.ts"
click node_clients "https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/clients/clients.controller.ts"
click node_leads "https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/api/src/leads"
click node_products "https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/api/src/products"
click node_sales "https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/api/src/sales"
click node_targets_incentives "https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/api/src/incentive-rules"
click node_territory "https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/territory/territory.controller.ts"
click node_routes "https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/routes/routes.service.ts"
click node_attendance "https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/attendance/attendance.controller.ts"
click node_staff "https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/api/src/users"
click node_distributors "https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/distributors/distributors.controller.ts"
click node_stock "https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/api/src/distributor-stock"
click node_orders "https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/orders/orders.controller.ts"
click node_billing "https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/billing/billing.controller.ts"
click node_letters "https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/letters/letters.controller.ts"
click node_notifications "https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/api/src/notifications"
click node_db "https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/prisma/schema.prisma"

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_admin,node_web_dist,node_web_proxy,node_admin_staff,node_distributor_actor toneBlue
class node_clients,node_leads,node_products,node_sales,node_targets_incentives toneAmber
class node_territory,node_routes,node_attendance,node_staff,node_letters toneMint
class node_distributors,node_stock,node_orders,node_billing toneRose
class node_api,node_auth,node_prisma,node_notifications,node_db toneIndigo
```

## Components

### User portals

- [Admin/staff portal](https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/web/src/app/dashboard): `apps/web/src/app/dashboard`
- [Distributor portal](https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/web/src/app/distributor): `apps/web/src/app/distributor`
- [API route proxies](https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/web/src/app/api): `apps/web/src/app/api`

### CRM and sales

- [Salon CRM](https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/clients/clients.controller.ts): `apps/api/src/clients/clients.controller.ts`
- [Lead management](https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/api/src/leads): `apps/api/src/leads`
- [Product catalogue](https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/api/src/products): `apps/api/src/products`
- [Sales analytics](https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/api/src/sales): `apps/api/src/sales`
- [Targets and incentives](https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/api/src/incentive-rules): `apps/api/src/incentive-rules`

### Field operations

- [Territory planning](https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/territory/territory.controller.ts): `apps/api/src/territory/territory.controller.ts`
- [Field routes and visits](https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/routes/routes.service.ts): `apps/api/src/routes/routes.service.ts`
- [Attendance and leave](https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/attendance/attendance.controller.ts): `apps/api/src/attendance/attendance.controller.ts`
- [Staff administration](https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/api/src/users): `apps/api/src/users`
- [HR letters](https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/letters/letters.controller.ts): `apps/api/src/letters/letters.controller.ts`

### Orders and billing

- [Distributor accounts](https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/distributors/distributors.controller.ts): `apps/api/src/distributors/distributors.controller.ts`
- [Inventory and replenishment](https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/api/src/distributor-stock): `apps/api/src/distributor-stock`
- [Order processing](https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/orders/orders.controller.ts): `apps/api/src/orders/orders.controller.ts`
- [Invoices and payments](https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/billing/billing.controller.ts): `apps/api/src/billing/billing.controller.ts`

### Identity and persistence

- [NestJS API](https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/main.ts): `apps/api/src/main.ts`
- [Portal authentication](https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/auth/auth.service.ts): `apps/api/src/auth/auth.service.ts`
- [Prisma data access](https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/src/prisma/prisma.service.ts): `apps/api/src/prisma/prisma.service.ts`
- [Notifications](https://github.com/btcrm2026/bond-therapy-crm/tree/main/apps/api/src/notifications): `apps/api/src/notifications`
- [Application database](https://github.com/btcrm2026/bond-therapy-crm/blob/main/apps/api/prisma/schema.prisma): `apps/api/prisma/schema.prisma`

### Other components

- **Admin and staff users**
- **Distributor users**

## Connections

- Admin and staff users → Admin/staff portal: uses
- Distributor users → Distributor portal: uses
- Admin/staff portal → API route proxies: requests
- Distributor portal → API route proxies: requests
- API route proxies → NestJS API: forwards
- NestJS API → Portal authentication: dispatches auth
- NestJS API → Salon CRM: dispatches CRM
- NestJS API → Lead management: dispatches leads
- NestJS API → Product catalogue: dispatches catalogue
- NestJS API → Sales analytics: dispatches reports
- NestJS API → Targets and incentives: dispatches calculations
- NestJS API → Territory planning: dispatches territory
- NestJS API → Field routes and visits: dispatches visits
- NestJS API → Attendance and leave: dispatches attendance
- NestJS API → Staff administration: dispatches staff
- NestJS API → Distributor accounts: dispatches accounts
- NestJS API → Inventory and replenishment: dispatches stock
- NestJS API → Order processing: dispatches orders
- NestJS API → Invoices and payments: dispatches billing
- NestJS API → HR letters: dispatches letters
- NestJS API → Notifications: dispatches notices
- Territory planning → Prisma data access: reads/writes
- Field routes and visits → Prisma data access: reads/writes
- Portal authentication → Prisma data access: reads/writes
- Salon CRM → Prisma data access: reads/writes
- Attendance and leave → Prisma data access: reads/writes
- Order processing → Prisma data access: reads/writes
- Invoices and payments → Prisma data access: reads/writes
- Prisma data access → Application database: queries
