# snehithraj-1/employee-payroll-management architecture

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

- Interactive diagram: https://gitdiagram.com/snehithraj-1/employee-payroll-management
- Repository: https://github.com/snehithraj-1/employee-payroll-management

## Overview

This is a JavaFX employee-payroll desktop application backed by MySQL. Users manage employee records, run monthly payroll to generate payslips, and view or export payroll reports. The graph covers the startup wiring and principal UI/service/model/persistence path, plus report generation. Several UI and DAO implementations are only represented by source-index references; their detailed internal calls are therefore not expanded beyond relationships shown by those references or excerpts.

Main entry points: [`payroll/src/main/java/com/payroll/App.java`](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/App.java) (Application startup), [`payroll/src/main/java/com/payroll/ui/EmployeeTab.java`](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/ui/EmployeeTab.java) (Employee management), [`payroll/src/main/java/com/payroll/service/PayrollService.java`](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/service/PayrollService.java) (Payroll service), [`payroll/src/main/java/com/payroll/model/Employee.java`](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/model/Employee.java) (Employee pay models)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop UI"]
  node_app["Application startup<br/>[App.java]"]
  node_employee_tab["Employee management<br/>[EmployeeTab.java]"]
  node_employee_form["Employee editor"]
  node_payroll_tab["Payroll screen<br/>[PayrollTab.java]"]
  node_reports_tab["Reports screen<br/>[ReportsTab.java]"]
  node_alerts["Alerts and dialogs<br/>[Alerts.java]"]
  node_async["Async UI tasks<br/>[Async.java]"]
end

subgraph group_domain["Payroll Domain"]
  node_service["Payroll service"]
  node_employees["Employee pay models<br/>[Employee.java]"]
  node_employee_types["Employee categories<br/>[EmployeeType.java]"]
  node_pay_details["Pay details<br/>[PayDetails.java]"]
  node_payslip["Payslip model<br/>[Payslip.java]"]
  node_validation["Input validation"]
  node_money["Money calculations<br/>[Money.java]"]
  node_tax["Tax rules<br/>[TaxRules.java]"]
end

subgraph group_storage["Persistence"]
  node_employee_dao["Employee data access"]
  node_payslip_dao["Payslip data access<br/>[PayslipDAO.java]"]
  node_db_connection["Database connection<br/>[DBConnection.java]"]
  node_mysql[("MySQL database")]
end

subgraph group_reporting["Reports and Export"]
  node_report_generator["Report generation"]
  node_report_file["CSV or text file"]
end

node_operator(("Payroll operator"))

node_operator -->|"starts"| node_app
node_app -->|"tests connection"| node_db_connection
node_app -->|"creates"| node_service
node_app -->|"opens"| node_employee_tab
node_app -->|"opens"| node_payroll_tab
node_app -->|"opens"| node_reports_tab
node_operator -->|"manages employees"| node_employee_tab
node_employee_tab -->|"opens editor"| node_employee_form
node_employee_tab -->|"requests employee actions"| node_service
node_employee_form -->|"creates employee"| node_employees
node_employee_tab -->|"runs tasks"| node_async
node_payroll_tab -->|"runs payroll"| node_service
node_payroll_tab -->|"runs tasks"| node_async
node_reports_tab -->|"loads report data"| node_service
node_reports_tab -->|"runs tasks"| node_async
node_app -->|"refreshes on selection"| node_reports_tab
node_employee_tab -.->|"reports errors"| node_alerts
node_payroll_tab -->|"reports errors"| node_alerts
node_reports_tab -->|"reports errors"| node_alerts
node_service -->|"delegates employee data"| node_employee_dao
node_service -->|"saves and loads slips"| node_payslip_dao
node_service -->|"validates and calculates"| node_employees
node_employees -->|"checks input"| node_validation
node_employees -->|"rounds amounts"| node_money
node_employee_types -->|"categorizes"| node_employees
node_employees -->|"generates"| node_payslip
node_employee_dao -->|"uses connection"| node_db_connection
node_payslip_dao -->|"uses connection"| node_db_connection
node_db_connection -.->|"connects"| node_mysql
node_payroll_tab -->|"formats payslips"| node_report_generator
node_employee_tab -->|"formats summaries"| node_report_generator
node_reports_tab -->|"generates reports"| node_report_generator
node_report_generator -->|"exports text or CSV"| node_report_file
node_tax -->|"uses calculations"| node_money
node_pay_details -.->|"describes pay data"| node_employees

