# optimajet/hrm architecture

> Architecture diagram of the GitHub repository optimajet/hrm, 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/optimajet/hrm
- Repository: https://github.com/optimajet/hrm

## Overview

DWKit HRM is a web-based human-resources application built on DWKit. Employees and managers sign in, browse employee information, and work with HR processes such as business trips, sick leave, vacations, compensation, and recruitment; reports provide employee and workflow views. The browser renders forms and flows, while ASP.NET controllers expose account, form, data, and workflow operations. The README documents support for PostgreSQL, SQL Server, and Oracle. Several HR capabilities are documented or represented by metadata filenames, but their server-side implementation was not sampled, so uncertain internal wiring is omitted.

Main entry points: [`metadata/Forms`](https://github.com/optimajet/hrm/tree/master/metadata/Forms) (HR forms), [`bin/wwwroot/js/app/app.jsx`](https://github.com/optimajet/hrm/blob/master/bin/wwwroot/js/app/app.jsx) (HRM interface), [`src/OptimaJet.DWKit.Application/WorkflowInit.cs`](https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.Application/WorkflowInit.cs) (Workflow setup), [`src/OptimaJet.DWKit.StarterApplication/Controllers/DataController.cs`](https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.StarterApplication/Controllers/DataController.cs) (Form data API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_browser["HRM interface<br/>[app.jsx]"]
  node_form_views["Form and flow views"]
end

subgraph group_http["Application API"]
  node_account_api["Account operations"]
  node_data_api["Form data API<br/>[DataController.cs]"]
  node_workflow_api["Workflow API"]
  node_actions_api["Code actions"]
end

subgraph group_workflow["Workflow services"]
  node_workflow_init["Workflow setup<br/>[WorkflowInit.cs]"]
  node_workflow_rules["Workflow rules<br/>[RuleProvider.cs]"]
  node_workflow_actions["Workflow actions<br/>[ActionProvider.cs]"]
  node_workflow_triggers["Workflow triggers<br/>[Triggers.cs]"]
end

subgraph group_hrm["HRM features"]
  node_hr_forms["HR forms"]
  node_employee_catalogue["Employee catalogue<br/>[Employees-code.js]"]
  node_employee_card["Employee card<br/>[Employee-code.js]"]
  node_hr_processes["HR processes"]
  node_reports["HR reports"]
  node_profile_dashboard["Profile and dashboard"]
end

node_employee(("Employee or manager"))
node_dwkit_runtime["DWKit runtime"]
node_database[("Configured database")]

node_employee -->|"uses"| node_browser
node_browser -->|"fetches user info"| node_account_api
node_browser -->|"loads forms"| node_form_views
node_browser -->|"requests workflow"| node_workflow_api
node_browser -->|"requests data"| node_data_api
node_form_views -->|"serves forms"| node_hr_forms
node_account_api -->|"checks identity"| node_dwkit_runtime
node_data_api -->|"checks permissions"| node_dwkit_runtime
node_data_api -->|"reads and changes data"| node_database
node_workflow_api -->|"uses runtime"| node_workflow_init
node_workflow_init -->|"configures"| node_workflow_rules
node_workflow_init -->|"configures"| node_workflow_actions
node_workflow_init -->|"configures"| node_workflow_triggers
node_workflow_api -->|"persists process data"| node_database
node_actions_api -->|"executes actions"| node_dwkit_runtime
node_hr_forms -->|"defines"| node_employee_catalogue
node_hr_forms -->|"defines"| node_employee_card
node_hr_forms -->|"defines"| node_hr_processes
node_hr_forms -->|"defines"| node_reports
node_hr_forms -->|"defines"| node_profile_dashboard

click node_browser "https://github.com/optimajet/hrm/blob/master/bin/wwwroot/js/app/app.jsx"
click node_form_views "https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.StarterApplication/Controllers/UserInterfaceController.cs"
click node_account_api "https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.StarterApplication/Controllers/AccountController.cs"
click node_data_api "https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.StarterApplication/Controllers/DataController.cs"
click node_workflow_api "https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.StarterApplication/Controllers/WorkflowController.cs"
click node_actions_api "https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.StarterApplication/Controllers/CodeActionController.cs"
click node_workflow_init "https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.Application/WorkflowInit.cs"
click node_workflow_rules "https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.Application/RuleProvider.cs"
click node_workflow_actions "https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.Application/ActionProvider.cs"
click node_workflow_triggers "https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.Application/Triggers.cs"
click node_hr_forms "https://github.com/optimajet/hrm/tree/master/metadata/Forms"
click node_employee_catalogue "https://github.com/optimajet/hrm/blob/master/metadata/Forms/Employees-code.js"
click node_employee_card "https://github.com/optimajet/hrm/blob/master/metadata/Forms/Employee-code.js"
click node_hr_processes "https://github.com/optimajet/hrm/tree/master/metadata/Forms"
click node_reports "https://github.com/optimajet/hrm/tree/master/metadata/Forms"
click node_profile_dashboard "https://github.com/optimajet/hrm/tree/master/metadata/Forms"

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_browser,node_form_views toneBlue
class node_account_api,node_data_api,node_workflow_api,node_actions_api,node_database toneAmber
class node_workflow_init,node_workflow_rules,node_workflow_actions,node_workflow_triggers toneMint
class node_hr_forms,node_employee_catalogue,node_employee_card,node_hr_processes,node_reports,node_profile_dashboard toneRose
class node_employee,node_dwkit_runtime toneIndigo
```

## Components

### Web client

- [HRM interface](https://github.com/optimajet/hrm/blob/master/bin/wwwroot/js/app/app.jsx): `bin/wwwroot/js/app/app.jsx`
- [Form and flow views](https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.StarterApplication/Controllers/UserInterfaceController.cs): `src/OptimaJet.DWKit.StarterApplication/Controllers/UserInterfaceController.cs`

### Application API

- [Account operations](https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.StarterApplication/Controllers/AccountController.cs): `src/OptimaJet.DWKit.StarterApplication/Controllers/AccountController.cs`
- [Form data API](https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.StarterApplication/Controllers/DataController.cs): `src/OptimaJet.DWKit.StarterApplication/Controllers/DataController.cs`
- [Workflow API](https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.StarterApplication/Controllers/WorkflowController.cs): `src/OptimaJet.DWKit.StarterApplication/Controllers/WorkflowController.cs`
- [Code actions](https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.StarterApplication/Controllers/CodeActionController.cs): `src/OptimaJet.DWKit.StarterApplication/Controllers/CodeActionController.cs`

### Workflow services

- [Workflow setup](https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.Application/WorkflowInit.cs): `src/OptimaJet.DWKit.Application/WorkflowInit.cs`
- [Workflow rules](https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.Application/RuleProvider.cs): `src/OptimaJet.DWKit.Application/RuleProvider.cs`
- [Workflow actions](https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.Application/ActionProvider.cs): `src/OptimaJet.DWKit.Application/ActionProvider.cs`
- [Workflow triggers](https://github.com/optimajet/hrm/blob/master/src/OptimaJet.DWKit.Application/Triggers.cs): `src/OptimaJet.DWKit.Application/Triggers.cs`

### HRM features

- [HR forms](https://github.com/optimajet/hrm/tree/master/metadata/Forms): `metadata/Forms`
- [Employee catalogue](https://github.com/optimajet/hrm/blob/master/metadata/Forms/Employees-code.js): `metadata/Forms/Employees-code.js`
- [Employee card](https://github.com/optimajet/hrm/blob/master/metadata/Forms/Employee-code.js): `metadata/Forms/Employee-code.js`
- [HR processes](https://github.com/optimajet/hrm/tree/master/metadata/Forms): `metadata/Forms`
- [HR reports](https://github.com/optimajet/hrm/tree/master/metadata/Forms): `metadata/Forms`
- [Profile and dashboard](https://github.com/optimajet/hrm/tree/master/metadata/Forms): `metadata/Forms`

### Other components

- **Employee or manager**
- **DWKit runtime**
- **Configured database**

## Connections

- Employee or manager → HRM interface: uses
- HRM interface → Account operations: fetches user info
- HRM interface → Form and flow views: loads forms
- HRM interface → Workflow API: requests workflow
- HRM interface → Form data API: requests data
- Form and flow views → HR forms: serves forms
- Account operations → DWKit runtime: checks identity
- Form data API → DWKit runtime: checks permissions
- Form data API → Configured database: reads and changes data
- Workflow API → Workflow setup: uses runtime
- Workflow setup → Workflow rules: configures
- Workflow setup → Workflow actions: configures
- Workflow setup → Workflow triggers: configures
- Workflow API → Configured database: persists process data
- Code actions → DWKit runtime: executes actions
- HR forms → Employee catalogue: defines
- HR forms → Employee card: defines
- HR forms → HR processes: defines
- HR forms → HR reports: defines
- HR forms → Profile and dashboard: defines
