# ivanshu111/customerrelationshipmanagement_crm architecture

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

## Overview

This is a multi-service enterprise CRM: employees and administrators use a React SPA to manage customers, interactions, lead conversion, workforce lifecycle requests, and analytics. The main request path runs from the authenticated frontend through the Spring REST API into domain services and repositories backed by MySQL. Separate branches provide live SSE notifications, natural-language SQL analytics through a Python service, and transactional email through a .NET service. The README documents these integrations; sampled code confirms selected entry points and calls, so unsampled domain wiring is summarized rather than inferred.

Main entry points: [`Backend/CRM/src/main/java/com/sunbeam/CRM/service`](https://github.com/ivanshu111/customerrelationshipmanagement_crm/tree/main/Backend/CRM/src/main/java/com/sunbeam/CRM/service) (Domain services), [`Backend/CRM/src/main/java/com/sunbeam/CRM/repository`](https://github.com/ivanshu111/customerrelationshipmanagement_crm/tree/main/Backend/CRM/src/main/java/com/sunbeam/CRM/repository) (Persistence repositories), [`Frontend/CRM/src/App.jsx`](https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Frontend/CRM/src/App.jsx) (React SPA), [`Backend/CRM/src/main/java/com/sunbeam/CRM/controller`](https://github.com/ivanshu111/customerrelationshipmanagement_crm/tree/main/Backend/CRM/src/main/java/com/sunbeam/CRM/controller) (REST controllers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["CRM Client"]
  node_spa["React SPA<br/>[App.jsx]"]
  node_routes["Protected routes<br/>[AppRoutes.jsx]"]
  node_chatwidget["Chatbot widget<br/>[ChatbotWidget.jsx]"]
end

subgraph group_core["CRM API"]
  node_crmapi["REST controllers"]
  node_security["JWT security"]
  node_repositories["Persistence repositories"]
  node_mysql[("CRM database")]
  node_ssecontroller["SSE endpoint"]
  node_sse["SSE delivery"]
end

subgraph group_domain["CRM Workflows"]
  node_services["Domain services"]
  node_customers["Customer management"]
  node_leads["Lead pipeline<br/>[LeadsService.java]"]
  node_interactions["Interaction history"]
  node_workforce["Workforce lifecycle<br/>[AdminService.java]"]
  node_recruitment["Applicant workflow"]
end

subgraph group_analytics["AI Analytics"]
  node_chatapi["NL-to-SQL API<br/>[main.py]"]
  node_nlpsql["SQL generation<br/>[nlp_sql.py]"]
  node_chatdb["Analytics database access<br/>[database.py]"]
end

subgraph group_integrations["External Services"]
  node_gemini{{"Gemini AI"}}
  node_emailclient["Email client"]
  node_emailapi["Email API<br/>[EmailController.cs]"]
  node_emailservice["SMTP dispatch<br/>[EmailService.cs]"]
end

node_users(("Employees and admins"))
node_smtp{{"SMTP provider"}}

node_users -->|"use"| node_spa
node_spa -->|"render"| node_routes
node_routes -->|"REST requests"| node_crmapi
node_crmapi -->|"authorize"| node_security
node_crmapi -->|"dispatch"| node_services
node_services -->|"customer operations"| node_customers
node_services -->|"lead operations"| node_leads
node_services -->|"interaction operations"| node_interactions
node_services -->|"admin operations"| node_workforce
node_services -->|"recruitment operations"| node_recruitment
node_customers -->|"persist and query"| node_repositories
node_leads -->|"persist and query"| node_repositories
node_interactions -->|"persist and query"| node_repositories
node_workforce -->|"persist and query"| node_repositories
node_recruitment -->|"persist and query"| node_repositories
node_repositories -->|"read and write"| node_mysql
node_spa -->|"EventSource"| node_ssecontroller
node_ssecontroller -->|"open connection"| node_sse
node_sse -->|"push events"| node_spa
node_chatwidget -->|"submit query"| node_chatapi
node_chatapi -->|"process question"| node_nlpsql
node_nlpsql -->|"generate SQL"| node_gemini
node_nlpsql -->|"execute query"| node_chatdb
node_chatdb -->|"read CRM data"| node_mysql
node_services -.->|"send email"| node_emailclient
node_emailclient -.->|"HTTP request"| node_emailapi
node_emailapi -->|"dispatch"| node_emailservice
node_emailservice -.->|"send message"| node_smtp

click node_spa "https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Frontend/CRM/src/App.jsx"
click node_routes "https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Frontend/CRM/src/routers/AppRoutes.jsx"
click node_chatwidget "https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Frontend/CRM/src/components/ChatbotWidget.jsx"
click node_crmapi "https://github.com/ivanshu111/customerrelationshipmanagement_crm/tree/main/Backend/CRM/src/main/java/com/sunbeam/CRM/controller"
click node_security "https://github.com/ivanshu111/customerrelationshipmanagement_crm/tree/main/Backend/CRM/src/main/java/com/sunbeam/CRM/security"
click node_services "https://github.com/ivanshu111/customerrelationshipmanagement_crm/tree/main/Backend/CRM/src/main/java/com/sunbeam/CRM/service"
click node_customers "https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Backend/CRM/src/main/java/com/sunbeam/CRM/service/CustomerService.java"
click node_leads "https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Backend/CRM/src/main/java/com/sunbeam/CRM/service/LeadsService.java"
click node_interactions "https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Backend/CRM/src/main/java/com/sunbeam/CRM/service/InteractionService.java"
click node_workforce "https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Backend/CRM/src/main/java/com/sunbeam/CRM/service/AdminService.java"
click node_recruitment "https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Backend/CRM/src/main/java/com/sunbeam/CRM/service/RecruitmentService.java"
click node_repositories "https://github.com/ivanshu111/customerrelationshipmanagement_crm/tree/main/Backend/CRM/src/main/java/com/sunbeam/CRM/repository"
click node_ssecontroller "https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Backend/CRM/src/main/java/com/sunbeam/CRM/controller/NotificationSseController.java"
click node_sse "https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Backend/CRM/src/main/java/com/sunbeam/CRM/service/impl/SseNotificationService.java"
click node_chatapi "https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/chatbot/main.py"
click node_nlpsql "https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/chatbot/nlp_sql.py"
click node_chatdb "https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/chatbot/database.py"
click node_emailclient "https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Backend/CRM/src/main/java/com/sunbeam/CRM/service/impl/EmailClientService.java"
click node_emailapi "https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Net/CrmEmailService/Controllers/EmailController.cs"
click node_emailservice "https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Net/CrmEmailService/Services/EmailService.cs"

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_spa,node_routes,node_chatwidget toneBlue
class node_crmapi,node_security,node_repositories,node_mysql,node_ssecontroller,node_sse toneAmber
class node_services,node_customers,node_leads,node_interactions,node_workforce,node_recruitment toneMint
class node_chatapi,node_nlpsql,node_chatdb toneRose
class node_gemini,node_emailclient,node_emailapi,node_emailservice,node_users,node_smtp toneIndigo
```

## Components

### CRM Client

- [React SPA](https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Frontend/CRM/src/App.jsx): `Frontend/CRM/src/App.jsx`
- [Protected routes](https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Frontend/CRM/src/routers/AppRoutes.jsx): `Frontend/CRM/src/routers/AppRoutes.jsx`
- [Chatbot widget](https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Frontend/CRM/src/components/ChatbotWidget.jsx): `Frontend/CRM/src/components/ChatbotWidget.jsx`

### CRM API

- [REST controllers](https://github.com/ivanshu111/customerrelationshipmanagement_crm/tree/main/Backend/CRM/src/main/java/com/sunbeam/CRM/controller): `Backend/CRM/src/main/java/com/sunbeam/CRM/controller`
- [JWT security](https://github.com/ivanshu111/customerrelationshipmanagement_crm/tree/main/Backend/CRM/src/main/java/com/sunbeam/CRM/security): `Backend/CRM/src/main/java/com/sunbeam/CRM/security`
- [Persistence repositories](https://github.com/ivanshu111/customerrelationshipmanagement_crm/tree/main/Backend/CRM/src/main/java/com/sunbeam/CRM/repository): `Backend/CRM/src/main/java/com/sunbeam/CRM/repository`
- **CRM database**
- [SSE endpoint](https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Backend/CRM/src/main/java/com/sunbeam/CRM/controller/NotificationSseController.java): `Backend/CRM/src/main/java/com/sunbeam/CRM/controller/NotificationSseController.java`
- [SSE delivery](https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Backend/CRM/src/main/java/com/sunbeam/CRM/service/impl/SseNotificationService.java): `Backend/CRM/src/main/java/com/sunbeam/CRM/service/impl/SseNotificationService.java`

### CRM Workflows

- [Domain services](https://github.com/ivanshu111/customerrelationshipmanagement_crm/tree/main/Backend/CRM/src/main/java/com/sunbeam/CRM/service): `Backend/CRM/src/main/java/com/sunbeam/CRM/service`
- [Customer management](https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Backend/CRM/src/main/java/com/sunbeam/CRM/service/CustomerService.java): `Backend/CRM/src/main/java/com/sunbeam/CRM/service/CustomerService.java`
- [Lead pipeline](https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Backend/CRM/src/main/java/com/sunbeam/CRM/service/LeadsService.java): `Backend/CRM/src/main/java/com/sunbeam/CRM/service/LeadsService.java`
- [Interaction history](https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Backend/CRM/src/main/java/com/sunbeam/CRM/service/InteractionService.java): `Backend/CRM/src/main/java/com/sunbeam/CRM/service/InteractionService.java`
- [Workforce lifecycle](https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Backend/CRM/src/main/java/com/sunbeam/CRM/service/AdminService.java): `Backend/CRM/src/main/java/com/sunbeam/CRM/service/AdminService.java`
- [Applicant workflow](https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Backend/CRM/src/main/java/com/sunbeam/CRM/service/RecruitmentService.java): `Backend/CRM/src/main/java/com/sunbeam/CRM/service/RecruitmentService.java`

### AI Analytics

- [NL-to-SQL API](https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/chatbot/main.py): `chatbot/main.py`
- [SQL generation](https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/chatbot/nlp_sql.py): `chatbot/nlp_sql.py`
- [Analytics database access](https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/chatbot/database.py): `chatbot/database.py`

### External Services

- **Gemini AI**
- [Email client](https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Backend/CRM/src/main/java/com/sunbeam/CRM/service/impl/EmailClientService.java): `Backend/CRM/src/main/java/com/sunbeam/CRM/service/impl/EmailClientService.java`
- [Email API](https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Net/CrmEmailService/Controllers/EmailController.cs): `Net/CrmEmailService/Controllers/EmailController.cs`
- [SMTP dispatch](https://github.com/ivanshu111/customerrelationshipmanagement_crm/blob/main/Net/CrmEmailService/Services/EmailService.cs): `Net/CrmEmailService/Services/EmailService.cs`

### Other components

- **Employees and admins**
- **SMTP provider**

## Connections

- Employees and admins → React SPA: use
- React SPA → Protected routes: render
- Protected routes → REST controllers: REST requests
- REST controllers → JWT security: authorize
- REST controllers → Domain services: dispatch
- Domain services → Customer management: customer operations
- Domain services → Lead pipeline: lead operations
- Domain services → Interaction history: interaction operations
- Domain services → Workforce lifecycle: admin operations
- Domain services → Applicant workflow: recruitment operations
- Customer management → Persistence repositories: persist and query
- Lead pipeline → Persistence repositories: persist and query
- Interaction history → Persistence repositories: persist and query
- Workforce lifecycle → Persistence repositories: persist and query
- Applicant workflow → Persistence repositories: persist and query
- Persistence repositories → CRM database: read and write
- React SPA → SSE endpoint: EventSource
- SSE endpoint → SSE delivery: open connection
- SSE delivery → React SPA: push events
- Chatbot widget → NL-to-SQL API: submit query
- NL-to-SQL API → SQL generation: process question
- SQL generation → Gemini AI: generate SQL
- SQL generation → Analytics database access: execute query
- Analytics database access → CRM database: read CRM data
- Domain services → Email client: send email
- Email client → Email API: HTTP request
- Email API → SMTP dispatch: dispatch
- SMTP dispatch → SMTP provider: send message
