# devsolanki13/crm-demo architecture

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

- Interactive diagram: https://gitdiagram.com/devsolanki13/crm-demo
- Repository: https://github.com/devsolanki13/crm-demo

## Overview

Sales CRM supports B2B pipeline management, stage qualification and approvals, customer records, recurring orders, reporting, follow-ups, and Google Workspace connections. The principal workflow is a rep or manager using the React workspace to manage a lead/deal, submit a stage transition, and have the API apply CRM rules and persist state. The excerpts show the app/client/API route flow and selected service responsibilities; several capability links rely on README documentation, so unsampled implementation details and their internal calls are not expanded.

Main entry points: [`backend/controllers/crmController.js`](https://github.com/devsolanki13/crm-demo/blob/main/backend/controllers/crmController.js) (CRM controller), [`frontend/App.jsx`](https://github.com/devsolanki13/crm-demo/blob/main/frontend/App.jsx) (CRM workspace), [`backend/services/dealService.js`](https://github.com/devsolanki13/crm-demo/blob/main/backend/services/dealService.js) (Deal management), [`frontend/api/crmClient.js`](https://github.com/devsolanki13/crm-demo/blob/main/frontend/api/crmClient.js) (API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Sales workspace"]
  node_workspace["CRM workspace<br/>[App.jsx]"]
  node_pipeline["Pipeline board<br/>[PipelineView.jsx]"]
  node_tasks["Tasks agenda<br/>[TasksView.jsx]"]
  node_client["API client<br/>[crmClient.js]"]
  node_pagination["Records paging<br/>[useRecordsPage.js]"]
end

subgraph group_api["CRM API and domain"]
  node_server["Express API<br/>[app.js]"]
  node_routes["CRM routes<br/>[crmRoutes.js]"]
  node_controller["CRM controller<br/>[crmController.js]"]
  node_lead["Lead management<br/>[leadService.js]"]
  node_deals["Deal management<br/>[dealService.js]"]
  node_customers["Customer records<br/>[companyService.js]"]
  node_reporting["Reports and dashboard<br/>[reportService.js]"]
  node_timeline["Activity timeline<br/>[timelineService.js]"]
end

subgraph group_governance["Governance and automation"]
  node_stages["Stage governance<br/>[stageService.js]"]
  node_stagegate["Stage qualification"]
  node_approvals["Manager approvals"]
  node_recurrence["Renewal generation"]
  node_followup["Follow-up automation<br/>[followUpEngine.js]"]
  node_automationroutes["Automation routes"]
end

subgraph group_data["Persistence and integrations"]
  node_database[("PostgreSQL<br/>[prisma.js]")]
  node_google["Google Workspace"]
  node_integration["Google connections"]
  node_integrationroutes["Integration routes"]
end

node_user(("Sales user"))

node_user -->|"uses"| node_workspace
node_workspace -->|"requests data"| node_client
node_pipeline -.->|"renders in"| node_workspace
node_tasks -.->|"renders in"| node_workspace
node_pagination -->|"fetches pages"| node_client
node_client -->|"calls API"| node_routes
node_server -->|"mounts"| node_routes
node_routes -->|"dispatches"| node_controller
node_controller -->|"manages leads"| node_lead
node_controller -->|"manages deals"| node_deals
node_controller -->|"manages companies"| node_customers
node_controller -->|"builds reports"| node_reporting
node_controller -.->|"manages stages"| node_stages
node_deals -.->|"qualifies transitions"| node_stagegate
node_stagegate -.->|"requests review"| node_approvals
node_deals -.->|"generates renewals"| node_recurrence
node_followup -->|"creates tasks"| node_database
node_reporting -.->|"reads CRM data"| node_database
node_timeline -.->|"reads activity"| node_database
node_integrationroutes -->|"dispatches OAuth"| node_integration
node_integration -.->|"connects account"| node_google
node_automationroutes -.->|"runs automation"| node_followup

click node_workspace "https://github.com/devsolanki13/crm-demo/blob/main/frontend/App.jsx"
click node_pipeline "https://github.com/devsolanki13/crm-demo/blob/main/frontend/components/PipelineView.jsx"
click node_tasks "https://github.com/devsolanki13/crm-demo/blob/main/frontend/components/TasksView.jsx"
click node_client "https://github.com/devsolanki13/crm-demo/blob/main/frontend/api/crmClient.js"
click node_pagination "https://github.com/devsolanki13/crm-demo/blob/main/frontend/hooks/useRecordsPage.js"
click node_server "https://github.com/devsolanki13/crm-demo/blob/main/backend/app.js"
click node_routes "https://github.com/devsolanki13/crm-demo/blob/main/backend/routes/crmRoutes.js"
click node_controller "https://github.com/devsolanki13/crm-demo/blob/main/backend/controllers/crmController.js"
click node_lead "https://github.com/devsolanki13/crm-demo/blob/main/backend/services/leadService.js"
click node_deals "https://github.com/devsolanki13/crm-demo/blob/main/backend/services/dealService.js"
click node_customers "https://github.com/devsolanki13/crm-demo/blob/main/backend/services/companyService.js"
click node_stages "https://github.com/devsolanki13/crm-demo/blob/main/backend/services/stageService.js"
click node_stagegate "https://github.com/devsolanki13/crm-demo/blob/main/backend/services/stageGateService.js"
click node_approvals "https://github.com/devsolanki13/crm-demo/blob/main/backend/services/approvalExecutionService.js"
click node_recurrence "https://github.com/devsolanki13/crm-demo/blob/main/backend/services/leadRecurrenceService.js"
click node_followup "https://github.com/devsolanki13/crm-demo/blob/main/backend/services/followUpEngine.js"
click node_reporting "https://github.com/devsolanki13/crm-demo/blob/main/backend/services/reportService.js"
click node_timeline "https://github.com/devsolanki13/crm-demo/blob/main/backend/services/timelineService.js"
click node_database "https://github.com/devsolanki13/crm-demo/blob/main/backend/prisma.js"
click node_integration "https://github.com/devsolanki13/crm-demo/blob/main/backend/integrations/googleConnection.js"
click node_integrationroutes "https://github.com/devsolanki13/crm-demo/blob/main/backend/routes/integrationRoutes.js"
click node_automationroutes "https://github.com/devsolanki13/crm-demo/blob/main/backend/routes/automationCronRoutes.js"

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_workspace,node_pipeline,node_tasks,node_client,node_pagination,node_user toneBlue
class node_server,node_routes,node_controller,node_lead,node_deals,node_customers,node_reporting,node_timeline toneAmber
class node_stages,node_stagegate,node_approvals,node_recurrence,node_followup,node_automationroutes toneMint
class node_database,node_google,node_integration,node_integrationroutes toneRose
```

## Components

### Sales workspace

- [CRM workspace](https://github.com/devsolanki13/crm-demo/blob/main/frontend/App.jsx): `frontend/App.jsx`
- [Pipeline board](https://github.com/devsolanki13/crm-demo/blob/main/frontend/components/PipelineView.jsx): `frontend/components/PipelineView.jsx`
- [Tasks agenda](https://github.com/devsolanki13/crm-demo/blob/main/frontend/components/TasksView.jsx): `frontend/components/TasksView.jsx`
- [API client](https://github.com/devsolanki13/crm-demo/blob/main/frontend/api/crmClient.js): `frontend/api/crmClient.js`
- [Records paging](https://github.com/devsolanki13/crm-demo/blob/main/frontend/hooks/useRecordsPage.js): `frontend/hooks/useRecordsPage.js`

### CRM API and domain

- [Express API](https://github.com/devsolanki13/crm-demo/blob/main/backend/app.js): `backend/app.js`
- [CRM routes](https://github.com/devsolanki13/crm-demo/blob/main/backend/routes/crmRoutes.js): `backend/routes/crmRoutes.js`
- [CRM controller](https://github.com/devsolanki13/crm-demo/blob/main/backend/controllers/crmController.js): `backend/controllers/crmController.js`
- [Lead management](https://github.com/devsolanki13/crm-demo/blob/main/backend/services/leadService.js): `backend/services/leadService.js`
- [Deal management](https://github.com/devsolanki13/crm-demo/blob/main/backend/services/dealService.js): `backend/services/dealService.js`
- [Customer records](https://github.com/devsolanki13/crm-demo/blob/main/backend/services/companyService.js): `backend/services/companyService.js`
- [Reports and dashboard](https://github.com/devsolanki13/crm-demo/blob/main/backend/services/reportService.js): `backend/services/reportService.js`
- [Activity timeline](https://github.com/devsolanki13/crm-demo/blob/main/backend/services/timelineService.js): `backend/services/timelineService.js`

### Governance and automation

- [Stage governance](https://github.com/devsolanki13/crm-demo/blob/main/backend/services/stageService.js): `backend/services/stageService.js`
- [Stage qualification](https://github.com/devsolanki13/crm-demo/blob/main/backend/services/stageGateService.js): `backend/services/stageGateService.js`
- [Manager approvals](https://github.com/devsolanki13/crm-demo/blob/main/backend/services/approvalExecutionService.js): `backend/services/approvalExecutionService.js`
- [Renewal generation](https://github.com/devsolanki13/crm-demo/blob/main/backend/services/leadRecurrenceService.js): `backend/services/leadRecurrenceService.js`
- [Follow-up automation](https://github.com/devsolanki13/crm-demo/blob/main/backend/services/followUpEngine.js): `backend/services/followUpEngine.js`
- [Automation routes](https://github.com/devsolanki13/crm-demo/blob/main/backend/routes/automationCronRoutes.js): `backend/routes/automationCronRoutes.js`

### Persistence and integrations

- [PostgreSQL](https://github.com/devsolanki13/crm-demo/blob/main/backend/prisma.js): `backend/prisma.js`
- **Google Workspace**
- [Google connections](https://github.com/devsolanki13/crm-demo/blob/main/backend/integrations/googleConnection.js): `backend/integrations/googleConnection.js`
- [Integration routes](https://github.com/devsolanki13/crm-demo/blob/main/backend/routes/integrationRoutes.js): `backend/routes/integrationRoutes.js`

### Other components

- **Sales user**

## Connections

- Sales user → CRM workspace: uses (evidence: `README.md`)
- CRM workspace → API client: requests data (evidence: `frontend/App.jsx`)
- Pipeline board → CRM workspace: renders in
- Tasks agenda → CRM workspace: renders in
- Records paging → API client: fetches pages (evidence: `frontend/hooks/useRecordsPage.js`)
- API client → CRM routes: calls API (evidence: `frontend/api/crmClient.js`)
- Express API → CRM routes: mounts (evidence: `backend/app.js`)
- CRM routes → CRM controller: dispatches (evidence: `backend/routes/crmRoutes.js`)
- CRM controller → Lead management: manages leads (evidence: `backend/controllers/crmController.js`)
- CRM controller → Deal management: manages deals (evidence: `backend/controllers/crmController.js`)
- CRM controller → Customer records: manages companies (evidence: `backend/controllers/crmController.js`)
- CRM controller → Reports and dashboard: builds reports (evidence: `backend/controllers/crmController.js`)
- CRM controller → Stage governance: manages stages (evidence: `backend/controllers/crmController.js`)
- Deal management → Stage qualification: qualifies transitions (evidence: `README.md`)
- Stage qualification → Manager approvals: requests review (evidence: `README.md`)
- Deal management → Renewal generation: generates renewals (evidence: `README.md`)
- Follow-up automation → PostgreSQL: creates tasks (evidence: `backend/services/followUpEngine.js`)
- Reports and dashboard → PostgreSQL: reads CRM data
- Activity timeline → PostgreSQL: reads activity
- Integration routes → Google connections: dispatches OAuth (evidence: `backend/routes/integrationRoutes.js`)
- Google connections → Google Workspace: connects account
- Automation routes → Follow-up automation: runs automation
