# sahalpk007/my-crm-monorepo architecture

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

- Interactive diagram: https://gitdiagram.com/sahalpk007/my-crm-monorepo
- Repository: https://github.com/sahalpk007/my-crm-monorepo

## Overview

This is a full-stack CRM: users sign in, then manage customer and sales records, track follow-up activity, and review dashboards and reports through a Next.js interface backed by a NestJS API and PostgreSQL. The graph keeps the principal workflow alongside access control, administration, notifications, and shared import/upload capabilities. Some frontend-to-API wiring and unsampled feature internals are documented only at the product level, so those links are not expanded into speculative call chains.

Main entry points: [`apps/backend/src/app.module.ts`](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/app.module.ts) (NestJS API), [`apps/frontend/src/app/(crm)/layout.tsx`](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/frontend/src/app/(crm)/layout.tsx) (CRM interface), [`apps/backend/src/auth/auth.service.ts`](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/auth/auth.service.ts) (Authentication), [`apps/backend/src/companies/companies.service.ts`](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/companies/companies.service.ts) (Companies)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web workspace"]
  node_webapp["CRM interface<br/>[layout.tsx]"]
  node_dashboard["Dashboard<br/>[page.tsx]"]
  node_sales_ui["Sales workspace<br/>[page.tsx]"]
  node_tasks_ui["Activity workspace<br/>[page.tsx]"]
  node_reports_ui["Reports interface<br/>[page.tsx]"]
end

subgraph group_identity["Identity and access"]
  node_auth["Authentication<br/>[auth.service.ts]"]
  node_user_admin["User administration<br/>[users.service.ts]"]
  node_roles["Role authorization<br/>[roles.guard.ts]"]
end

subgraph group_crm["CRM operations"]
  node_companies["Companies"]
  node_customers["Customers"]
  node_products["Products"]
  node_enquiries["Enquiries"]
  node_validations["Enquiry validation"]
  node_leads["Lead pipeline<br/>[leads.service.ts]"]
  node_activities["Activity tracking<br/>[visits.service.ts]"]
  node_dashboard_api["Dashboard data"]
  node_reports["Reporting and analysis<br/>[reports.service.ts]"]
end

subgraph group_platform["Platform services"]
  node_api["NestJS API<br/>[app.module.ts]"]
  node_notifications["Notifications"]
  node_shared_ops["Import and uploads"]
  node_activity_log["Activity logging"]
  node_database[("PostgreSQL")]
end

node_user(("CRM user"))

node_user -->|"uses"| node_webapp
node_webapp -->|"requests API"| node_api
node_api -.->|"routes auth"| node_auth
node_auth -->|"reads and writes"| node_database
node_auth -->|"sends email"| node_notifications
node_api -.->|"guards routes"| node_roles
node_api -.->|"routes records"| node_companies
node_api -.->|"routes records"| node_customers
node_api -.->|"routes records"| node_products
node_api -.->|"routes records"| node_enquiries
node_api -.->|"routes validation"| node_validations
node_api -.->|"routes leads"| node_leads
node_api -.->|"routes activities"| node_activities
node_api -.->|"routes dashboard"| node_dashboard_api
node_api -->|"routes reports"| node_reports
node_api -->|"routes users"| node_user_admin
node_companies -->|"reads and writes"| node_database
node_leads -->|"reads and writes"| node_database
node_activities -.->|"reads and writes"| node_database
node_reports -.->|"queries data"| node_database
node_customers -->|"imports and uploads"| node_shared_ops
node_companies -->|"imports and uploads"| node_shared_ops
node_products -->|"imports and uploads"| node_shared_ops
node_dashboard -.->|"renders in"| node_webapp
node_sales_ui -.->|"renders in"| node_webapp
node_tasks_ui -.->|"renders in"| node_webapp
node_reports_ui -.->|"renders in"| node_webapp
node_user_admin -->|"reads and writes"| node_database
node_auth -->|"records activity"| node_activity_log
node_companies -->|"records activity"| node_activity_log

