# sahalpk007/my-cms-monorepo architecture

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

- Interactive diagram: https://gitdiagram.com/sahalpk007/my-cms-monorepo
- Repository: https://github.com/sahalpk007/my-cms-monorepo

## Overview

CMS is a multi-tenant construction operations platform: company users authenticate, enter the role-protected React workspace, and manage workforce, projects, equipment/materials, and finances through a NestJS API backed by Prisma. The graph preserves documented capabilities even where implementation files are absent from the tree. Edges follow excerpts, SOURCE INDEX references, or README statements; unsampled integrations are not treated as verified calls.

Main entry points: [`apps/frontend/src/App.tsx`](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/App.tsx) (Routed workspace), [`apps/backend/src/prisma/prisma.service.ts`](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/prisma/prisma.service.ts) (Prisma service), [`apps/frontend/src/lib/api.ts`](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/lib/api.ts) (API client), [`apps/backend/src/auth/auth.service.ts`](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/auth/auth.service.ts) (Token and login service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_workspace["Routed workspace<br/>[App.tsx]"]
  node_hrms_ui["HRMS workspace<br/>[Hrms.tsx]"]
  node_projects_ui["Project workspace<br/>[Projects.tsx]"]
  node_accounts_ui["Accounts workspace<br/>[Accounts.tsx]"]
  node_assets_ui["Assets workspace<br/>[Assets.tsx]"]
  node_reports_ui["Reports workspace<br/>[Reports.tsx]"]
  node_admin_ui["Tenant administration<br/>[SuperAdmin.tsx]"]
  node_api_client["API client<br/>[api.ts]"]
end

subgraph group_identity["Identity and tenancy"]
  node_auth_api["Authentication API<br/>[auth.controller.ts]"]
  node_auth_logic["Token and login service<br/>[auth.service.ts]"]
  node_users["User management<br/>[users.service.ts]"]
  node_companies["Company management"]
end

subgraph group_operations["Construction operations"]
  node_hrms_api["Workforce API<br/>[hrms.controller.ts]"]
  node_hrms_logic["HRMS workflows<br/>[hrms.service.ts]"]
  node_projects_api["Project operations API"]
  node_projects_logic["Project operations"]
  node_assets_inventory["Assets and inventory"]
end

subgraph group_finance["Finance and reporting"]
  node_accounts_api["Accounts API"]
  node_job_costing["Project costing"]
  node_reports_api["Reporting API"]
  node_reports_logic["Report aggregation<br/>[reports.service.ts]"]
end

subgraph group_platform["API and persistence"]
  node_prisma["Prisma service<br/>[prisma.service.ts]"]
  node_database[("PostgreSQL / PostGIS")]
end

node_user(("Company user"))

node_user -->|"uses"| node_workspace
node_workspace -->|"routes to"| node_hrms_ui
node_workspace -->|"routes to"| node_projects_ui
node_workspace -->|"routes to"| node_accounts_ui
node_workspace -->|"routes to"| node_assets_ui
node_workspace -->|"routes to"| node_reports_ui
node_workspace -->|"routes to"| node_admin_ui
node_user -->|"authenticates"| node_auth_api
node_auth_api -->|"delegates to"| node_auth_logic
node_auth_logic -->|"looks up users"| node_users
node_auth_logic -->|"uses"| node_prisma
node_workspace -.->|"requests data"| node_api_client
node_api_client -.->|"calls API"| node_hrms_api
node_api_client -.->|"calls API"| node_projects_api
node_api_client -.->|"calls API"| node_accounts_api
node_api_client -.->|"calls API"| node_reports_api
node_api_client -.->|"calls API"| node_companies
node_hrms_api -->|"delegates to"| node_hrms_logic
node_hrms_logic -->|"reads and writes"| node_prisma
node_projects_api -->|"delegates to"| node_projects_logic
node_projects_logic -->|"reads and writes"| node_prisma
node_accounts_api -->|"delegates costing"| node_job_costing
node_job_costing -->|"queries data"| node_prisma
node_reports_api -->|"delegates to"| node_reports_logic
node_reports_logic -->|"queries data"| node_prisma
node_users -->|"queries data"| node_prisma
node_companies -.->|"persists data"| node_prisma
node_prisma -->|"accesses"| node_database
node_admin_ui -.->|"manages tenants"| node_companies
node_assets_ui -->|"manages equipment"| node_assets_inventory
node_hrms_ui -.->|"uses workforce API"| node_hrms_api
node_projects_ui -.->|"uses project API"| node_projects_api
node_accounts_ui -.->|"uses accounts API"| node_accounts_api
node_reports_ui -.->|"uses reports API"| node_reports_api

click node_workspace "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/App.tsx"
click node_hrms_ui "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/pages/Hrms.tsx"
click node_projects_ui "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/pages/Projects.tsx"
click node_accounts_ui "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/pages/Accounts.tsx"
click node_assets_ui "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/pages/Assets.tsx"
click node_reports_ui "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/pages/Reports.tsx"
click node_admin_ui "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/pages/SuperAdmin.tsx"
click node_api_client "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/lib/api.ts"
click node_auth_api "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/auth/auth.controller.ts"
click node_auth_logic "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/auth/auth.service.ts"
click node_users "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/users/users.service.ts"
click node_companies "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/companies/companies.controller.ts"
click node_hrms_api "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/hrms/hrms.controller.ts"
click node_hrms_logic "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/hrms/hrms.service.ts"
click node_projects_api "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/projects/projects.controller.ts"
click node_projects_logic "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/projects/projects.service.ts"
click node_assets_inventory "https://github.com/sahalpk007/my-cms-monorepo/tree/main/apps/backend/src"
click node_accounts_api "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/accounts/accounts.controller.ts"
click node_job_costing "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/accounts/job-costing.service.ts"
click node_reports_api "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/reports/reports.controller.ts"
click node_reports_logic "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/reports/reports.service.ts"
click node_prisma "https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/prisma/prisma.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,node_hrms_ui,node_projects_ui,node_accounts_ui,node_assets_ui,node_reports_ui,node_admin_ui,node_api_client,node_user toneBlue
class node_auth_api,node_auth_logic,node_users,node_companies toneAmber
class node_hrms_api,node_hrms_logic,node_projects_api,node_projects_logic,node_assets_inventory toneMint
class node_accounts_api,node_job_costing,node_reports_api,node_reports_logic toneRose
class node_prisma,node_database toneIndigo
```

## Components

### Web client

- [Routed workspace](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/App.tsx): `apps/frontend/src/App.tsx`
- [HRMS workspace](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/pages/Hrms.tsx): `apps/frontend/src/pages/Hrms.tsx`
- [Project workspace](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/pages/Projects.tsx): `apps/frontend/src/pages/Projects.tsx`
- [Accounts workspace](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/pages/Accounts.tsx): `apps/frontend/src/pages/Accounts.tsx`
- [Assets workspace](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/pages/Assets.tsx): `apps/frontend/src/pages/Assets.tsx`
- [Reports workspace](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/pages/Reports.tsx): `apps/frontend/src/pages/Reports.tsx`
- [Tenant administration](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/pages/SuperAdmin.tsx): `apps/frontend/src/pages/SuperAdmin.tsx`
- [API client](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/frontend/src/lib/api.ts): `apps/frontend/src/lib/api.ts`

### Identity and tenancy

- [Authentication API](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/auth/auth.controller.ts): `apps/backend/src/auth/auth.controller.ts`
- [Token and login service](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/auth/auth.service.ts): `apps/backend/src/auth/auth.service.ts`
- [User management](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/users/users.service.ts): `apps/backend/src/users/users.service.ts`
- [Company management](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/companies/companies.controller.ts): `apps/backend/src/companies/companies.controller.ts`

### Construction operations

- [Workforce API](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/hrms/hrms.controller.ts): `apps/backend/src/hrms/hrms.controller.ts`
- [HRMS workflows](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/hrms/hrms.service.ts): `apps/backend/src/hrms/hrms.service.ts`
- [Project operations API](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/projects/projects.controller.ts): `apps/backend/src/projects/projects.controller.ts`
- [Project operations](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/projects/projects.service.ts): `apps/backend/src/projects/projects.service.ts`
- [Assets and inventory](https://github.com/sahalpk007/my-cms-monorepo/tree/main/apps/backend/src): `apps/backend/src`

### Finance and reporting

- [Accounts API](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/accounts/accounts.controller.ts): `apps/backend/src/accounts/accounts.controller.ts`
- [Project costing](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/accounts/job-costing.service.ts): `apps/backend/src/accounts/job-costing.service.ts`
- [Reporting API](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/reports/reports.controller.ts): `apps/backend/src/reports/reports.controller.ts`
- [Report aggregation](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/reports/reports.service.ts): `apps/backend/src/reports/reports.service.ts`

### API and persistence

- [Prisma service](https://github.com/sahalpk007/my-cms-monorepo/blob/main/apps/backend/src/prisma/prisma.service.ts): `apps/backend/src/prisma/prisma.service.ts`
- **PostgreSQL / PostGIS**

### Other components

- **Company user**

## Connections

- Company user → Routed workspace: uses (evidence: `apps/frontend/src/App.tsx`)
- Routed workspace → HRMS workspace: routes to (evidence: `apps/frontend/src/App.tsx`)
- Routed workspace → Project workspace: routes to (evidence: `apps/frontend/src/App.tsx`)
- Routed workspace → Accounts workspace: routes to (evidence: `apps/frontend/src/App.tsx`)
- Routed workspace → Assets workspace: routes to (evidence: `apps/frontend/src/App.tsx`)
- Routed workspace → Reports workspace: routes to (evidence: `apps/frontend/src/App.tsx`)
- Routed workspace → Tenant administration: routes to (evidence: `apps/frontend/src/App.tsx`)
- Company user → Authentication API: authenticates (evidence: `README.md`)
- Authentication API → Token and login service: delegates to (evidence: `apps/backend/src/auth/auth.controller.ts`)
- Token and login service → User management: looks up users (evidence: `apps/backend/src/auth/auth.service.ts`)
- Token and login service → Prisma service: uses (evidence: `apps/backend/src/auth/auth.service.ts`)
- Routed workspace → API client: requests data
- API client → Workforce API: calls API
- API client → Project operations API: calls API
- API client → Accounts API: calls API
- API client → Reporting API: calls API
- API client → Company management: calls API
- Workforce API → HRMS workflows: delegates to (evidence: `apps/backend/src/hrms/hrms.controller.ts`)
- HRMS workflows → Prisma service: reads and writes (evidence: `apps/backend/src/hrms/hrms.service.ts`)
- Project operations API → Project operations: delegates to (evidence: `apps/backend/src/projects/projects.controller.ts`)
- Project operations → Prisma service: reads and writes (evidence: `apps/backend/src/projects/projects.service.ts`)
- Accounts API → Project costing: delegates costing (evidence: `apps/backend/src/accounts/accounts.controller.ts`)
- Project costing → Prisma service: queries data (evidence: `apps/backend/src/accounts/job-costing.service.ts`)
- Reporting API → Report aggregation: delegates to (evidence: `apps/backend/src/reports/reports.controller.ts`)
- Report aggregation → Prisma service: queries data (evidence: `apps/backend/src/reports/reports.service.ts`)
- User management → Prisma service: queries data (evidence: `apps/backend/src/users/users.service.ts`)
- Company management → Prisma service: persists data
- Prisma service → PostgreSQL / PostGIS: accesses (evidence: `apps/backend/src/prisma/prisma.service.ts`)
- Tenant administration → Company management: manages tenants
- Assets workspace → Assets and inventory: manages equipment (evidence: `README.md`)
- HRMS workspace → Workforce API: uses workforce API
- Project workspace → Project operations API: uses project API
- Accounts workspace → Accounts API: uses accounts API
- Reports workspace → Reporting API: uses reports API
