# kittipatmon/new-ha-project architecture

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

- Interactive diagram: https://gitdiagram.com/kittipatmon/new-ha-project
- Repository: https://github.com/kittipatmon/new-ha-project

## Overview

This Laravel HR system provides employee and administrator services for HR requests, workforce planning, training, suggestions, recruitment, and employee data management. The principal workflow is employees or managers entering through the service portal, using a domain module, and tracking or administering its records; recruitment additionally covers job applications, screening, interviews, and hiring. The README documents module workflows, while sampled controllers confirm selected data access, notifications, and email behavior. Several module links therefore reflect documentation rather than inspected controller wiring.

Main entry points: [`resources/views/welcome.blade.php`](https://github.com/kittipatmon/new-ha-project/blob/main/resources/views/welcome.blade.php) (Service Portal), [`app/Models/hrrequest/HrRequests.php`](https://github.com/kittipatmon/new-ha-project/blob/main/app/Models/hrrequest/HrRequests.php) (HR Records), [`app/Http/Controllers/Frontend/RecruitmentController.php`](https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Frontend/RecruitmentController.php) (Job Listings and Applications), [`app/Services/RecruitmentMailService.php`](https://github.com/kittipatmon/new-ha-project/blob/main/app/Services/RecruitmentMailService.php) (Recruitment Email)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and Portal"]
  node_portal["Service Portal<br/>[welcome.blade.php]"]
  node_auth["Account Access"]
end

subgraph group_employee["Employee Services"]
  node_hr_request["HR Requests"]
  node_request_approval["Request Approval"]
  node_suggestion["Suggestions"]
  node_training["Training"]
  node_training_records[("Training Records<br/>[Training.php]")]
end

subgraph group_workforce["Workforce Operations"]
  node_manpower["Manpower Planning"]
  node_manpower_request["Staffing Requests"]
  node_probation["Probation Evaluation"]
end

subgraph group_recruitment["Recruitment"]
  node_public_jobs["Job Listings and Applications"]
  node_recruitment_admin["Recruitment Management"]
  node_interviews["Interview Scheduling"]
  node_recruitment_mail["Recruitment Email"]
  node_recruitment_records[("Recruitment Records<br/>[Application.php]")]
  node_mail_queue["Mail Queue"]
end

subgraph group_admin["Administration and Data"]
  node_employee_data["Employee Records<br/>[UserController.php]"]
  node_user_api["User API<br/>[UserController.php]"]
  node_news["News and Notices<br/>[NewsController.php]"]
  node_records[("HR Records<br/>[HrRequests.php]")]
  node_users[("Employee Data Store<br/>[User.php]")]
end

node_employee_actor(("Employee"))
node_manager_actor(("Manager"))
node_applicant_actor(("Job Applicant"))
node_hr_actor(("HR Staff"))
node_admin_actor(("Administrator"))
node_smtp["Mail Provider"]

node_employee_actor -->|"opens"| node_portal
node_manager_actor -->|"opens"| node_portal
node_hr_actor -->|"opens"| node_portal
node_admin_actor -->|"opens"| node_portal
node_applicant_actor -->|"browses and applies"| node_public_jobs
node_portal -->|"signs in through"| node_auth
node_portal -->|"opens"| node_hr_request
node_portal -->|"opens"| node_suggestion
node_portal -->|"opens"| node_training
node_portal -->|"opens"| node_manpower
node_portal -->|"opens"| node_public_jobs
node_portal -->|"administers"| node_employee_data
node_hr_request -->|"creates and reads"| node_records
node_request_approval -->|"updates approval"| node_records
node_suggestion -.->|"stores submissions"| node_records
node_training -.->|"manages registrations"| node_training_records
node_manpower -->|"reads workforce data"| node_users
node_manpower_request -.->|"stores requests"| node_records
node_manpower_request -->|"notifies approver"| node_manager_actor
node_probation -.->|"stores evaluations"| node_records
node_public_jobs -->|"records applications"| node_recruitment_records
node_public_jobs -->|"queues receipt email"| node_recruitment_mail
node_recruitment_admin -->|"reviews applications"| node_recruitment_records
node_interviews -->|"updates interview records"| node_recruitment_records
node_interviews -->|"queues notifications"| node_recruitment_mail
node_recruitment_mail -->|"dispatches"| node_mail_queue
node_mail_queue -->|"sends email"| node_smtp
node_employee_data -->|"creates and updates"| node_users
node_user_api -->|"queries"| node_users
node_news -.->|"manages notices"| node_records

click node_portal "https://github.com/kittipatmon/new-ha-project/blob/main/resources/views/welcome.blade.php"
click node_auth "https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.php"
click node_hr_request "https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Backend/RequestHRController.php"
click node_request_approval "https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Backend/ApproveController.php"
click node_suggestion "https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Backend/SuggestionController.php"
click node_training "https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/TrainingController.php"
click node_manpower "https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Backend/Manpower/ManpowerController.php"
click node_manpower_request "https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/ManpowerRequestController.php"
click node_probation "https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/ProbationEvaluationController.php"
click node_public_jobs "https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Frontend/RecruitmentController.php"
click node_recruitment_admin "https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Backend/Recruitment/ApplicantController.php"
click node_interviews "https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Backend/Recruitment/InterviewController.php"
click node_recruitment_mail "https://github.com/kittipatmon/new-ha-project/blob/main/app/Services/RecruitmentMailService.php"
click node_employee_data "https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Backend/Users/UserController.php"
click node_user_api "https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Api/UserController.php"
click node_news "https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Backend/NewsController.php"
click node_records "https://github.com/kittipatmon/new-ha-project/blob/main/app/Models/hrrequest/HrRequests.php"
click node_users "https://github.com/kittipatmon/new-ha-project/blob/main/app/Models/User.php"
click node_recruitment_records "https://github.com/kittipatmon/new-ha-project/blob/main/app/Models/Recruitment/Application.php"
click node_training_records "https://github.com/kittipatmon/new-ha-project/blob/main/app/Models/Training.php"
click node_mail_queue "https://github.com/kittipatmon/new-ha-project/blob/main/app/Jobs/SendRecruitmentEmailJob.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_portal,node_auth toneBlue
class node_hr_request,node_request_approval,node_suggestion,node_training,node_training_records toneAmber
class node_manpower,node_manpower_request,node_probation toneMint
class node_public_jobs,node_recruitment_admin,node_interviews,node_recruitment_mail,node_recruitment_records,node_mail_queue toneRose
class node_employee_data,node_user_api,node_news,node_records,node_users,node_employee_actor,node_manager_actor,node_applicant_actor,node_hr_actor,node_admin_actor,node_smtp toneIndigo
```

## Components

### Access and Portal

- [Service Portal](https://github.com/kittipatmon/new-ha-project/blob/main/resources/views/welcome.blade.php): `resources/views/welcome.blade.php`
- [Account Access](https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Auth/AuthenticatedSessionController.php): `app/Http/Controllers/Auth/AuthenticatedSessionController.php`

### Employee Services

- [HR Requests](https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Backend/RequestHRController.php): `app/Http/Controllers/Backend/RequestHRController.php`
- [Request Approval](https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Backend/ApproveController.php): `app/Http/Controllers/Backend/ApproveController.php`
- [Suggestions](https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Backend/SuggestionController.php): `app/Http/Controllers/Backend/SuggestionController.php`
- [Training](https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/TrainingController.php): `app/Http/Controllers/TrainingController.php`
- [Training Records](https://github.com/kittipatmon/new-ha-project/blob/main/app/Models/Training.php): `app/Models/Training.php`

### Workforce Operations

- [Manpower Planning](https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Backend/Manpower/ManpowerController.php): `app/Http/Controllers/Backend/Manpower/ManpowerController.php`
- [Staffing Requests](https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/ManpowerRequestController.php): `app/Http/Controllers/ManpowerRequestController.php`
- [Probation Evaluation](https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/ProbationEvaluationController.php): `app/Http/Controllers/ProbationEvaluationController.php`

### Recruitment

- [Job Listings and Applications](https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Frontend/RecruitmentController.php): `app/Http/Controllers/Frontend/RecruitmentController.php`
- [Recruitment Management](https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Backend/Recruitment/ApplicantController.php): `app/Http/Controllers/Backend/Recruitment/ApplicantController.php`
- [Interview Scheduling](https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Backend/Recruitment/InterviewController.php): `app/Http/Controllers/Backend/Recruitment/InterviewController.php`
- [Recruitment Email](https://github.com/kittipatmon/new-ha-project/blob/main/app/Services/RecruitmentMailService.php): `app/Services/RecruitmentMailService.php`
- [Recruitment Records](https://github.com/kittipatmon/new-ha-project/blob/main/app/Models/Recruitment/Application.php): `app/Models/Recruitment/Application.php`
- [Mail Queue](https://github.com/kittipatmon/new-ha-project/blob/main/app/Jobs/SendRecruitmentEmailJob.php): `app/Jobs/SendRecruitmentEmailJob.php`

### Administration and Data

- [Employee Records](https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Backend/Users/UserController.php): `app/Http/Controllers/Backend/Users/UserController.php`
- [User API](https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Api/UserController.php): `app/Http/Controllers/Api/UserController.php`
- [News and Notices](https://github.com/kittipatmon/new-ha-project/blob/main/app/Http/Controllers/Backend/NewsController.php): `app/Http/Controllers/Backend/NewsController.php`
- [HR Records](https://github.com/kittipatmon/new-ha-project/blob/main/app/Models/hrrequest/HrRequests.php): `app/Models/hrrequest/HrRequests.php`
- [Employee Data Store](https://github.com/kittipatmon/new-ha-project/blob/main/app/Models/User.php): `app/Models/User.php`

### Other components

- **Employee**
- **Manager**
- **Job Applicant**
- **HR Staff**
- **Administrator**
- **Mail Provider**

## Connections

- Employee → Service Portal: opens
- Manager → Service Portal: opens
- HR Staff → Service Portal: opens
- Administrator → Service Portal: opens
- Job Applicant → Job Listings and Applications: browses and applies
- Service Portal → Account Access: signs in through
- Service Portal → HR Requests: opens
- Service Portal → Suggestions: opens
- Service Portal → Training: opens
- Service Portal → Manpower Planning: opens
- Service Portal → Job Listings and Applications: opens
- Service Portal → Employee Records: administers
- HR Requests → HR Records: creates and reads
- Request Approval → HR Records: updates approval
- Suggestions → HR Records: stores submissions
- Training → Training Records: manages registrations
- Manpower Planning → Employee Data Store: reads workforce data
- Staffing Requests → HR Records: stores requests
- Staffing Requests → Manager: notifies approver
- Probation Evaluation → HR Records: stores evaluations
- Job Listings and Applications → Recruitment Records: records applications
- Job Listings and Applications → Recruitment Email: queues receipt email
- Recruitment Management → Recruitment Records: reviews applications
- Interview Scheduling → Recruitment Records: updates interview records
- Interview Scheduling → Recruitment Email: queues notifications
- Recruitment Email → Mail Queue: dispatches
- Mail Queue → Mail Provider: sends email
- Employee Records → Employee Data Store: creates and updates
- User API → Employee Data Store: queries
- News and Notices → HR Records: manages notices