click node_webapp "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/frontend/src/app/(crm)/layout.tsx"
click node_dashboard "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/frontend/src/app/(crm)/dashboard/page.tsx"
click node_sales_ui "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/frontend/src/app/(crm)/leads/page.tsx"
click node_tasks_ui "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/frontend/src/app/(crm)/tasks/page.tsx"
click node_reports_ui "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/frontend/src/app/(crm)/reports/page.tsx"
click node_api "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/app.module.ts"
click node_auth "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/auth/auth.service.ts"
click node_user_admin "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/users/users.service.ts"
click node_roles "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/common/guards/roles.guard.ts"
click node_companies "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/companies/companies.service.ts"
click node_customers "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/customers/customers.controller.ts"
click node_products "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/products/products.controller.ts"
click node_enquiries "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/enquiries/enquiries.controller.ts"
click node_validations "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/enquiry-validations/enquiry-validations.service.ts"
click node_leads "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/leads/leads.service.ts"
click node_activities "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/visits/visits.service.ts"
click node_dashboard_api "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/dashboard/dashboard.service.ts"
click node_reports "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/reports/reports.service.ts"
click node_notifications "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/notifications/notifications.service.ts"
click node_shared_ops "https://github.com/sahalpk007/my-crm-monorepo/tree/main/apps/backend/src/common/services"
click node_activity_log "https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/common/services/activity-logger.service.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_webapp,node_dashboard,node_sales_ui,node_tasks_ui,node_reports_ui,node_user toneBlue
class node_auth,node_user_admin,node_roles toneAmber
class node_companies,node_customers,node_products,node_enquiries,node_validations,node_leads,node_activities,node_dashboard_api,node_reports toneMint
class node_api,node_notifications,node_shared_ops,node_activity_log,node_database toneRose
```

## Components

### Web workspace

- [CRM interface](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/frontend/src/app/(crm)/layout.tsx): `apps/frontend/src/app/(crm)/layout.tsx`
- [Dashboard](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/frontend/src/app/(crm)/dashboard/page.tsx): `apps/frontend/src/app/(crm)/dashboard/page.tsx`
- [Sales workspace](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/frontend/src/app/(crm)/leads/page.tsx): `apps/frontend/src/app/(crm)/leads/page.tsx`
- [Activity workspace](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/frontend/src/app/(crm)/tasks/page.tsx): `apps/frontend/src/app/(crm)/tasks/page.tsx`
- [Reports interface](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/frontend/src/app/(crm)/reports/page.tsx): `apps/frontend/src/app/(crm)/reports/page.tsx`

### Identity and access

- [Authentication](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/auth/auth.service.ts): `apps/backend/src/auth/auth.service.ts`
- [User administration](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/users/users.service.ts): `apps/backend/src/users/users.service.ts`
- [Role authorization](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/common/guards/roles.guard.ts): `apps/backend/src/common/guards/roles.guard.ts`

### CRM operations

- [Companies](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/companies/companies.service.ts): `apps/backend/src/companies/companies.service.ts`
- [Customers](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/customers/customers.controller.ts): `apps/backend/src/customers/customers.controller.ts`
- [Products](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/products/products.controller.ts): `apps/backend/src/products/products.controller.ts`
- [Enquiries](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/enquiries/enquiries.controller.ts): `apps/backend/src/enquiries/enquiries.controller.ts`
- [Enquiry validation](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/enquiry-validations/enquiry-validations.service.ts): `apps/backend/src/enquiry-validations/enquiry-validations.service.ts`
- [Lead pipeline](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/leads/leads.service.ts): `apps/backend/src/leads/leads.service.ts`
- [Activity tracking](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/visits/visits.service.ts): `apps/backend/src/visits/visits.service.ts`
- [Dashboard data](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/dashboard/dashboard.service.ts): `apps/backend/src/dashboard/dashboard.service.ts`
- [Reporting and analysis](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/reports/reports.service.ts): `apps/backend/src/reports/reports.service.ts`

### Platform services

- [NestJS API](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/app.module.ts): `apps/backend/src/app.module.ts`
- [Notifications](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/notifications/notifications.service.ts): `apps/backend/src/notifications/notifications.service.ts`
- [Import and uploads](https://github.com/sahalpk007/my-crm-monorepo/tree/main/apps/backend/src/common/services): `apps/backend/src/common/services`
- [Activity logging](https://github.com/sahalpk007/my-crm-monorepo/blob/main/apps/backend/src/common/services/activity-logger.service.ts): `apps/backend/src/common/services/activity-logger.service.ts`
- **PostgreSQL**

### Other components

- **CRM user**

## Connections

- CRM user → CRM interface: uses (evidence: `README.md`)
- CRM interface → NestJS API: requests API (evidence: `README.md`)
- NestJS API → Authentication: routes auth
- Authentication → PostgreSQL: reads and writes (evidence: `apps/backend/src/auth/auth.service.ts`)
- Authentication → Notifications: sends email (evidence: `apps/backend/src/auth/auth.service.ts`)
- NestJS API → Role authorization: guards routes
- NestJS API → Companies: routes records
- NestJS API → Customers: routes records
- NestJS API → Products: routes records
- NestJS API → Enquiries: routes records
- NestJS API → Enquiry validation: routes validation
- NestJS API → Lead pipeline: routes leads
- NestJS API → Activity tracking: routes activities
- NestJS API → Dashboard data: routes dashboard
- NestJS API → Reporting and analysis: routes reports
- NestJS API → User administration: routes users
- Companies → PostgreSQL: reads and writes (evidence: `apps/backend/src/companies/companies.service.ts`)
- Lead pipeline → PostgreSQL: reads and writes
- Activity tracking → PostgreSQL: reads and writes
- Reporting and analysis → PostgreSQL: queries data
- Customers → Import and uploads: imports and uploads (evidence: `apps/backend/src/customers/customers.controller.ts`)
- Companies → Import and uploads: imports and uploads (evidence: `apps/backend/src/companies/companies.controller.ts`)
- Products → Import and uploads: imports and uploads (evidence: `apps/backend/src/products/products.controller.ts`)
- Dashboard → CRM interface: renders in
- Sales workspace → CRM interface: renders in
- Activity workspace → CRM interface: renders in
- Reports interface → CRM interface: renders in
- User administration → PostgreSQL: reads and writes
- Authentication → Activity logging: records activity (evidence: `apps/backend/src/auth/auth.service.ts`)
- Companies → Activity logging: records activity (evidence: `apps/backend/src/companies/companies.service.ts`)
