# jamescasipong/hrconnectbackend architecture

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

- Interactive diagram: https://gitdiagram.com/jamescasipong/hrconnectbackend
- Repository: https://github.com/jamescasipong/hrconnectbackend

## Overview

HRConnect is a multi-tenant HR management API. Clients call the ASP.NET endpoints to manage employees and related HR operations; controllers delegate to services, which operate on persistent HR data. Authentication, authorization, subscription billing, and notification capabilities are also represented. The README documents the broad HR capabilities, while source-index references and excerpts support only selected implementation links; unsampled relationships are omitted rather than inferred.

Main entry points: [`hrconnectbackend/Data/DataContext.cs`](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Data/DataContext.cs) (SQL data context), [`hrconnectbackend/Services/Clients/AttendanceServices.cs`](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Services/Clients/AttendanceServices.cs) (Attendance services), [`hrconnectbackend/Controllers/v1/Clients/AttendanceController.cs`](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/AttendanceController.cs) (Attendance endpoints), [`hrconnectbackend/Controllers/v1/Clients/UserController.cs`](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/UserController.cs) (User endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API surface"]
  node_employee_api["Employee endpoints"]
  node_attendance_api["Attendance endpoints"]
  node_user_api["User endpoints<br/>[UserController.cs]"]
  node_leave_api["Leave endpoints<br/>[LeaveController.cs]"]
  node_payroll_api["Payroll endpoints"]
  node_overtime_api["Overtime endpoints"]
  node_org_api["Organization endpoints"]
  node_department_api["Department endpoints"]
  node_shift_api["Shift endpoints<br/>[ShiftController.cs]"]
end

subgraph group_hr["HR operations"]
  node_employee_service["Employee services"]
  node_attendance_service["Attendance services"]
  node_attendance_contract["Attendance contract"]
  node_hr_entities["HR domain entities"]
end

subgraph group_identity["Identity and tenancy"]
  node_account_service["Account services<br/>[AuthService.cs]"]
  node_account_contract["Account contract"]
  node_auth_api["Authentication endpoints<br/>[AuthController.cs]"]
end

subgraph group_billing["Billing and notifications"]
  node_subscription_api["Subscription endpoints"]
  node_subscription_worker["Subscription worker"]
  node_notifications["Notification services"]
  node_email["Email service<br/>[EmailService.cs]"]
end

subgraph group_persistence["Persistence"]
  node_database[("SQL data context<br/>[DataContext.cs]")]
  node_repository["Generic repository"]
  node_repository_contract["Repository contract"]
end

node_client(("API client"))

node_client -->|"requests"| node_employee_api
node_employee_api -->|"delegates to"| node_employee_service
node_client -.->|"requests"| node_attendance_api
node_attendance_api -->|"delegates to"| node_attendance_service
node_attendance_api -->|"uses"| node_attendance_contract
node_attendance_service -->|"queries"| node_database
node_attendance_service -->|"uses"| node_repository
node_attendance_service -->|"implements"| node_attendance_contract
node_client -.->|"requests"| node_user_api
node_user_api -->|"uses"| node_account_contract
node_user_api -->|"uses"| node_employee_service
node_auth_api -.->|"authenticates with"| node_account_service
node_account_service -->|"reads and writes"| node_database
node_account_service -->|"implements"| node_account_contract
node_subscription_worker -.->|"manages"| node_subscription_api
node_subscription_worker -->|"sends mail via"| node_email
node_notifications -->|"reads and writes"| node_database
node_notifications -->|"sends mail via"| node_email
node_database -->|"maps"| node_hr_entities
node_repository -->|"uses"| node_database
node_repository -->|"implements"| node_repository_contract

click node_employee_api "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/EmployeeController.cs"
click node_attendance_api "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/AttendanceController.cs"
click node_user_api "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/UserController.cs"
click node_leave_api "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/LeaveController.cs"
click node_payroll_api "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/PayrollController.cs"
click node_overtime_api "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/OvertimeController.cs"
click node_org_api "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/OrganizationController.cs"
click node_department_api "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/DepartmentController.cs"
click node_shift_api "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/ShiftController.cs"
click node_employee_service "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Services/Clients/EmployeeServices.cs"
click node_attendance_service "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Services/Clients/AttendanceServices.cs"
click node_attendance_contract "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Interface/Services/Clients/IAttendanceServices.cs"
click node_hr_entities "https://github.com/jamescasipong/hrconnectbackend/tree/main/hrconnectbackend/Models"
click node_account_service "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Services/Clients/AuthService.cs"
click node_account_contract "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Interface/Services/Clients/IUserAccountServices.cs"
click node_auth_api "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/AuthController.cs"
click node_subscription_api "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/SubscriptionController.cs"
click node_subscription_worker "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Services/BackgroundServices/SubscriptionBackgroundService.cs"
click node_notifications "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Features/Ongoing/Services/NotificationServices.cs"
click node_email "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Services/ExternalServices/EmailService.cs"
click node_database "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Data/DataContext.cs"
click node_repository "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Repository/GenericRepository.cs"
click node_repository_contract "https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Interface/Repositories/IGenericRepository.cs"

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_employee_api,node_attendance_api,node_user_api,node_leave_api,node_payroll_api,node_overtime_api,node_org_api,node_department_api,node_shift_api,node_client toneBlue
class node_employee_service,node_attendance_service,node_attendance_contract,node_hr_entities toneAmber
class node_account_service,node_account_contract,node_auth_api toneMint
class node_subscription_api,node_subscription_worker,node_notifications,node_email toneRose
class node_database,node_repository,node_repository_contract toneIndigo
```

## Components

### API surface

- [Employee endpoints](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/EmployeeController.cs): `hrconnectbackend/Controllers/v1/Clients/EmployeeController.cs`
- [Attendance endpoints](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/AttendanceController.cs): `hrconnectbackend/Controllers/v1/Clients/AttendanceController.cs`
- [User endpoints](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/UserController.cs): `hrconnectbackend/Controllers/v1/Clients/UserController.cs`
- [Leave endpoints](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/LeaveController.cs): `hrconnectbackend/Controllers/v1/Clients/LeaveController.cs`
- [Payroll endpoints](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/PayrollController.cs): `hrconnectbackend/Controllers/v1/Clients/PayrollController.cs`
- [Overtime endpoints](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/OvertimeController.cs): `hrconnectbackend/Controllers/v1/Clients/OvertimeController.cs`
- [Organization endpoints](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/OrganizationController.cs): `hrconnectbackend/Controllers/v1/Clients/OrganizationController.cs`
- [Department endpoints](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/DepartmentController.cs): `hrconnectbackend/Controllers/v1/Clients/DepartmentController.cs`
- [Shift endpoints](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/ShiftController.cs): `hrconnectbackend/Controllers/v1/Clients/ShiftController.cs`

### HR operations

- [Employee services](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Services/Clients/EmployeeServices.cs): `hrconnectbackend/Services/Clients/EmployeeServices.cs`
- [Attendance services](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Services/Clients/AttendanceServices.cs): `hrconnectbackend/Services/Clients/AttendanceServices.cs`
- [Attendance contract](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Interface/Services/Clients/IAttendanceServices.cs): `hrconnectbackend/Interface/Services/Clients/IAttendanceServices.cs`
- [HR domain entities](https://github.com/jamescasipong/hrconnectbackend/tree/main/hrconnectbackend/Models): `hrconnectbackend/Models`

### Identity and tenancy

- [Account services](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Services/Clients/AuthService.cs): `hrconnectbackend/Services/Clients/AuthService.cs`
- [Account contract](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Interface/Services/Clients/IUserAccountServices.cs): `hrconnectbackend/Interface/Services/Clients/IUserAccountServices.cs`
- [Authentication endpoints](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/AuthController.cs): `hrconnectbackend/Controllers/v1/Clients/AuthController.cs`

### Billing and notifications

- [Subscription endpoints](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Controllers/v1/Clients/SubscriptionController.cs): `hrconnectbackend/Controllers/v1/Clients/SubscriptionController.cs`
- [Subscription worker](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Services/BackgroundServices/SubscriptionBackgroundService.cs): `hrconnectbackend/Services/BackgroundServices/SubscriptionBackgroundService.cs`
- [Notification services](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Features/Ongoing/Services/NotificationServices.cs): `hrconnectbackend/Features/Ongoing/Services/NotificationServices.cs`
- [Email service](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Services/ExternalServices/EmailService.cs): `hrconnectbackend/Services/ExternalServices/EmailService.cs`

### Persistence

- [SQL data context](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Data/DataContext.cs): `hrconnectbackend/Data/DataContext.cs`
- [Generic repository](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Repository/GenericRepository.cs): `hrconnectbackend/Repository/GenericRepository.cs`
- [Repository contract](https://github.com/jamescasipong/hrconnectbackend/blob/main/hrconnectbackend/Interface/Repositories/IGenericRepository.cs): `hrconnectbackend/Interface/Repositories/IGenericRepository.cs`

### Other components

- **API client**

## Connections

- API client → Employee endpoints: requests
- Employee endpoints → Employee services: delegates to (evidence: `hrconnectbackend/Controllers/v1/Clients/EmployeeController.cs`)
- API client → Attendance endpoints: requests
- Attendance endpoints → Attendance services: delegates to (evidence: `hrconnectbackend/Controllers/v1/Clients/AttendanceController.cs`)
- Attendance endpoints → Attendance contract: uses (evidence: `hrconnectbackend/Controllers/v1/Clients/AttendanceController.cs`)
- Attendance services → SQL data context: queries (evidence: `hrconnectbackend/Services/Clients/AttendanceServices.cs`)
- Attendance services → Generic repository: uses (evidence: `hrconnectbackend/Services/Clients/AttendanceServices.cs`)
- Attendance services → Attendance contract: implements (evidence: `hrconnectbackend/Services/Clients/AttendanceServices.cs`)
- API client → User endpoints: requests
- User endpoints → Account contract: uses (evidence: `hrconnectbackend/Controllers/v1/Clients/UserController.cs`)
- User endpoints → Employee services: uses (evidence: `hrconnectbackend/Controllers/v1/Clients/UserController.cs`)
- Authentication endpoints → Account services: authenticates with
- Account services → SQL data context: reads and writes (evidence: `hrconnectbackend/Services/Clients/AuthService.cs`)
- Account services → Account contract: implements (evidence: `hrconnectbackend/Services/Clients/AuthService.cs`)
- Subscription worker → Subscription endpoints: manages
- Subscription worker → Email service: sends mail via (evidence: `hrconnectbackend/Services/BackgroundServices/SubscriptionBackgroundService.cs`)
- Notification services → SQL data context: reads and writes (evidence: `hrconnectbackend/Features/Ongoing/Services/NotificationServices.cs`)
- Notification services → Email service: sends mail via (evidence: `hrconnectbackend/Features/Ongoing/Services/NotificationServices.cs`)
- SQL data context → HR domain entities: maps (evidence: `hrconnectbackend/Data/DataContext.cs`)
- Generic repository → SQL data context: uses (evidence: `hrconnectbackend/Repository/GenericRepository.cs`)
- Generic repository → Repository contract: implements (evidence: `hrconnectbackend/Repository/GenericRepository.cs`)
