# faizan-7890/angular-postgres architecture

> Architecture diagram of the GitHub repository faizan-7890/angular-postgres, 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/faizan-7890/angular-postgres
- Repository: https://github.com/faizan-7890/angular-postgres

## Overview

OpsTrack is a CMMS for equipment lifecycle management, preventative maintenance, repair workflows, technician assignments, and spare-parts inventory. Users work through Angular dashboard, Kanban, schedules, and inventory screens; those screens use the API client to reach NestJS controllers and domain services backed by Prisma/PostgreSQL. Scheduled maintenance can also generate work orders. The README documents asset search, QR badges, and dashboard KPIs, but corresponding asset source files are absent from the supplied tree; those capabilities are represented at the enclosing backend source path. Frontend feature-to-client wiring is summarized from the documented product structure; only selected backend calls were sampled.

Main entry points: [`frontend/src/app/core/services/api.service.ts`](https://github.com/faizan-7890/angular-postgres/blob/main/frontend/src/app/core/services/api.service.ts) (REST API client), [`backend/src/prisma/prisma.service.ts`](https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/prisma/prisma.service.ts) (Prisma database client), [`backend/src/main.ts`](https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/main.ts) (NestJS application), [`backend/src/work-orders/work-orders.service.ts`](https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/work-orders/work-orders.service.ts) (Work-order workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Angular interface"]
  node_dashboard["Dashboard KPIs"]
  node_assetui["Equipment directory"]
  node_kanban["Work-order Kanban"]
  node_scheduleui["Schedule manager"]
  node_inventoryui["Parts inventory"]
  node_apiclient["REST API client<br/>[api.service.ts]"]
end

subgraph group_backend["NestJS domain API"]
  node_api["NestJS application<br/>[main.ts]"]
  node_assets["Equipment lifecycle"]
  node_workcontroller["Work-order endpoints"]
  node_workservice["Work-order workflow"]
  node_partscontroller["Parts endpoints"]
  node_partsservice["Parts inventory logic"]
  node_techcontroller["Technician endpoints"]
  node_techservice["Technician directory"]
end

subgraph group_maintenance["Maintenance automation"]
  node_schedulecontroller["Schedule endpoints"]
  node_scheduleservice["Schedule evaluation"]
  node_scheduler["Daily schedule worker"]
end

subgraph group_data["Persistence"]
  node_prisma["Prisma database client<br/>[prisma.service.ts]"]
  node_postgres[("PostgreSQL store")]
end

node_operator(("Maintenance user"))

node_operator -->|"views"| node_dashboard
node_operator -->|"manages assets"| node_assetui
node_operator -->|"dispatches work"| node_kanban
node_operator -->|"sets schedules"| node_scheduleui
node_operator -->|"checks stock"| node_inventoryui
node_dashboard -->|"requests data"| node_apiclient
node_assetui -->|"searches assets"| node_apiclient
node_kanban -->|"updates orders"| node_apiclient
node_scheduleui -->|"manages schedules"| node_apiclient
node_inventoryui -->|"reads inventory"| node_apiclient
node_apiclient -->|"HTTP requests"| node_api
node_api -->|"routes requests"| node_workcontroller
node_api -->|"routes requests"| node_schedulecontroller
node_api -->|"routes requests"| node_partscontroller
node_api -->|"routes requests"| node_techcontroller
node_workcontroller -->|"invokes"| node_workservice
node_schedulecontroller -->|"invokes"| node_scheduleservice
node_partscontroller -->|"invokes"| node_partsservice
node_techcontroller -->|"invokes"| node_techservice
node_workservice -->|"queries and transacts"| node_prisma
node_scheduleservice -->|"queries and writes"| node_prisma
node_partsservice -->|"queries and writes"| node_prisma
node_techservice -->|"queries"| node_prisma
node_assets -.->|"accesses data"| node_prisma
node_prisma -->|"reads and writes"| node_postgres
node_scheduler -->|"evaluates due rules"| node_scheduleservice
node_scheduleservice -.->|"creates due orders"| node_workservice
node_workservice -.->|"deducts stock"| node_partsservice

click node_dashboard "https://github.com/faizan-7890/angular-postgres/blob/main/frontend/src/app/features/dashboard/dashboard.component.ts"
click node_assetui "https://github.com/faizan-7890/angular-postgres/tree/main/frontend/src/app"
click node_kanban "https://github.com/faizan-7890/angular-postgres/blob/main/frontend/src/app/features/kanban/kanban.component.ts"
click node_scheduleui "https://github.com/faizan-7890/angular-postgres/blob/main/frontend/src/app/features/schedules/schedules.component.ts"
click node_inventoryui "https://github.com/faizan-7890/angular-postgres/blob/main/frontend/src/app/features/inventory/inventory.component.ts"
click node_apiclient "https://github.com/faizan-7890/angular-postgres/blob/main/frontend/src/app/core/services/api.service.ts"
click node_api "https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/main.ts"
click node_assets "https://github.com/faizan-7890/angular-postgres/tree/main/backend/src"
click node_workcontroller "https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/work-orders/work-orders.controller.ts"
click node_workservice "https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/work-orders/work-orders.service.ts"
click node_schedulecontroller "https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/maintenance-schedules/schedules.controller.ts"
click node_scheduleservice "https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/maintenance-schedules/schedules.service.ts"
click node_scheduler "https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/maintenance-schedules/schedules.scheduler.ts"
click node_partscontroller "https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/spare-parts/spare-parts.controller.ts"
click node_partsservice "https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/spare-parts/spare-parts.service.ts"
click node_techcontroller "https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/technicians/technicians.controller.ts"
click node_techservice "https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/technicians/technicians.service.ts"
click node_prisma "https://github.com/faizan-7890/angular-postgres/blob/main/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_dashboard,node_assetui,node_kanban,node_scheduleui,node_inventoryui,node_apiclient,node_operator toneBlue
class node_api,node_assets,node_workcontroller,node_workservice,node_partscontroller,node_partsservice,node_techcontroller,node_techservice toneAmber
class node_schedulecontroller,node_scheduleservice,node_scheduler toneMint
class node_prisma,node_postgres toneRose
```

## Components

### Angular interface

- [Dashboard KPIs](https://github.com/faizan-7890/angular-postgres/blob/main/frontend/src/app/features/dashboard/dashboard.component.ts): `frontend/src/app/features/dashboard/dashboard.component.ts`
- [Equipment directory](https://github.com/faizan-7890/angular-postgres/tree/main/frontend/src/app): `frontend/src/app`
- [Work-order Kanban](https://github.com/faizan-7890/angular-postgres/blob/main/frontend/src/app/features/kanban/kanban.component.ts): `frontend/src/app/features/kanban/kanban.component.ts`
- [Schedule manager](https://github.com/faizan-7890/angular-postgres/blob/main/frontend/src/app/features/schedules/schedules.component.ts): `frontend/src/app/features/schedules/schedules.component.ts`
- [Parts inventory](https://github.com/faizan-7890/angular-postgres/blob/main/frontend/src/app/features/inventory/inventory.component.ts): `frontend/src/app/features/inventory/inventory.component.ts`
- [REST API client](https://github.com/faizan-7890/angular-postgres/blob/main/frontend/src/app/core/services/api.service.ts): `frontend/src/app/core/services/api.service.ts`

### NestJS domain API

- [NestJS application](https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/main.ts): `backend/src/main.ts`
- [Equipment lifecycle](https://github.com/faizan-7890/angular-postgres/tree/main/backend/src): `backend/src`
- [Work-order endpoints](https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/work-orders/work-orders.controller.ts): `backend/src/work-orders/work-orders.controller.ts`
- [Work-order workflow](https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/work-orders/work-orders.service.ts): `backend/src/work-orders/work-orders.service.ts`
- [Parts endpoints](https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/spare-parts/spare-parts.controller.ts): `backend/src/spare-parts/spare-parts.controller.ts`
- [Parts inventory logic](https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/spare-parts/spare-parts.service.ts): `backend/src/spare-parts/spare-parts.service.ts`
- [Technician endpoints](https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/technicians/technicians.controller.ts): `backend/src/technicians/technicians.controller.ts`
- [Technician directory](https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/technicians/technicians.service.ts): `backend/src/technicians/technicians.service.ts`

### Maintenance automation

- [Schedule endpoints](https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/maintenance-schedules/schedules.controller.ts): `backend/src/maintenance-schedules/schedules.controller.ts`
- [Schedule evaluation](https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/maintenance-schedules/schedules.service.ts): `backend/src/maintenance-schedules/schedules.service.ts`
- [Daily schedule worker](https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/maintenance-schedules/schedules.scheduler.ts): `backend/src/maintenance-schedules/schedules.scheduler.ts`

### Persistence

- [Prisma database client](https://github.com/faizan-7890/angular-postgres/blob/main/backend/src/prisma/prisma.service.ts): `backend/src/prisma/prisma.service.ts`
- **PostgreSQL store**

### Other components

- **Maintenance user**

## Connections

- Maintenance user → Dashboard KPIs: views
- Maintenance user → Equipment directory: manages assets
- Maintenance user → Work-order Kanban: dispatches work
- Maintenance user → Schedule manager: sets schedules
- Maintenance user → Parts inventory: checks stock
- Dashboard KPIs → REST API client: requests data
- Equipment directory → REST API client: searches assets
- Work-order Kanban → REST API client: updates orders
- Schedule manager → REST API client: manages schedules
- Parts inventory → REST API client: reads inventory
- REST API client → NestJS application: HTTP requests
- NestJS application → Work-order endpoints: routes requests
- NestJS application → Schedule endpoints: routes requests
- NestJS application → Parts endpoints: routes requests
- NestJS application → Technician endpoints: routes requests
- Work-order endpoints → Work-order workflow: invokes
- Schedule endpoints → Schedule evaluation: invokes
- Parts endpoints → Parts inventory logic: invokes
- Technician endpoints → Technician directory: invokes
- Work-order workflow → Prisma database client: queries and transacts
- Schedule evaluation → Prisma database client: queries and writes
- Parts inventory logic → Prisma database client: queries and writes
- Technician directory → Prisma database client: queries
- Equipment lifecycle → Prisma database client: accesses data
- Prisma database client → PostgreSQL store: reads and writes
- Daily schedule worker → Schedule evaluation: evaluates due rules
- Schedule evaluation → Work-order workflow: creates due orders
- Work-order workflow → Parts inventory logic: deducts stock