click node_app "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/App.java"
click node_employee_tab "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/ui/EmployeeTab.java"
click node_employee_form "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/ui/EmployeeFormDialog.java"
click node_payroll_tab "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/ui/PayrollTab.java"
click node_reports_tab "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/ui/ReportsTab.java"
click node_alerts "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/ui/Alerts.java"
click node_async "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/ui/Async.java"
click node_service "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/service/PayrollService.java"
click node_employees "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/model/Employee.java"
click node_employee_types "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/model/EmployeeType.java"
click node_pay_details "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/model/PayDetails.java"
click node_payslip "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/model/Payslip.java"
click node_validation "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/util/InputValidator.java"
click node_money "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/util/Money.java"
click node_tax "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/util/TaxRules.java"
click node_employee_dao "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/dao/EmployeeDAOImpl.java"
click node_payslip_dao "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/dao/PayslipDAO.java"
click node_db_connection "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/dao/DBConnection.java"
click node_report_generator "https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/report/ReportGenerator.java"

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_employee_tab,node_employee_form,node_payroll_tab,node_reports_tab,node_alerts,node_async toneBlue
class node_service,node_employees,node_employee_types,node_pay_details,node_payslip,node_validation,node_money,node_tax toneAmber
class node_employee_dao,node_payslip_dao,node_db_connection,node_mysql toneMint
class node_report_generator,node_report_file toneRose
class node_operator toneIndigo
```

## Components

### Desktop UI

- [Application startup](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/App.java): `payroll/src/main/java/com/payroll/App.java`
- [Employee management](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/ui/EmployeeTab.java): `payroll/src/main/java/com/payroll/ui/EmployeeTab.java`
- [Employee editor](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/ui/EmployeeFormDialog.java): `payroll/src/main/java/com/payroll/ui/EmployeeFormDialog.java`
- [Payroll screen](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/ui/PayrollTab.java): `payroll/src/main/java/com/payroll/ui/PayrollTab.java`
- [Reports screen](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/ui/ReportsTab.java): `payroll/src/main/java/com/payroll/ui/ReportsTab.java`
- [Alerts and dialogs](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/ui/Alerts.java): `payroll/src/main/java/com/payroll/ui/Alerts.java`
- [Async UI tasks](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/ui/Async.java): `payroll/src/main/java/com/payroll/ui/Async.java`

### Payroll Domain

- [Payroll service](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/service/PayrollService.java): `payroll/src/main/java/com/payroll/service/PayrollService.java`
- [Employee pay models](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/model/Employee.java): `payroll/src/main/java/com/payroll/model/Employee.java`
- [Employee categories](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/model/EmployeeType.java): `payroll/src/main/java/com/payroll/model/EmployeeType.java`
- [Pay details](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/model/PayDetails.java): `payroll/src/main/java/com/payroll/model/PayDetails.java`
- [Payslip model](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/model/Payslip.java): `payroll/src/main/java/com/payroll/model/Payslip.java`
- [Input validation](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/util/InputValidator.java): `payroll/src/main/java/com/payroll/util/InputValidator.java`
- [Money calculations](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/util/Money.java): `payroll/src/main/java/com/payroll/util/Money.java`
- [Tax rules](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/util/TaxRules.java): `payroll/src/main/java/com/payroll/util/TaxRules.java`

### Persistence

- [Employee data access](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/dao/EmployeeDAOImpl.java): `payroll/src/main/java/com/payroll/dao/EmployeeDAOImpl.java`
- [Payslip data access](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/dao/PayslipDAO.java): `payroll/src/main/java/com/payroll/dao/PayslipDAO.java`
- [Database connection](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/dao/DBConnection.java): `payroll/src/main/java/com/payroll/dao/DBConnection.java`
- **MySQL database**

### Reports and Export

- [Report generation](https://github.com/snehithraj-1/employee-payroll-management/blob/main/payroll/src/main/java/com/payroll/report/ReportGenerator.java): `payroll/src/main/java/com/payroll/report/ReportGenerator.java`
- **CSV or text file**

### Other components

- **Payroll operator**

## Connections

- Payroll operator → Application startup: starts (evidence: `payroll/src/main/java/com/payroll/App.java`)
- Application startup → Database connection: tests connection (evidence: `payroll/src/main/java/com/payroll/App.java`)
- Application startup → Payroll service: creates (evidence: `payroll/src/main/java/com/payroll/App.java`)
- Application startup → Employee management: opens (evidence: `payroll/src/main/java/com/payroll/App.java`)
- Application startup → Payroll screen: opens (evidence: `payroll/src/main/java/com/payroll/App.java`)
- Application startup → Reports screen: opens (evidence: `payroll/src/main/java/com/payroll/App.java`)
- Payroll operator → Employee management: manages employees (evidence: `payroll/src/main/java/com/payroll/ui/EmployeeTab.java`)
- Employee management → Employee editor: opens editor (evidence: `payroll/src/main/java/com/payroll/ui/EmployeeTab.java`)
- Employee management → Payroll service: requests employee actions (evidence: `payroll/src/main/java/com/payroll/ui/EmployeeTab.java`)
- Employee editor → Employee pay models: creates employee (evidence: `payroll/src/main/java/com/payroll/ui/EmployeeFormDialog.java`)
- Employee management → Async UI tasks: runs tasks (evidence: `payroll/src/main/java/com/payroll/ui/EmployeeTab.java`)
- Payroll screen → Payroll service: runs payroll (evidence: `payroll/src/main/java/com/payroll/ui/PayrollTab.java`)
- Payroll screen → Async UI tasks: runs tasks (evidence: `payroll/src/main/java/com/payroll/ui/PayrollTab.java`)
- Reports screen → Payroll service: loads report data (evidence: `payroll/src/main/java/com/payroll/ui/ReportsTab.java`)
- Reports screen → Async UI tasks: runs tasks (evidence: `payroll/src/main/java/com/payroll/ui/ReportsTab.java`)
- Application startup → Reports screen: refreshes on selection (evidence: `payroll/src/main/java/com/payroll/App.java`)
- Employee management → Alerts and dialogs: reports errors (evidence: `payroll/src/main/java/com/payroll/ui/EmployeeTab.java`)
- Payroll screen → Alerts and dialogs: reports errors (evidence: `payroll/src/main/java/com/payroll/ui/PayrollTab.java`)
- Reports screen → Alerts and dialogs: reports errors (evidence: `payroll/src/main/java/com/payroll/ui/ReportsTab.java`)
- Payroll service → Employee data access: delegates employee data (evidence: `payroll/src/main/java/com/payroll/service/PayrollService.java`)
- Payroll service → Payslip data access: saves and loads slips (evidence: `payroll/src/main/java/com/payroll/service/PayrollService.java`)
- Payroll service → Employee pay models: validates and calculates (evidence: `payroll/src/main/java/com/payroll/service/PayrollService.java`)
- Employee pay models → Input validation: checks input (evidence: `payroll/src/main/java/com/payroll/model/Employee.java`)
- Employee pay models → Money calculations: rounds amounts (evidence: `payroll/src/main/java/com/payroll/model/Employee.java`)
- Employee categories → Employee pay models: categorizes (evidence: `payroll/src/main/java/com/payroll/model/EmployeeType.java`)
- Employee pay models → Payslip model: generates (evidence: `payroll/src/main/java/com/payroll/model/Employee.java`)
- Employee data access → Database connection: uses connection (evidence: `payroll/src/main/java/com/payroll/dao/EmployeeDAOImpl.java`)
- Payslip data access → Database connection: uses connection (evidence: `payroll/src/main/java/com/payroll/dao/PayslipDAO.java`)
- Database connection → MySQL database: connects
- Payroll screen → Report generation: formats payslips (evidence: `payroll/src/main/java/com/payroll/ui/PayrollTab.java`)
- Employee management → Report generation: formats summaries (evidence: `payroll/src/main/java/com/payroll/ui/EmployeeTab.java`)
- Reports screen → Report generation: generates reports (evidence: `payroll/src/main/java/com/payroll/ui/ReportsTab.java`)
- Report generation → CSV or text file: exports text or CSV (evidence: `payroll/src/main/java/com/payroll/report/ReportGenerator.java`)
- Tax rules → Money calculations: uses calculations (evidence: `payroll/src/main/java/com/payroll/util/TaxRules.java`)
- Pay details → Employee pay models: describes pay data (evidence: `payroll/src/main/java/com/payroll/model/PayDetails.java`)
