# arjunsingh-7/crm-taskflow architecture

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

- Interactive diagram: https://gitdiagram.com/arjunsingh-7/crm-taskflow
- Repository: https://github.com/arjunsingh-7/crm-taskflow

## Overview

TaskFlow AI is a multi-tenant team workspace combining project and task management, a CRM pipeline, chat, analytics, and AI assistance. The main flow is a user action in the React client, authenticated backend request, business logic, and persistent data access; real-time changes also reach workspace users through WebSocket. README documents major capabilities and infrastructure, but most service/controller wiring was not sampled, so the graph uses documented layer relationships and leaves uncertain module-specific calls out.

Main entry points: [`crm-backend/src/main/java/com/arjun/crm/controller`](https://github.com/arjunsingh-7/crm-taskflow/tree/main/crm-backend/src/main/java/com/arjun/crm/controller) (REST controllers), [`crm-backend/src/main/java/com/arjun/crm/repository`](https://github.com/arjunsingh-7/crm-taskflow/tree/main/crm-backend/src/main/java/com/arjun/crm/repository) (JPA repositories), [`crm-backend/src/main/java/com/arjun/crm/service/AIInsightService.java`](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/AIInsightService.java) (AI insights), [`crm-backend/src/main/java/com/arjun/crm/service/ChatMessageService.java`](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/ChatMessageService.java) (Team chat)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_frontend["React application<br/>[App.jsx]"]
  node_crm_ui["CRM pipeline UI<br/>[CRMPipeline.jsx]"]
  node_auth_ui["Authentication hook<br/>[useAuth.js]"]
end

subgraph group_api["API and access"]
  node_controllers["REST controllers"]
  node_jwt["JWT security"]
  node_workspace_auth["Workspace authorization"]
end

subgraph group_domain["Workspace capabilities"]
  node_auth_service["Authentication service<br/>[AuthService.java]"]
  node_workspace_service["Workspace management"]
  node_project_tasks["Projects and tasks<br/>[TaskService.java]"]
  node_crm_service["Lead pipeline<br/>[LeadService.java]"]
  node_chat_service["Team chat"]
  node_insights["AI insights"]
  node_analytics["Analytics and reports"]
  node_notifications["Notifications"]
  node_ai_provider["AI provider client<br/>[XAIProvider.java]"]
end

subgraph group_data["Persistence and state"]
  node_repositories["JPA repositories"]
  node_postgres[("PostgreSQL")]
  node_redis[("Redis cache and presence<br/>[RedisConfig.java]")]
end

subgraph group_integrations["External services"]
  node_websocket["STOMP messaging"]
  node_groq["Groq AI API"]
end

node_user(("Workspace user"))

node_user -->|"uses"| node_frontend
node_frontend -->|"HTTPS requests"| node_controllers
node_auth_ui -->|"login requests"| node_controllers
node_crm_ui -->|"lead requests"| node_controllers
node_controllers -->|"authenticates"| node_jwt
node_controllers -->|"checks access"| node_workspace_auth
node_controllers -->|"routes auth"| node_auth_service
node_controllers -->|"routes workspace"| node_workspace_service
node_controllers -->|"routes tasks"| node_project_tasks
node_controllers -->|"routes leads"| node_crm_service
node_controllers -->|"routes chat"| node_chat_service
node_controllers -->|"routes insights"| node_insights
node_controllers -->|"routes analytics"| node_analytics
node_controllers -->|"routes notifications"| node_notifications
node_auth_service -->|"accesses data"| node_repositories
node_workspace_service -->|"accesses data"| node_repositories
node_project_tasks -->|"accesses data"| node_repositories
node_crm_service -->|"accesses data"| node_repositories
node_chat_service -->|"accesses data"| node_repositories
node_insights -->|"queries workspace data"| node_repositories
node_analytics -->|"queries metrics"| node_repositories
node_notifications -->|"stores notifications"| node_repositories
node_repositories -->|"reads and writes"| node_postgres
node_insights -->|"caches insights"| node_redis
node_chat_service -->|"publishes messages"| node_websocket
node_notifications -->|"delivers alerts"| node_websocket
node_websocket -->|"broadcasts events"| node_frontend
node_insights -.->|"requests explanations"| node_ai_provider
node_ai_provider -.->|"calls model"| node_groq

click node_frontend "https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-frontend/src/App.jsx"
click node_crm_ui "https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-frontend/src/pages/CRMPipeline.jsx"
click node_auth_ui "https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-frontend/src/hooks/useAuth.js"
click node_controllers "https://github.com/arjunsingh-7/crm-taskflow/tree/main/crm-backend/src/main/java/com/arjun/crm/controller"
click node_jwt "https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/security/JwtAuthenticationFilter.java"
click node_workspace_auth "https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/security/WorkspaceAuthorizationService.java"
click node_auth_service "https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/AuthService.java"
click node_workspace_service "https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/WorkspaceService.java"
click node_project_tasks "https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/TaskService.java"
click node_crm_service "https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/LeadService.java"
click node_chat_service "https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/ChatMessageService.java"
click node_insights "https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/AIInsightService.java"
click node_analytics "https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/AnalyticsService.java"
click node_notifications "https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/NotificationService.java"
click node_repositories "https://github.com/arjunsingh-7/crm-taskflow/tree/main/crm-backend/src/main/java/com/arjun/crm/repository"
click node_redis "https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/config/RedisConfig.java"
click node_websocket "https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/config/WebSocketConfig.java"
click node_ai_provider "https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/ai/provider/XAIProvider.java"

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_frontend,node_crm_ui,node_auth_ui,node_user toneBlue
class node_controllers,node_jwt,node_workspace_auth toneAmber
class node_auth_service,node_workspace_service,node_project_tasks,node_crm_service,node_chat_service,node_insights,node_analytics,node_notifications,node_ai_provider toneMint
class node_repositories,node_postgres,node_redis toneRose
class node_websocket,node_groq toneIndigo
```

## Components

### Web client

- [React application](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-frontend/src/App.jsx): `crm-frontend/src/App.jsx`
- [CRM pipeline UI](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-frontend/src/pages/CRMPipeline.jsx): `crm-frontend/src/pages/CRMPipeline.jsx`
- [Authentication hook](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-frontend/src/hooks/useAuth.js): `crm-frontend/src/hooks/useAuth.js`

### API and access

- [REST controllers](https://github.com/arjunsingh-7/crm-taskflow/tree/main/crm-backend/src/main/java/com/arjun/crm/controller): `crm-backend/src/main/java/com/arjun/crm/controller`
- [JWT security](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/security/JwtAuthenticationFilter.java): `crm-backend/src/main/java/com/arjun/crm/security/JwtAuthenticationFilter.java`
- [Workspace authorization](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/security/WorkspaceAuthorizationService.java): `crm-backend/src/main/java/com/arjun/crm/security/WorkspaceAuthorizationService.java`

### Workspace capabilities

- [Authentication service](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/AuthService.java): `crm-backend/src/main/java/com/arjun/crm/service/AuthService.java`
- [Workspace management](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/WorkspaceService.java): `crm-backend/src/main/java/com/arjun/crm/service/WorkspaceService.java`
- [Projects and tasks](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/TaskService.java): `crm-backend/src/main/java/com/arjun/crm/service/TaskService.java`
- [Lead pipeline](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/LeadService.java): `crm-backend/src/main/java/com/arjun/crm/service/LeadService.java`
- [Team chat](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/ChatMessageService.java): `crm-backend/src/main/java/com/arjun/crm/service/ChatMessageService.java`
- [AI insights](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/AIInsightService.java): `crm-backend/src/main/java/com/arjun/crm/service/AIInsightService.java`
- [Analytics and reports](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/AnalyticsService.java): `crm-backend/src/main/java/com/arjun/crm/service/AnalyticsService.java`
- [Notifications](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/service/NotificationService.java): `crm-backend/src/main/java/com/arjun/crm/service/NotificationService.java`
- [AI provider client](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/ai/provider/XAIProvider.java): `crm-backend/src/main/java/com/arjun/crm/ai/provider/XAIProvider.java`

### Persistence and state

- [JPA repositories](https://github.com/arjunsingh-7/crm-taskflow/tree/main/crm-backend/src/main/java/com/arjun/crm/repository): `crm-backend/src/main/java/com/arjun/crm/repository`
- **PostgreSQL**
- [Redis cache and presence](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/config/RedisConfig.java): `crm-backend/src/main/java/com/arjun/crm/config/RedisConfig.java`

### External services

- [STOMP messaging](https://github.com/arjunsingh-7/crm-taskflow/blob/main/crm-backend/src/main/java/com/arjun/crm/config/WebSocketConfig.java): `crm-backend/src/main/java/com/arjun/crm/config/WebSocketConfig.java`
- **Groq AI API**

### Other components

- **Workspace user**

## Connections

- Workspace user → React application: uses
- React application → REST controllers: HTTPS requests
- Authentication hook → REST controllers: login requests
- CRM pipeline UI → REST controllers: lead requests
- REST controllers → JWT security: authenticates
- REST controllers → Workspace authorization: checks access
- REST controllers → Authentication service: routes auth
- REST controllers → Workspace management: routes workspace
- REST controllers → Projects and tasks: routes tasks
- REST controllers → Lead pipeline: routes leads
- REST controllers → Team chat: routes chat
- REST controllers → AI insights: routes insights
- REST controllers → Analytics and reports: routes analytics
- REST controllers → Notifications: routes notifications
- Authentication service → JPA repositories: accesses data
- Workspace management → JPA repositories: accesses data
- Projects and tasks → JPA repositories: accesses data
- Lead pipeline → JPA repositories: accesses data
- Team chat → JPA repositories: accesses data
- AI insights → JPA repositories: queries workspace data
- Analytics and reports → JPA repositories: queries metrics
- Notifications → JPA repositories: stores notifications
- JPA repositories → PostgreSQL: reads and writes
- AI insights → Redis cache and presence: caches insights
- Team chat → STOMP messaging: publishes messages
- Notifications → STOMP messaging: delivers alerts
- STOMP messaging → React application: broadcasts events
- AI insights → AI provider client: requests explanations
- AI provider client → Groq AI API: calls model
