# nicssuazo2003/procurement architecture

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

- Interactive diagram: https://gitdiagram.com/nicssuazo2003/procurement
- Repository: https://github.com/nicssuazo2003/procurement

## Overview

This is a procurement-planning application with a Vue frontend and an ASP.NET Core API. Its central workflow lets departmental users prepare, submit, and track PPMPs; unit heads approve them, and procurement staff review them for potential inclusion in the APP. The repository also provides catalogue, planning-year, organization, identity, and category-management capabilities. The README is empty, and many modules are unsampled, so their presence is represented from the tree without asserting unverified call relationships.

Main entry points: [`backend/src/Drmc.Procurement.Infrastructure/Persistence/ApplicationDbContext.cs`](https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Persistence/ApplicationDbContext.cs) (Procurement database), [`backend/src/Drmc.Procurement.WebApi/Program.cs`](https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.WebApi/Program.cs) (Web API host), [`frontend/src/main.ts`](https://github.com/nicssuazo2003/procurement/blob/main/frontend/src/main.ts) (Vue application), [`frontend/src/features/ppmp-app/views`](https://github.com/nicssuazo2003/procurement/tree/main/frontend/src/features/ppmp-app/views) (PPMP workflows)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_app["Vue application<br/>[main.ts]"]
  node_ppmpviews["PPMP workflows"]
  node_ppmpclient["PPMP API client<br/>[ppmpApiService.ts]"]
  node_masterdata["Master data client"]
  node_authui["Login and session"]
end

subgraph group_api["API and services"]
  node_apihost["Web API host<br/>[Program.cs]"]
  node_ppmpcontroller["PPMP endpoints<br/>[PPMPsController.cs]"]
  node_database[("Procurement database")]
  node_categorycontroller["Category endpoints"]
  node_authservice["Authentication<br/>[AuthService.cs]"]
end

subgraph group_planning["Procurement planning"]
  node_ppmpservice["PPMP lifecycle<br/>[PPMPService.cs]"]
  node_appgeneration["APP generation<br/>[APPService.cs]"]
  node_catalogue["Item catalogue<br/>[ItemService.cs]"]
  node_planningyears["Planning years"]
  node_yearcategories["Year categories"]
  node_yearitems["Year items"]
  node_projects["Procurement projects"]
end

subgraph group_admin["Administration"]
  node_categories["Procurement categories"]
  node_organization["Departments and sections"]
  node_users["Users and roles<br/>[UserService.cs]"]
  node_preferences["Category preferences"]
end

node_user(("Procurement users"))

node_user -.->|"uses"| node_app
node_app -->|"hosts"| node_ppmpviews
node_ppmpviews -->|"requests PPMPs"| node_ppmpclient
node_ppmpclient -->|"calls PPMP routes"| node_ppmpcontroller
node_ppmpcontroller -->|"dispatches"| node_ppmpservice
node_ppmpservice -->|"reads and writes"| node_database
node_appgeneration -->|"reads and writes"| node_database
node_categorycontroller -->|"dispatches"| node_categories
node_categories -->|"reads and writes"| node_database
node_masterdata -.->|"requests master data"| node_apihost
node_authui -.->|"authenticates"| node_authservice
node_apihost -->|"configures persistence"| node_database
node_planningyears -.->|"uses persistence"| node_database
node_yearcategories -.->|"uses persistence"| node_database
node_yearitems -.->|"uses persistence"| node_database
node_catalogue -.->|"uses persistence"| node_database
node_organization -.->|"uses persistence"| node_database
node_users -.->|"uses persistence"| node_database
node_preferences -.->|"uses persistence"| node_database
node_projects -.->|"may request data"| node_apihost

click node_app "https://github.com/nicssuazo2003/procurement/blob/main/frontend/src/main.ts"
click node_ppmpviews "https://github.com/nicssuazo2003/procurement/tree/main/frontend/src/features/ppmp-app/views"
click node_ppmpclient "https://github.com/nicssuazo2003/procurement/blob/main/frontend/src/features/ppmp-app/services/ppmpApiService.ts"
click node_masterdata "https://github.com/nicssuazo2003/procurement/blob/main/frontend/src/features/ppmp-app/services/masterDataApiService.ts"
click node_authui "https://github.com/nicssuazo2003/procurement/tree/main/frontend/src/features/auth"
click node_apihost "https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.WebApi/Program.cs"
click node_ppmpcontroller "https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.WebApi/Controllers/PPMPsController.cs"
click node_ppmpservice "https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/PPMPs/PPMPService.cs"
click node_database "https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Persistence/ApplicationDbContext.cs"
click node_appgeneration "https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/APP/APPService.cs"
click node_catalogue "https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/Items/ItemService.cs"
click node_planningyears "https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/PlanningYears/PlanningYearService.cs"
click node_yearcategories "https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/PlanningYearCategories/PlanningYearCategoryService.cs"
click node_yearitems "https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/PlanningYearItems/PlanningYearItemService.cs"
click node_categories "https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/ProcurementCategories/ProcurementCategoryService.cs"
click node_categorycontroller "https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.WebApi/Controllers/ProcurementCategoriesController.cs"
click node_authservice "https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/Auth/AuthService.cs"
click node_organization "https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/DepartmentSections/DepartmentSectionService.cs"
click node_users "https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/Users/UserService.cs"
click node_preferences "https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/UserCategoryPreferences/UserCategoryPreferenceService.cs"
click node_projects "https://github.com/nicssuazo2003/procurement/tree/main/frontend/src/features/procurement-projects"

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_app,node_ppmpviews,node_ppmpclient,node_masterdata,node_authui,node_user toneBlue
class node_apihost,node_ppmpcontroller,node_database,node_categorycontroller,node_authservice toneAmber
class node_ppmpservice,node_appgeneration,node_catalogue,node_planningyears,node_yearcategories,node_yearitems,node_projects toneMint
class node_categories,node_organization,node_users,node_preferences toneRose
```

## Components

### Web client

- [Vue application](https://github.com/nicssuazo2003/procurement/blob/main/frontend/src/main.ts): `frontend/src/main.ts`
- [PPMP workflows](https://github.com/nicssuazo2003/procurement/tree/main/frontend/src/features/ppmp-app/views): `frontend/src/features/ppmp-app/views`
- [PPMP API client](https://github.com/nicssuazo2003/procurement/blob/main/frontend/src/features/ppmp-app/services/ppmpApiService.ts): `frontend/src/features/ppmp-app/services/ppmpApiService.ts`
- [Master data client](https://github.com/nicssuazo2003/procurement/blob/main/frontend/src/features/ppmp-app/services/masterDataApiService.ts): `frontend/src/features/ppmp-app/services/masterDataApiService.ts`
- [Login and session](https://github.com/nicssuazo2003/procurement/tree/main/frontend/src/features/auth): `frontend/src/features/auth`

### API and services

- [Web API host](https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.WebApi/Program.cs): `backend/src/Drmc.Procurement.WebApi/Program.cs`
- [PPMP endpoints](https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.WebApi/Controllers/PPMPsController.cs): `backend/src/Drmc.Procurement.WebApi/Controllers/PPMPsController.cs`
- [Procurement database](https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Persistence/ApplicationDbContext.cs): `backend/src/Drmc.Procurement.Infrastructure/Persistence/ApplicationDbContext.cs`
- [Category endpoints](https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.WebApi/Controllers/ProcurementCategoriesController.cs): `backend/src/Drmc.Procurement.WebApi/Controllers/ProcurementCategoriesController.cs`
- [Authentication](https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/Auth/AuthService.cs): `backend/src/Drmc.Procurement.Infrastructure/Services/Auth/AuthService.cs`

### Procurement planning

- [PPMP lifecycle](https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/PPMPs/PPMPService.cs): `backend/src/Drmc.Procurement.Infrastructure/Services/PPMPs/PPMPService.cs`
- [APP generation](https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/APP/APPService.cs): `backend/src/Drmc.Procurement.Infrastructure/Services/APP/APPService.cs`
- [Item catalogue](https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/Items/ItemService.cs): `backend/src/Drmc.Procurement.Infrastructure/Services/Items/ItemService.cs`
- [Planning years](https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/PlanningYears/PlanningYearService.cs): `backend/src/Drmc.Procurement.Infrastructure/Services/PlanningYears/PlanningYearService.cs`
- [Year categories](https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/PlanningYearCategories/PlanningYearCategoryService.cs): `backend/src/Drmc.Procurement.Infrastructure/Services/PlanningYearCategories/PlanningYearCategoryService.cs`
- [Year items](https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/PlanningYearItems/PlanningYearItemService.cs): `backend/src/Drmc.Procurement.Infrastructure/Services/PlanningYearItems/PlanningYearItemService.cs`
- [Procurement projects](https://github.com/nicssuazo2003/procurement/tree/main/frontend/src/features/procurement-projects): `frontend/src/features/procurement-projects`

### Administration

- [Procurement categories](https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/ProcurementCategories/ProcurementCategoryService.cs): `backend/src/Drmc.Procurement.Infrastructure/Services/ProcurementCategories/ProcurementCategoryService.cs`
- [Departments and sections](https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/DepartmentSections/DepartmentSectionService.cs): `backend/src/Drmc.Procurement.Infrastructure/Services/DepartmentSections/DepartmentSectionService.cs`
- [Users and roles](https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/Users/UserService.cs): `backend/src/Drmc.Procurement.Infrastructure/Services/Users/UserService.cs`
- [Category preferences](https://github.com/nicssuazo2003/procurement/blob/main/backend/src/Drmc.Procurement.Infrastructure/Services/UserCategoryPreferences/UserCategoryPreferenceService.cs): `backend/src/Drmc.Procurement.Infrastructure/Services/UserCategoryPreferences/UserCategoryPreferenceService.cs`

### Other components

- **Procurement users**

## Connections

- Procurement users → Vue application: uses
- Vue application → PPMP workflows: hosts (evidence: `frontend/src/main.ts`)
- PPMP workflows → PPMP API client: requests PPMPs (evidence: `frontend/src/features/ppmp-app/services/ppmpApiService.ts`)
- PPMP API client → PPMP endpoints: calls PPMP routes (evidence: `frontend/src/features/ppmp-app/services/ppmpApiService.ts`)
- PPMP endpoints → PPMP lifecycle: dispatches (evidence: `backend/src/Drmc.Procurement.WebApi/Controllers/PPMPsController.cs`)
- PPMP lifecycle → Procurement database: reads and writes (evidence: `backend/src/Drmc.Procurement.Infrastructure/Services/PPMPs/PPMPService.cs`)
- APP generation → Procurement database: reads and writes (evidence: `backend/src/Drmc.Procurement.Infrastructure/Services/APP/APPService.cs`)
- Category endpoints → Procurement categories: dispatches (evidence: `backend/src/Drmc.Procurement.WebApi/Controllers/ProcurementCategoriesController.cs`)
- Procurement categories → Procurement database: reads and writes (evidence: `backend/src/Drmc.Procurement.Infrastructure/Services/ProcurementCategories/ProcurementCategoryService.cs`)
- Master data client → Web API host: requests master data
- Login and session → Authentication: authenticates
- Web API host → Procurement database: configures persistence (evidence: `backend/src/Drmc.Procurement.WebApi/Program.cs`)
- Planning years → Procurement database: uses persistence
- Year categories → Procurement database: uses persistence
- Year items → Procurement database: uses persistence (evidence: `backend/src/Drmc.Procurement.Infrastructure/Services/PlanningYearItems/PlanningYearItemService.cs`)
- Item catalogue → Procurement database: uses persistence (evidence: `backend/src/Drmc.Procurement.Infrastructure/Services/Items/ItemService.cs`)
- Departments and sections → Procurement database: uses persistence (evidence: `backend/src/Drmc.Procurement.Infrastructure/Services/DepartmentSections/DepartmentSectionService.cs`)
- Users and roles → Procurement database: uses persistence
- Category preferences → Procurement database: uses persistence
- Procurement projects → Web API host: may request data
