# adilmoon/tirekcrm architecture

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

- Interactive diagram: https://gitdiagram.com/adilmoon/tirekcrm
- Repository: https://github.com/adilmoon/tirekcrm

## Overview

Tirek CRM is a Kazakhstani small-business CRM with a Next.js workspace and a NestJS API backed by PostgreSQL. Users manage clients and orders, record payments and expenses, create draft documents, and coordinate work through tasks, scheduling, notifications, and Telegram. A key workflow is staff preparing an order from a customer message, managing its QR passport, and sharing a public status/confirmation link. The graph combines sampled call relationships with README-documented capabilities; unsampled feature internals are represented at their existing subsystem paths.

Main entry points: [`backend/src/modules/tasks/tasks.service.ts`](https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/tasks/tasks.service.ts) (Tasks and discussion), [`backend/src/database/database.service.ts`](https://github.com/adilmoon/tirekcrm/blob/main/backend/src/database/database.service.ts) (Database access), [`frontend/lib/api.ts`](https://github.com/adilmoon/tirekcrm/blob/main/frontend/lib/api.ts) (API client), [`frontend/app/workspace.tsx`](https://github.com/adilmoon/tirekcrm/blob/main/frontend/app/workspace.tsx) (Workspace UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workspace["Workspace"]
  node_workspace_ui["Workspace UI<br/>[workspace.tsx]"]
  node_task_ui["Task workspace<br/>[tasks.tsx]"]
  node_api_client["API client<br/>[api.ts]"]
  node_localization["Localization<br/>[provider.tsx]"]
end

subgraph group_orders["Orders and finance"]
  node_crm_api["CRM API<br/>[crm.controller.ts]"]
  node_crm_logic["Clients and orders<br/>[crm.service.ts]"]
  node_smart_orders["Message orders"]
  node_passport["QR passports"]
  node_documents["Invoices and acts"]
  node_finance["Finance and reports"]
end

subgraph group_workforce["Team operations"]
  node_tasks["Tasks and discussion<br/>[tasks.service.ts]"]
  node_scheduling["Scheduling"]
  node_team["Team management<br/>[team.service.ts]"]
  node_notifications["Notifications"]
  node_telegram["Telegram integration"]
end

subgraph group_platform["Platform services"]
  node_onboarding["Company onboarding"]
  node_auth["Authentication<br/>[auth.service.ts]"]
  node_audit["Audit trail<br/>[audit.service.ts]"]
  node_privacy["Privacy requests"]
  node_mail["Mail queue<br/>[mail-queue.ts]"]
  node_database["Database access"]
end

node_user(("CRM user"))
node_postgres[("PostgreSQL")]
node_client(("Customer"))
node_telegram_service{{"Telegram"}}

node_user -->|"uses"| node_workspace_ui
node_workspace_ui -->|"renders with"| node_localization
node_workspace_ui -.->|"requests through"| node_api_client
node_task_ui -->|"calls"| node_api_client
node_api_client -.->|"sends API requests"| node_crm_api
node_api_client -.->|"sends task requests"| node_tasks
node_client -->|"provides order message"| node_user
node_user -->|"prepares order from message"| node_smart_orders
node_smart_orders -->|"manages order passport"| node_passport
node_user -->|"manages clients and orders"| node_crm_api
node_crm_api -->|"delegates to"| node_crm_logic
node_crm_logic -->|"reads and writes"| node_database
node_user -->|"records payments and expenses"| node_finance
node_user -->|"creates draft documents"| node_documents
node_user -->|"manages tasks"| node_tasks
node_tasks -.->|"notifies about assignments and changes"| node_notifications
node_tasks -->|"reserves work time"| node_scheduling
node_user -->|"manages team"| node_team
node_team -.->|"assigns work"| node_tasks
node_telegram_service -->|"long polls"| node_telegram
node_telegram -->|"opens employee tasks"| node_tasks
node_telegram -->|"submits result photos"| node_passport
node_user -->|"registers company"| node_onboarding
node_onboarding -->|"creates owner account"| node_auth
node_auth -->|"enqueues account mail"| node_mail
node_auth -->|"records account events"| node_audit
node_user -->|"submits privacy request"| node_privacy
node_crm_logic -->|"records changes"| node_audit
node_finance -->|"reads and writes"| node_database
node_tasks -.->|"uses persistence"| node_database
node_scheduling -.->|"uses persistence"| node_database
node_database -->|"connects through Prisma"| node_postgres

click node_workspace_ui "https://github.com/adilmoon/tirekcrm/blob/main/frontend/app/workspace.tsx"
click node_task_ui "https://github.com/adilmoon/tirekcrm/blob/main/frontend/features/tasks.tsx"
click node_api_client "https://github.com/adilmoon/tirekcrm/blob/main/frontend/lib/api.ts"
click node_localization "https://github.com/adilmoon/tirekcrm/blob/main/frontend/i18n/provider.tsx"
click node_crm_api "https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/crm/crm.controller.ts"
click node_crm_logic "https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/crm/crm.service.ts"
click node_smart_orders "https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/smart-orders/message-orders.service.ts"
click node_passport "https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/smart-orders/passport.service.ts"
click node_documents "https://github.com/adilmoon/tirekcrm/tree/main/backend/src/modules/documents"
click node_finance "https://github.com/adilmoon/tirekcrm/tree/main/backend/src/modules/finance"
click node_tasks "https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/tasks/tasks.service.ts"
click node_scheduling "https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/scheduling/scheduling.service.ts"
click node_team "https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/team/team.service.ts"
click node_notifications "https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/notifications/notifications.service.ts"
click node_telegram "https://github.com/adilmoon/tirekcrm/tree/main/backend/src/modules/telegram"
click node_onboarding "https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/onboarding/onboarding.service.ts"
click node_auth "https://github.com/adilmoon/tirekcrm/blob/main/backend/src/auth/auth.service.ts"
click node_audit "https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/audit/audit.service.ts"
click node_privacy "https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/privacy-requests/privacy-requests.service.ts"
click node_mail "https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/mail/mail-queue.ts"
click node_database "https://github.com/adilmoon/tirekcrm/blob/main/backend/src/database/database.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_workspace_ui,node_task_ui,node_api_client,node_localization,node_user toneBlue
class node_crm_api,node_crm_logic,node_smart_orders,node_passport,node_documents,node_finance,node_postgres toneAmber
class node_tasks,node_scheduling,node_team,node_notifications,node_telegram toneMint
class node_onboarding,node_auth,node_audit,node_privacy,node_mail,node_database toneRose
class node_client,node_telegram_service toneIndigo
```

## Components

### Workspace

- [Workspace UI](https://github.com/adilmoon/tirekcrm/blob/main/frontend/app/workspace.tsx): `frontend/app/workspace.tsx`
- [Task workspace](https://github.com/adilmoon/tirekcrm/blob/main/frontend/features/tasks.tsx): `frontend/features/tasks.tsx`
- [API client](https://github.com/adilmoon/tirekcrm/blob/main/frontend/lib/api.ts): `frontend/lib/api.ts`
- [Localization](https://github.com/adilmoon/tirekcrm/blob/main/frontend/i18n/provider.tsx): `frontend/i18n/provider.tsx`

### Orders and finance

- [CRM API](https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/crm/crm.controller.ts): `backend/src/modules/crm/crm.controller.ts`
- [Clients and orders](https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/crm/crm.service.ts): `backend/src/modules/crm/crm.service.ts`
- [Message orders](https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/smart-orders/message-orders.service.ts): `backend/src/modules/smart-orders/message-orders.service.ts`
- [QR passports](https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/smart-orders/passport.service.ts): `backend/src/modules/smart-orders/passport.service.ts`
- [Invoices and acts](https://github.com/adilmoon/tirekcrm/tree/main/backend/src/modules/documents): `backend/src/modules/documents`
- [Finance and reports](https://github.com/adilmoon/tirekcrm/tree/main/backend/src/modules/finance): `backend/src/modules/finance`

### Team operations

- [Tasks and discussion](https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/tasks/tasks.service.ts): `backend/src/modules/tasks/tasks.service.ts`
- [Scheduling](https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/scheduling/scheduling.service.ts): `backend/src/modules/scheduling/scheduling.service.ts`
- [Team management](https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/team/team.service.ts): `backend/src/modules/team/team.service.ts`
- [Notifications](https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/notifications/notifications.service.ts): `backend/src/modules/notifications/notifications.service.ts`
- [Telegram integration](https://github.com/adilmoon/tirekcrm/tree/main/backend/src/modules/telegram): `backend/src/modules/telegram`

### Platform services

- [Company onboarding](https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/onboarding/onboarding.service.ts): `backend/src/modules/onboarding/onboarding.service.ts`
- [Authentication](https://github.com/adilmoon/tirekcrm/blob/main/backend/src/auth/auth.service.ts): `backend/src/auth/auth.service.ts`
- [Audit trail](https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/audit/audit.service.ts): `backend/src/modules/audit/audit.service.ts`
- [Privacy requests](https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/privacy-requests/privacy-requests.service.ts): `backend/src/modules/privacy-requests/privacy-requests.service.ts`
- [Mail queue](https://github.com/adilmoon/tirekcrm/blob/main/backend/src/modules/mail/mail-queue.ts): `backend/src/modules/mail/mail-queue.ts`
- [Database access](https://github.com/adilmoon/tirekcrm/blob/main/backend/src/database/database.service.ts): `backend/src/database/database.service.ts`

### Other components

- **CRM user**
- **PostgreSQL**
- **Customer**
- **Telegram**

## Connections

- CRM user → Workspace UI: uses
- Workspace UI → Localization: renders with (evidence: `frontend/i18n/provider.tsx`)
- Workspace UI → API client: requests through
- Task workspace → API client: calls (evidence: `frontend/features/tasks.tsx`)
- API client → CRM API: sends API requests
- API client → Tasks and discussion: sends task requests
- Customer → CRM user: provides order message
- CRM user → Message orders: prepares order from message
- Message orders → QR passports: manages order passport (evidence: `backend/src/modules/smart-orders/smart-orders.controller.ts`)
- CRM user → CRM API: manages clients and orders (evidence: `backend/src/modules/crm/crm.controller.ts`)
- CRM API → Clients and orders: delegates to (evidence: `backend/src/modules/crm/crm.controller.ts`)
- Clients and orders → Database access: reads and writes (evidence: `backend/src/modules/crm/crm.service.ts`)
- CRM user → Finance and reports: records payments and expenses
- CRM user → Invoices and acts: creates draft documents
- CRM user → Tasks and discussion: manages tasks
- Tasks and discussion → Notifications: notifies about assignments and changes
- Tasks and discussion → Scheduling: reserves work time
- CRM user → Team management: manages team
- Team management → Tasks and discussion: assigns work
- Telegram → Telegram integration: long polls
- Telegram integration → Tasks and discussion: opens employee tasks
- Telegram integration → QR passports: submits result photos
- CRM user → Company onboarding: registers company
- Company onboarding → Authentication: creates owner account (evidence: `backend/src/modules/onboarding/onboarding.controller.ts`)
- Authentication → Mail queue: enqueues account mail (evidence: `backend/src/auth/auth.service.ts`)
- Authentication → Audit trail: records account events (evidence: `backend/src/auth/auth.service.ts`)
- CRM user → Privacy requests: submits privacy request
- Clients and orders → Audit trail: records changes (evidence: `backend/src/modules/crm/crm.service.ts`)
- Finance and reports → Database access: reads and writes (evidence: `backend/src/modules/finance/finance.service.ts`)
- Tasks and discussion → Database access: uses persistence
- Scheduling → Database access: uses persistence
- Database access → PostgreSQL: connects through Prisma (evidence: `backend/src/database/database.service.ts`)
