# dopazoff1/focal-assist architecture

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

- Interactive diagram: https://gitdiagram.com/dopazoff1/focal-assist
- Repository: https://github.com/dopazoff1/focal-assist
- Video tour (about a minute): https://gitdiagram.com/dopazoff1/focal-assist/video

## Overview

Focal is a support-operations workspace: operators capture customer work, consult guided knowledge, govern access and approvals, and use coaching and delivery tools to improve outcomes. The Angular application routes users to workspace surfaces; the Spring API provides domain endpoints and persistence. The README documents major product capabilities that are represented here, but most corresponding source was not sampled, so those connections are shown as unverified rather than asserted as observed calls.

Main entry points: [`frontend/src/app/app.routes.ts`](https://github.com/dopazoff1/focal-assist/blob/main/frontend/src/app/app.routes.ts) (Workspace routes), [`backend/src/main/java/com/focal/api/service/LiveChatService.java`](https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/LiveChatService.java) (Live chat), [`frontend/src/app/components/crm/crm.ts`](https://github.com/dopazoff1/focal-assist/blob/main/frontend/src/app/components/crm/crm.ts) (CRM inbox), [`frontend/src/app/components/knowledge-base/knowledge-base.ts`](https://github.com/dopazoff1/focal-assist/blob/main/frontend/src/app/components/knowledge-base/knowledge-base.ts) (Knowledge base)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Workspace experience"]
  node_workspace["Angular workspace<br/>[app.ts]"]
  node_routes["Workspace routes<br/>[app.routes.ts]"]
end

subgraph group_customer["Customer operations"]
  node_crm["CRM inbox<br/>[crm.ts]"]
  node_gmail["Email conversations<br/>[GmailService.java]"]
  node_livechat["Live chat"]
  node_chatprojects["Chat projects"]
  node_caseapi["Case endpoints<br/>[CrmController.java]"]
end

subgraph group_knowledge["Knowledge and guidance"]
  node_knowledgebase["Knowledge base<br/>[knowledge-base.ts]"]
  node_articlework["Article editing<br/>[article-editor.ts]"]
  node_validation["Article validation"]
  node_sopmaps["SOP decision maps<br/>[KbMapService.java]"]
  node_hub["Knowledge Hub<br/>[KbHubService.java]"]
  node_assistant["Process Assistant"]
end

subgraph group_governance["Governance and coaching"]
  node_access["Role and channel access"]
  node_training["Academy training"]
  node_qa["QA and adherence"]
end

subgraph group_delivery["Collaboration and delivery"]
  node_collabapi["Collaboration API"]
  node_collabservice["Collaboration service"]
  node_flowdesk["FlowDesk<br/>[flowdesk-board.ts]"]
  node_jira["Jira integration"]
end

node_operator(("Support operator"))
node_database[("MySQL database")]

node_operator -->|"uses"| node_workspace
node_workspace -->|"navigates"| node_routes
node_routes -.->|"routes to"| node_crm
node_routes -.->|"routes to"| node_knowledgebase
node_operator -.->|"handles cases"| node_crm
node_crm -.->|"uses API"| node_caseapi
node_operator -.->|"handles chats"| node_livechat
node_livechat -->|"loads workflows"| node_chatprojects
node_operator -.->|"handles email"| node_gmail
node_operator -.->|"searches knowledge"| node_knowledgebase
node_knowledgebase -.->|"opens articles"| node_articlework
node_articlework -.->|"submits drafts"| node_validation
node_operator -.->|"follows procedures"| node_sopmaps
node_operator -.->|"browses content"| node_hub
node_operator -.->|"requests guidance"| node_assistant
node_operator -.->|"checks permissions"| node_access
node_operator -.->|"completes courses"| node_training
node_operator -.->|"receives coaching"| node_qa
node_operator -.->|"collaborates"| node_collabapi
node_collabapi -->|"delegates"| node_collabservice
node_operator -.->|"tracks improvements"| node_flowdesk
node_operator -.->|"escalates work"| node_jira
node_gmail -.->|"persists conversations"| node_database
node_livechat -.->|"persists sessions"| node_database
node_collabservice -.->|"persists collaboration"| node_database

click node_workspace "https://github.com/dopazoff1/focal-assist/blob/main/frontend/src/app/app.ts"
click node_routes "https://github.com/dopazoff1/focal-assist/blob/main/frontend/src/app/app.routes.ts"
click node_crm "https://github.com/dopazoff1/focal-assist/blob/main/frontend/src/app/components/crm/crm.ts"
click node_gmail "https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/GmailService.java"
click node_livechat "https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/LiveChatService.java"
click node_chatprojects "https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/ChatProjectService.java"
click node_caseapi "https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/controllers/CrmController.java"
click node_knowledgebase "https://github.com/dopazoff1/focal-assist/blob/main/frontend/src/app/components/knowledge-base/knowledge-base.ts"
click node_articlework "https://github.com/dopazoff1/focal-assist/blob/main/frontend/src/app/components/article-editor/article-editor.ts"
click node_validation "https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/KbValidationService.java"
click node_sopmaps "https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/KbMapService.java"
click node_hub "https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/KbHubService.java"
click node_assistant "https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/ProcessAssistantService.java"
click node_access "https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/RoleAccessService.java"
click node_training "https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/TrainingAssetService.java"
click node_qa "https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/controllers/KbAnalyticsController.java"
click node_collabapi "https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/controllers/CollaborationController.java"
click node_collabservice "https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/CollaborationService.java"
click node_flowdesk "https://github.com/dopazoff1/focal-assist/blob/main/frontend/src/app/components/flowdesk-board/flowdesk-board.ts"
click node_jira "https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/JiraBridgeService.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_workspace,node_routes toneBlue
class node_crm,node_gmail,node_livechat,node_chatprojects,node_caseapi,node_database toneAmber
class node_knowledgebase,node_articlework,node_validation,node_sopmaps,node_hub,node_assistant toneMint
class node_access,node_training,node_qa toneRose
class node_collabapi,node_collabservice,node_flowdesk,node_jira,node_operator toneIndigo
```

## Components

### Workspace experience

- [Angular workspace](https://github.com/dopazoff1/focal-assist/blob/main/frontend/src/app/app.ts): `frontend/src/app/app.ts`
- [Workspace routes](https://github.com/dopazoff1/focal-assist/blob/main/frontend/src/app/app.routes.ts): `frontend/src/app/app.routes.ts`

### Customer operations

- [CRM inbox](https://github.com/dopazoff1/focal-assist/blob/main/frontend/src/app/components/crm/crm.ts): `frontend/src/app/components/crm/crm.ts`
- [Email conversations](https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/GmailService.java): `backend/src/main/java/com/focal/api/service/GmailService.java`
- [Live chat](https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/LiveChatService.java): `backend/src/main/java/com/focal/api/service/LiveChatService.java`
- [Chat projects](https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/ChatProjectService.java): `backend/src/main/java/com/focal/api/service/ChatProjectService.java`
- [Case endpoints](https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/controllers/CrmController.java): `backend/src/main/java/com/focal/api/controllers/CrmController.java`

### Knowledge and guidance

- [Knowledge base](https://github.com/dopazoff1/focal-assist/blob/main/frontend/src/app/components/knowledge-base/knowledge-base.ts): `frontend/src/app/components/knowledge-base/knowledge-base.ts`
- [Article editing](https://github.com/dopazoff1/focal-assist/blob/main/frontend/src/app/components/article-editor/article-editor.ts): `frontend/src/app/components/article-editor/article-editor.ts`
- [Article validation](https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/KbValidationService.java): `backend/src/main/java/com/focal/api/service/KbValidationService.java`
- [SOP decision maps](https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/KbMapService.java): `backend/src/main/java/com/focal/api/service/KbMapService.java`
- [Knowledge Hub](https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/KbHubService.java): `backend/src/main/java/com/focal/api/service/KbHubService.java`
- [Process Assistant](https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/ProcessAssistantService.java): `backend/src/main/java/com/focal/api/service/ProcessAssistantService.java`

### Governance and coaching

- [Role and channel access](https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/RoleAccessService.java): `backend/src/main/java/com/focal/api/service/RoleAccessService.java`
- [Academy training](https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/TrainingAssetService.java): `backend/src/main/java/com/focal/api/service/TrainingAssetService.java`
- [QA and adherence](https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/controllers/KbAnalyticsController.java): `backend/src/main/java/com/focal/api/controllers/KbAnalyticsController.java`

### Collaboration and delivery

- [Collaboration API](https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/controllers/CollaborationController.java): `backend/src/main/java/com/focal/api/controllers/CollaborationController.java`
- [Collaboration service](https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/CollaborationService.java): `backend/src/main/java/com/focal/api/service/CollaborationService.java`
- [FlowDesk](https://github.com/dopazoff1/focal-assist/blob/main/frontend/src/app/components/flowdesk-board/flowdesk-board.ts): `frontend/src/app/components/flowdesk-board/flowdesk-board.ts`
- [Jira integration](https://github.com/dopazoff1/focal-assist/blob/main/backend/src/main/java/com/focal/api/service/JiraBridgeService.java): `backend/src/main/java/com/focal/api/service/JiraBridgeService.java`

### Other components

- **Support operator**
- **MySQL database**

## Connections

- Support operator → Angular workspace: uses (evidence: `README.md`)
- Angular workspace → Workspace routes: navigates (evidence: `frontend/src/app/app.ts`)
- Workspace routes → CRM inbox: routes to
- Workspace routes → Knowledge base: routes to (evidence: `frontend/src/app/app.routes.ts`)
- Support operator → CRM inbox: handles cases (evidence: `README.md`)
- CRM inbox → Case endpoints: uses API
- Support operator → Live chat: handles chats (evidence: `README.md`)
- Live chat → Chat projects: loads workflows (evidence: `backend/src/main/java/com/focal/api/service/LiveChatService.java`)
- Support operator → Email conversations: handles email (evidence: `README.md`)
- Support operator → Knowledge base: searches knowledge (evidence: `README.md`)
- Knowledge base → Article editing: opens articles
- Article editing → Article validation: submits drafts
- Support operator → SOP decision maps: follows procedures (evidence: `README.md`)
- Support operator → Knowledge Hub: browses content (evidence: `README.md`)
- Support operator → Process Assistant: requests guidance (evidence: `README.md`)
- Support operator → Role and channel access: checks permissions (evidence: `README.md`)
- Support operator → Academy training: completes courses (evidence: `README.md`)
- Support operator → QA and adherence: receives coaching (evidence: `README.md`)
- Support operator → Collaboration API: collaborates (evidence: `README.md`)
- Collaboration API → Collaboration service: delegates (evidence: `backend/src/main/java/com/focal/api/controllers/CollaborationController.java`)
- Support operator → FlowDesk: tracks improvements (evidence: `README.md`)
- Support operator → Jira integration: escalates work
- Email conversations → MySQL database: persists conversations
- Live chat → MySQL database: persists sessions
- Collaboration service → MySQL database: persists collaboration
