# dh-dang22/smartsite_ai_integrated_construction_site_management_system architecture

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

- Interactive diagram: https://gitdiagram.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system
- Repository: https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system

## Overview

SmartSite is a terminal-based site-management application. The documented and indexed flow begins at the welcome screen, proceeds through login and role-specific menus, and lets users manage people, zones, attendance, and incidents. Managers handle domain records and file persistence; shared validation and input utilities support those operations. The excerpts show several manager responsibilities and some file I/O, while the README points to broader login and role documentation that was not included, so those details are represented conservatively.

Main entry points: [`src/Person/PersonManager.java`](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Person/PersonManager.java) (People manager), [`src/Zone/ZoneManager2.java`](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Zone/ZoneManager2.java) (Zone manager), [`src/Incident/IncidentManager.java`](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Incident/IncidentManager.java) (Incident manager), [`src/Attendance/AttendanceManager.java`](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Attendance/AttendanceManager.java) (Attendance manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Application and menus"]
  node_main["Application entry<br/>[Main.java]"]
  node_welcome["Welcome menu<br/>[WelcomeMenu.java]"]
  node_login["Login menu<br/>[LoginMenu.java]"]
  node_rolemenus["Role menus"]
  node_management["Management menu"]
end

subgraph group_identity["Accounts and people"]
  node_accounts["Accounts<br/>[Account.java]"]
  node_accountmanager["Account manager"]
  node_peoplemanager["People manager<br/>[PersonManager.java]"]
  node_person["Person roles<br/>[Person.java]"]
end

subgraph group_operations["Site operations"]
  node_zones["Zone manager<br/>[ZoneManager2.java]"]
  node_zone["Zones<br/>[Zone.java]"]
  node_restrictedzone["Restricted zones"]
  node_attendance["Attendance manager"]
  node_records["Attendance records"]
  node_incidentmanager["Incident manager"]
  node_incident["Incident records<br/>[Incident.java]"]
end

subgraph group_shared["Shared input and validation"]
  node_validation["Validation checks"]
  node_input["Input scanner<br/>[InputScanner.java]"]
end

subgraph group_storage["File data"]
  node_peopledata[("People data<br/>[Person.txt]")]
  node_zonedata[("Zone data<br/>[Zone.txt]")]
  node_attendancedata[("Attendance data<br/>[Attendance.txt]")]
  node_incidentdata[("Incident data<br/>[Incident.txt]")]
end

node_operator(("User"))

node_operator -->|"uses"| node_welcome
node_main -->|"starts"| node_welcome
node_welcome -->|"opens"| node_login
node_login -->|"dispatches"| node_rolemenus
node_login -->|"uses"| node_peoplemanager
node_management -->|"manages"| node_peoplemanager
node_management -->|"manages"| node_zones
node_management -->|"manages"| node_attendance
node_management -->|"manages"| node_incidentmanager
node_management -->|"manages"| node_accountmanager
node_rolemenus -->|"uses"| node_attendance
node_rolemenus -->|"uses"| node_peoplemanager
node_rolemenus -->|"uses"| node_incidentmanager
node_rolemenus -->|"uses"| node_zones
node_accountmanager -->|"manages"| node_accounts
node_accountmanager -->|"consults"| node_peoplemanager
node_peoplemanager -->|"creates"| node_person
node_peoplemanager -->|"validates with"| node_validation
node_peoplemanager -->|"reads and writes"| node_peopledata
node_zones -->|"manages"| node_zone
node_zones -->|"creates"| node_restrictedzone
node_zones -->|"validates with"| node_validation
node_zones -->|"writes"| node_zonedata
node_attendance -->|"creates"| node_records
node_attendance -->|"uses"| node_peoplemanager
node_attendance -->|"uses"| node_zones
node_attendance -->|"reads and writes"| node_attendancedata
node_incidentmanager -->|"manages"| node_incident
node_incidentmanager -->|"looks up"| node_peoplemanager
node_incidentmanager -->|"looks up"| node_zones
node_incidentmanager -->|"validates with"| node_validation
node_incidentmanager -->|"reads and writes"| node_incidentdata
node_validation -->|"uses"| node_input

click node_main "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Main/Main.java"
click node_welcome "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/ui_Dang_dang_sua/WelcomeMenu.java"
click node_login "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/ui_Dang_dang_sua/LoginMenu.java"
click node_rolemenus "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/tree/main/src/ui_Dang_dang_sua"
click node_management "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/ui_Dang_dang_sua/ManagementMenu.java"
click node_accounts "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/account/Account.java"
click node_accountmanager "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/account/AccountManager.java"
click node_peoplemanager "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Person/PersonManager.java"
click node_person "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Person/Person.java"
click node_zones "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Zone/ZoneManager2.java"
click node_zone "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Zone/Zone.java"
click node_restrictedzone "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Zone/RestrictedZone.java"
click node_attendance "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Attendance/AttendanceManager.java"
click node_records "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Attendance/AttendanceRecord.java"
click node_incidentmanager "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Incident/IncidentManager.java"
click node_incident "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Incident/Incident.java"
click node_validation "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/tree/main/src/Validatable"
click node_input "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Validatable/InputScanner.java"
click node_peopledata "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/data/Person.txt"
click node_zonedata "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/data/Zone.txt"
click node_attendancedata "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/data/Attendance.txt"
click node_incidentdata "https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/data/Incident.txt"

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_main,node_welcome,node_login,node_rolemenus,node_management,node_operator toneBlue
class node_accounts,node_accountmanager,node_peoplemanager,node_person toneAmber
class node_zones,node_zone,node_restrictedzone,node_attendance,node_records,node_incidentmanager,node_incident toneMint
class node_validation,node_input toneRose
class node_peopledata,node_zonedata,node_attendancedata,node_incidentdata toneIndigo
```

## Components

### Application and menus

- [Application entry](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Main/Main.java): `src/Main/Main.java`
- [Welcome menu](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/ui_Dang_dang_sua/WelcomeMenu.java): `src/ui_Dang_dang_sua/WelcomeMenu.java`
- [Login menu](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/ui_Dang_dang_sua/LoginMenu.java): `src/ui_Dang_dang_sua/LoginMenu.java`
- [Role menus](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/tree/main/src/ui_Dang_dang_sua): `src/ui_Dang_dang_sua`
- [Management menu](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/ui_Dang_dang_sua/ManagementMenu.java): `src/ui_Dang_dang_sua/ManagementMenu.java`

### Accounts and people

- [Accounts](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/account/Account.java): `src/account/Account.java`
- [Account manager](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/account/AccountManager.java): `src/account/AccountManager.java`
- [People manager](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Person/PersonManager.java): `src/Person/PersonManager.java`
- [Person roles](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Person/Person.java): `src/Person/Person.java`

### Site operations

- [Zone manager](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Zone/ZoneManager2.java): `src/Zone/ZoneManager2.java`
- [Zones](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Zone/Zone.java): `src/Zone/Zone.java`
- [Restricted zones](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Zone/RestrictedZone.java): `src/Zone/RestrictedZone.java`
- [Attendance manager](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Attendance/AttendanceManager.java): `src/Attendance/AttendanceManager.java`
- [Attendance records](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Attendance/AttendanceRecord.java): `src/Attendance/AttendanceRecord.java`
- [Incident manager](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Incident/IncidentManager.java): `src/Incident/IncidentManager.java`
- [Incident records](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Incident/Incident.java): `src/Incident/Incident.java`

### Shared input and validation

- [Validation checks](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/tree/main/src/Validatable): `src/Validatable`
- [Input scanner](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/src/Validatable/InputScanner.java): `src/Validatable/InputScanner.java`

### File data

- [People data](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/data/Person.txt): `data/Person.txt`
- [Zone data](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/data/Zone.txt): `data/Zone.txt`
- [Attendance data](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/data/Attendance.txt): `data/Attendance.txt`
- [Incident data](https://github.com/dh-dang22/smartsite_ai_integrated_construction_site_management_system/blob/main/data/Incident.txt): `data/Incident.txt`

### Other components

- **User**

## Connections

- User → Welcome menu: uses
- Application entry → Welcome menu: starts (evidence: `src/Main/Main.java`)
- Welcome menu → Login menu: opens
- Login menu → Role menus: dispatches (evidence: `src/ui_Dang_dang_sua/LoginMenu.java`)
- Login menu → People manager: uses (evidence: `src/ui_Dang_dang_sua/LoginMenu.java`)
- Management menu → People manager: manages (evidence: `src/ui_Dang_dang_sua/ManagementMenu.java`)
- Management menu → Zone manager: manages (evidence: `src/ui_Dang_dang_sua/ManagementMenu.java`)
- Management menu → Attendance manager: manages (evidence: `src/ui_Dang_dang_sua/ManagementMenu.java`)
- Management menu → Incident manager: manages (evidence: `src/ui_Dang_dang_sua/ManagementMenu.java`)
- Management menu → Account manager: manages (evidence: `src/ui_Dang_dang_sua/ManagementMenu.java`)
- Role menus → Attendance manager: uses (evidence: `src/ui_Dang_dang_sua/UserWorkerMenu.java`)
- Role menus → People manager: uses (evidence: `src/ui_Dang_dang_sua/UserWorkerMenu.java`)
- Role menus → Incident manager: uses (evidence: `src/ui_Dang_dang_sua/UserSafetyOfficerMenu.java`)
- Role menus → Zone manager: uses (evidence: `src/ui_Dang_dang_sua/UserSiteManagerMenu.java`)
- Account manager → Accounts: manages (evidence: `src/account/AccountManager.java`)
- Account manager → People manager: consults (evidence: `src/account/AccountManager.java`)
- People manager → Person roles: creates (evidence: `src/Person/PersonManager.java`)
- People manager → Validation checks: validates with (evidence: `src/Person/PersonManager.java`)
- People manager → People data: reads and writes (evidence: `src/Person/PersonManager.java`)
- Zone manager → Zones: manages (evidence: `src/Zone/ZoneManager2.java`)
- Zone manager → Restricted zones: creates (evidence: `src/Zone/ZoneManager2.java`)
- Zone manager → Validation checks: validates with (evidence: `src/Zone/ZoneManager2.java`)
- Zone manager → Zone data: writes (evidence: `src/Zone/ZoneManager2.java`)
- Attendance manager → Attendance records: creates (evidence: `src/Attendance/AttendanceManager.java`)
- Attendance manager → People manager: uses (evidence: `src/Attendance/AttendanceManager.java`)
- Attendance manager → Zone manager: uses (evidence: `src/Attendance/AttendanceManager.java`)
- Attendance manager → Attendance data: reads and writes (evidence: `src/Attendance/AttendanceManager.java`)
- Incident manager → Incident records: manages (evidence: `src/Incident/IncidentManager.java`)
- Incident manager → People manager: looks up (evidence: `src/Incident/IncidentManager.java`)
- Incident manager → Zone manager: looks up (evidence: `src/Incident/IncidentManager.java`)
- Incident manager → Validation checks: validates with (evidence: `src/Incident/IncidentManager.java`)
- Incident manager → Incident data: reads and writes (evidence: `src/Incident/IncidentManager.java`)
- Validation checks → Input scanner: uses (evidence: `src/Validatable/CheckId.java`)
