# ezechielitewe18/sirh architecture

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

## Overview

GLOBIT is a PHP/MySQL HR information system. Users enter through the web front controller, which routes authenticated and role-checked requests to controllers; controllers coordinate domain models and render views or produce exports. Its documented core workflow covers employee/service administration, attendance check-in and approval, leave requests and approval, and dashboard reporting. The README also describes payroll, training, and mobile capabilities. Some of these modules are represented from the tree and index references only; unsampled implementation details and links are therefore omitted.

Main entry points: [`core/Router.php`](https://github.com/ezechielitewe18/sirh/blob/main/core/Router.php) (Request router), [`models/EmployeeModel.php`](https://github.com/ezechielitewe18/sirh/blob/main/models/EmployeeModel.php) (Employee records), [`controllers/DashboardController.php`](https://github.com/ezechielitewe18/sirh/blob/main/controllers/DashboardController.php) (Dashboard), [`core/Model.php`](https://github.com/ezechielitewe18/sirh/blob/main/core/Model.php) (Model base)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Web entry"]
  node_router["Request router<br/>[Router.php]"]
  node_auth["Authentication<br/>[AuthController.php]"]
  node_dashboard["Dashboard"]
  node_views["PHP views"]
  node_mobile["Mobile capability<br/>[mobile.php]"]
end

subgraph group_people["People administration"]
  node_employees["Employees"]
  node_employee_data["Employee records<br/>[EmployeeModel.php]"]
  node_services["Services"]
  node_service_data["Service records<br/>[ServiceModel.php]"]
  node_users["User administration"]
  node_user_data["User records<br/>[UserModel.php]"]
end

subgraph group_operations["HR operations"]
  node_attendance["Attendance"]
  node_attendance_data["Attendance records<br/>[PresenceModel.php]"]
  node_leave["Leave workflow"]
  node_leave_data["Leave records<br/>[CongeModel.php]"]
  node_payroll["Payroll<br/>[PaieController.php]"]
  node_payroll_data["Payroll records<br/>[PaieModel.php]"]
  node_training["Training"]
  node_training_data["Training records<br/>[FormationModel.php]"]
  node_reports["Reports and exports"]
  node_export["Data exports"]
  node_messaging["Messages"]
  node_message_data["Message records<br/>[MessageModel.php]"]
  node_notifications["Notifications"]
  node_notification_data["Notification records"]
  node_logs["Activity log<br/>[LogModel.php]"]
end

subgraph group_platform["Data layer"]
  node_base_model["Model base<br/>[Model.php]"]
  node_database["PDO connection<br/>[Database.php]"]
end

node_user(("HR user"))
node_mysql[("MySQL database")]

node_user -->|"sends requests"| node_router
node_router -->|"routes auth"| node_auth
node_router -->|"routes dashboard"| node_dashboard
node_router -->|"routes employee actions"| node_employees
node_router -->|"routes service actions"| node_services
node_router -->|"routes user actions"| node_users
node_router -->|"routes attendance"| node_attendance
node_router -->|"routes leave"| node_leave
node_router -->|"routes payroll"| node_payroll
node_router -->|"routes training"| node_training
node_router -->|"routes reports"| node_reports
node_router -->|"routes exports"| node_export
node_router -->|"routes messages"| node_messaging
node_router -->|"routes notifications"| node_notifications
node_employees -->|"manages records"| node_employee_data
node_employees -->|"uses services"| node_service_data
node_services -.->|"manages records"| node_service_data
node_users -->|"manages records"| node_user_data
node_attendance -->|"records attendance"| node_attendance_data
node_attendance -->|"looks up employees"| node_employee_data
node_leave -->|"manages requests"| node_leave_data
node_leave -->|"looks up employees"| node_employee_data
node_leave -->|"notifies reviewers"| node_notification_data
node_dashboard -->|"reads metrics"| node_employee_data
node_dashboard -->|"reads metrics"| node_attendance_data
node_dashboard -->|"reads metrics"| node_leave_data
node_dashboard -->|"reads metrics"| node_payroll_data
node_dashboard -->|"reads metrics"| node_training_data
node_export -->|"exports records"| node_employee_data
node_export -->|"exports records"| node_attendance_data
node_export -->|"exports records"| node_leave_data
node_export -->|"exports records"| node_payroll_data
node_messaging -->|"manages conversations"| node_message_data
node_messaging -->|"publishes alerts"| node_notification_data
node_messaging -->|"records activity"| node_logs
node_auth -->|"checks accounts"| node_user_data
node_auth -->|"looks up employee"| node_employee_data
node_auth -->|"records activity"| node_logs
node_employees -->|"renders employee pages"| node_views
node_leave -->|"renders leave pages"| node_views
node_attendance -->|"renders attendance"| node_views
node_messaging -->|"renders message pages"| node_views
node_base_model -->|"gets connection"| node_database
node_employee_data -->|"extends"| node_base_model
node_service_data -->|"extends"| node_base_model
node_attendance_data -->|"extends"| node_base_model
node_leave_data -->|"extends"| node_base_model
node_notification_data -->|"extends"| node_base_model

click node_router "https://github.com/ezechielitewe18/sirh/blob/main/core/Router.php"
click node_auth "https://github.com/ezechielitewe18/sirh/blob/main/controllers/AuthController.php"
click node_dashboard "https://github.com/ezechielitewe18/sirh/blob/main/controllers/DashboardController.php"
click node_employees "https://github.com/ezechielitewe18/sirh/blob/main/controllers/EmployeeController.php"
click node_employee_data "https://github.com/ezechielitewe18/sirh/blob/main/models/EmployeeModel.php"
click node_services "https://github.com/ezechielitewe18/sirh/blob/main/controllers/ServiceController.php"
click node_service_data "https://github.com/ezechielitewe18/sirh/blob/main/models/ServiceModel.php"
click node_users "https://github.com/ezechielitewe18/sirh/blob/main/controllers/UtilisateurController.php"
click node_user_data "https://github.com/ezechielitewe18/sirh/blob/main/models/UserModel.php"
click node_attendance "https://github.com/ezechielitewe18/sirh/blob/main/controllers/PresenceController.php"
click node_attendance_data "https://github.com/ezechielitewe18/sirh/blob/main/models/PresenceModel.php"
click node_leave "https://github.com/ezechielitewe18/sirh/blob/main/controllers/CongeController.php"
click node_leave_data "https://github.com/ezechielitewe18/sirh/blob/main/models/CongeModel.php"
click node_payroll "https://github.com/ezechielitewe18/sirh/blob/main/controllers/PaieController.php"
click node_payroll_data "https://github.com/ezechielitewe18/sirh/blob/main/models/PaieModel.php"
click node_training "https://github.com/ezechielitewe18/sirh/blob/main/controllers/FormationController.php"
click node_training_data "https://github.com/ezechielitewe18/sirh/blob/main/models/FormationModel.php"
click node_reports "https://github.com/ezechielitewe18/sirh/blob/main/controllers/RapportController.php"
click node_export "https://github.com/ezechielitewe18/sirh/blob/main/controllers/ExportController.php"
click node_messaging "https://github.com/ezechielitewe18/sirh/blob/main/controllers/MessageController.php"
click node_message_data "https://github.com/ezechielitewe18/sirh/blob/main/models/MessageModel.php"
click node_notifications "https://github.com/ezechielitewe18/sirh/blob/main/controllers/NotificationController.php"
click node_notification_data "https://github.com/ezechielitewe18/sirh/blob/main/models/NotificationModel.php"
click node_logs "https://github.com/ezechielitewe18/sirh/blob/main/models/LogModel.php"
click node_views "https://github.com/ezechielitewe18/sirh/tree/main/views"
click node_base_model "https://github.com/ezechielitewe18/sirh/blob/main/core/Model.php"
click node_database "https://github.com/ezechielitewe18/sirh/blob/main/core/Database.php"
click node_mobile "https://github.com/ezechielitewe18/sirh/blob/main/mobile.php"

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_router,node_auth,node_dashboard,node_views,node_mobile,node_user toneBlue
class node_employees,node_employee_data,node_services,node_service_data,node_users,node_user_data,node_mysql toneAmber
class node_attendance,node_attendance_data,node_leave,node_leave_data,node_payroll,node_payroll_data,node_training,node_training_data,node_reports,node_export,node_messaging,node_message_data,node_notifications,node_notification_data,node_logs toneMint
class node_base_model,node_database toneRose
```

## Components

### Web entry

- [Request router](https://github.com/ezechielitewe18/sirh/blob/main/core/Router.php): `core/Router.php`
- [Authentication](https://github.com/ezechielitewe18/sirh/blob/main/controllers/AuthController.php): `controllers/AuthController.php`
- [Dashboard](https://github.com/ezechielitewe18/sirh/blob/main/controllers/DashboardController.php): `controllers/DashboardController.php`
- [PHP views](https://github.com/ezechielitewe18/sirh/tree/main/views): `views`
- [Mobile capability](https://github.com/ezechielitewe18/sirh/blob/main/mobile.php): `mobile.php`

### People administration

- [Employees](https://github.com/ezechielitewe18/sirh/blob/main/controllers/EmployeeController.php): `controllers/EmployeeController.php`
- [Employee records](https://github.com/ezechielitewe18/sirh/blob/main/models/EmployeeModel.php): `models/EmployeeModel.php`
- [Services](https://github.com/ezechielitewe18/sirh/blob/main/controllers/ServiceController.php): `controllers/ServiceController.php`
- [Service records](https://github.com/ezechielitewe18/sirh/blob/main/models/ServiceModel.php): `models/ServiceModel.php`
- [User administration](https://github.com/ezechielitewe18/sirh/blob/main/controllers/UtilisateurController.php): `controllers/UtilisateurController.php`
- [User records](https://github.com/ezechielitewe18/sirh/blob/main/models/UserModel.php): `models/UserModel.php`

### HR operations

- [Attendance](https://github.com/ezechielitewe18/sirh/blob/main/controllers/PresenceController.php): `controllers/PresenceController.php`
- [Attendance records](https://github.com/ezechielitewe18/sirh/blob/main/models/PresenceModel.php): `models/PresenceModel.php`
- [Leave workflow](https://github.com/ezechielitewe18/sirh/blob/main/controllers/CongeController.php): `controllers/CongeController.php`
- [Leave records](https://github.com/ezechielitewe18/sirh/blob/main/models/CongeModel.php): `models/CongeModel.php`
- [Payroll](https://github.com/ezechielitewe18/sirh/blob/main/controllers/PaieController.php): `controllers/PaieController.php`
- [Payroll records](https://github.com/ezechielitewe18/sirh/blob/main/models/PaieModel.php): `models/PaieModel.php`
- [Training](https://github.com/ezechielitewe18/sirh/blob/main/controllers/FormationController.php): `controllers/FormationController.php`
- [Training records](https://github.com/ezechielitewe18/sirh/blob/main/models/FormationModel.php): `models/FormationModel.php`
- [Reports and exports](https://github.com/ezechielitewe18/sirh/blob/main/controllers/RapportController.php): `controllers/RapportController.php`
- [Data exports](https://github.com/ezechielitewe18/sirh/blob/main/controllers/ExportController.php): `controllers/ExportController.php`
- [Messages](https://github.com/ezechielitewe18/sirh/blob/main/controllers/MessageController.php): `controllers/MessageController.php`
- [Message records](https://github.com/ezechielitewe18/sirh/blob/main/models/MessageModel.php): `models/MessageModel.php`
- [Notifications](https://github.com/ezechielitewe18/sirh/blob/main/controllers/NotificationController.php): `controllers/NotificationController.php`
- [Notification records](https://github.com/ezechielitewe18/sirh/blob/main/models/NotificationModel.php): `models/NotificationModel.php`
- [Activity log](https://github.com/ezechielitewe18/sirh/blob/main/models/LogModel.php): `models/LogModel.php`

### Data layer

- [Model base](https://github.com/ezechielitewe18/sirh/blob/main/core/Model.php): `core/Model.php`
- [PDO connection](https://github.com/ezechielitewe18/sirh/blob/main/core/Database.php): `core/Database.php`

### Other components

- **HR user**
- **MySQL database**

## Connections

- HR user → Request router: sends requests
- Request router → Authentication: routes auth (evidence: `index.php`)
- Request router → Dashboard: routes dashboard (evidence: `index.php`)
- Request router → Employees: routes employee actions (evidence: `index.php`)
- Request router → Services: routes service actions (evidence: `index.php`)
- Request router → User administration: routes user actions (evidence: `index.php`)
- Request router → Attendance: routes attendance (evidence: `index.php`)
- Request router → Leave workflow: routes leave (evidence: `index.php`)
- Request router → Payroll: routes payroll (evidence: `index.php`)
- Request router → Training: routes training (evidence: `index.php`)
- Request router → Reports and exports: routes reports (evidence: `index.php`)
- Request router → Data exports: routes exports (evidence: `index.php`)
- Request router → Messages: routes messages (evidence: `index.php`)
- Request router → Notifications: routes notifications (evidence: `index.php`)
- Employees → Employee records: manages records (evidence: `controllers/EmployeeController.php`)
- Employees → Service records: uses services (evidence: `controllers/EmployeeController.php`)
- Services → Service records: manages records
- User administration → User records: manages records (evidence: `controllers/UtilisateurController.php`)
- Attendance → Attendance records: records attendance (evidence: `controllers/PresenceController.php`)
- Attendance → Employee records: looks up employees (evidence: `controllers/PresenceController.php`)
- Leave workflow → Leave records: manages requests (evidence: `controllers/CongeController.php`)
- Leave workflow → Employee records: looks up employees (evidence: `controllers/CongeController.php`)
- Leave workflow → Notification records: notifies reviewers (evidence: `controllers/CongeController.php`)
- Dashboard → Employee records: reads metrics (evidence: `controllers/DashboardController.php`)
- Dashboard → Attendance records: reads metrics (evidence: `controllers/DashboardController.php`)
- Dashboard → Leave records: reads metrics (evidence: `controllers/DashboardController.php`)
- Dashboard → Payroll records: reads metrics (evidence: `controllers/DashboardController.php`)
- Dashboard → Training records: reads metrics (evidence: `controllers/DashboardController.php`)
- Data exports → Employee records: exports records (evidence: `controllers/ExportController.php`)
- Data exports → Attendance records: exports records (evidence: `controllers/ExportController.php`)
- Data exports → Leave records: exports records (evidence: `controllers/ExportController.php`)
- Data exports → Payroll records: exports records (evidence: `controllers/ExportController.php`)
- Messages → Message records: manages conversations (evidence: `controllers/MessageController.php`)
- Messages → Notification records: publishes alerts (evidence: `controllers/MessageController.php`)
- Messages → Activity log: records activity (evidence: `controllers/MessageController.php`)
- Authentication → User records: checks accounts (evidence: `controllers/AuthController.php`)
- Authentication → Employee records: looks up employee (evidence: `controllers/AuthController.php`)
- Authentication → Activity log: records activity (evidence: `controllers/AuthController.php`)
- Employees → PHP views: renders employee pages (evidence: `controllers/EmployeeController.php`)
- Leave workflow → PHP views: renders leave pages (evidence: `controllers/CongeController.php`)
- Attendance → PHP views: renders attendance (evidence: `controllers/PresenceController.php`)
- Messages → PHP views: renders message pages (evidence: `controllers/MessageController.php`)
- Model base → PDO connection: gets connection (evidence: `core/Model.php`)
- Employee records → Model base: extends (evidence: `models/EmployeeModel.php`)
- Service records → Model base: extends (evidence: `models/ServiceModel.php`)
- Attendance records → Model base: extends (evidence: `models/PresenceModel.php`)
- Leave records → Model base: extends (evidence: `models/CongeModel.php`)
- Notification records → Model base: extends (evidence: `models/NotificationModel.php`)
