# ismia-shin/oop-project-group4-sportsclub architecture

> Architecture diagram of the GitHub repository ismia-shin/oop-project-group4-sportsclub, 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/ismia-shin/oop-project-group4-sportsclub
- Repository: https://github.com/ismia-shin/oop-project-group4-sportsclub

## Overview

This JavaFX sports-club application groups member services, employee operations, finance, healthcare, facilities, and marketing. A typical member flow begins with a member interacting with booking or health-request screens; staff workflows then manage club resources, finances, or care. The sampled code confirms checkup requests are added to a physician’s pending requests, and several screens persist records locally. The README is empty, and most controllers were not sampled, so links between unsampled capabilities are omitted rather than inferred.

Main entry points: [`src/main/java/com/group4/sportsclub/Common/EmployeeLoginPageController.java`](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Common/EmployeeLoginPageController.java) (Employee login), [`src/main/java/com/group4/sportsclub/Samiha/Member/RequestCheckupController.java`](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/Member/RequestCheckupController.java) (Health requests), [`src/main/java/com/group4/sportsclub/Samiha/Physician/DietPlanController.java`](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/Physician/DietPlanController.java) (Diet plans), [`src/main/java/com/group4/sportsclub/Samiha/Physician/Physician.java`](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/Physician/Physician.java) (Physician account)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and shared"]
  node_employee["Employee login"]
  node_user["User identity<br/>[User.java]"]
  node_member["Member account<br/>[Member.java]"]
end

subgraph group_members["Member services"]
  node_member_services["Member services"]
end

subgraph group_operations["Club operations"]
  node_operations["Operations management"]
  node_manager["Manager services"]
end

subgraph group_finance["Finance"]
  node_finance_dashboard["Finance dashboard"]
  node_finance_assets["Asset management"]
  node_finance_budgets["Budget management"]
  node_finance_events["Event budgets"]
  node_finance_fees["Fees and refunds<br/>[FeeController.java]"]
  node_finance_refunds["Refund review"]
  node_finance_payroll["Payroll"]
  node_finance_history["Finance history"]
  node_finance_notifications["Finance notifications"]
  node_payroll_store[("Payroll file")]
end

subgraph group_health["Member healthcare"]
  node_member_requests["Health requests"]
  node_physician["Physician account<br/>[Physician.java]"]
  node_physician_care["Clinical care"]
  node_diet_plans["Diet plans"]
  node_reports["Care reports<br/>[Reports.java]"]
  node_report_store[("Report file")]
end

subgraph group_facilities["Facilities and marketing"]
  node_facilities["Facility services"]
  node_marketing["Marketing services"]
end

node_member_actor(("Club member"))
node_employee_actor(("Club employee"))

node_employee_actor -.->|"signs in"| node_employee
node_employee -->|"validates"| node_user
node_member_actor -.->|"uses"| node_member_services
node_member_actor -.->|"requests care"| node_member_requests
node_member_requests -->|"loads physicians"| node_physician
node_member_requests -->|"adds pending checkup"| node_physician
node_member_requests -->|"creates checkup for"| node_member
node_diet_plans -->|"updates report"| node_reports
node_diet_plans -->|"reads and writes"| node_report_store
node_finance_payroll -->|"writes payroll"| node_payroll_store
node_finance_refunds -->|"creates notification"| node_finance_notifications
node_employee -.->|"opens by role"| node_finance_dashboard
node_employee -.->|"opens by role"| node_manager
node_employee -.->|"opens by role"| node_facilities
node_employee -.->|"opens by role"| node_marketing
node_employee -.->|"opens by role"| node_physician_care

click node_employee "https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Common/EmployeeLoginPageController.java"
click node_user "https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Common/User.java"
click node_member "https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/Member/Member.java"
click node_member_services "https://github.com/ismia-shin/oop-project-group4-sportsclub/tree/master/src/main/java/com/group4/sportsclub/Abid/MembershipHolder"
click node_member_requests "https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/Member/RequestCheckupController.java"
click node_physician "https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/Physician/Physician.java"
click node_physician_care "https://github.com/ismia-shin/oop-project-group4-sportsclub/tree/master/src/main/java/com/group4/sportsclub/Samiha/Physician"
click node_diet_plans "https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/Physician/DietPlanController.java"
click node_reports "https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/Physician/Reports.java"
click node_operations "https://github.com/ismia-shin/oop-project-group4-sportsclub/tree/master/src/main/java/com/group4/sportsclub/Abid/OperationsManager"
click node_finance_dashboard "https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/FinancialDashboardController.java"
click node_finance_assets "https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/AssetController.java"
click node_finance_budgets "https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/DepartmentBudgetController.java"
click node_finance_events "https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/EventBudgetController.java"
click node_finance_fees "https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/FeeController.java"
click node_finance_refunds "https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/RefundController.java"
click node_finance_payroll "https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/PayrollController.java"
click node_finance_history "https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/FinancialHistoryController.java"
click node_finance_notifications "https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/FinancialNotificationController.java"
click node_facilities "https://github.com/ismia-shin/oop-project-group4-sportsclub/tree/master/src/main/java/com/group4/sportsclub/Suzane/FacilitiesManager"
click node_marketing "https://github.com/ismia-shin/oop-project-group4-sportsclub/tree/master/src/main/java/com/group4/sportsclub/Suzane/MarketingManager"
click node_manager "https://github.com/ismia-shin/oop-project-group4-sportsclub/tree/master/src/main/java/com/group4/sportsclub/Samiha/Other"

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,node_user,node_member toneBlue
class node_member_services toneAmber
class node_operations,node_manager toneMint
class node_finance_dashboard,node_finance_assets,node_finance_budgets,node_finance_events,node_finance_fees,node_finance_refunds,node_finance_payroll,node_finance_history,node_finance_notifications,node_payroll_store toneRose
class node_member_requests,node_physician,node_physician_care,node_diet_plans,node_reports,node_report_store,node_member_actor,node_employee_actor toneIndigo
class node_facilities,node_marketing toneTeal
```

## Components

### Access and shared

- [Employee login](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Common/EmployeeLoginPageController.java): `src/main/java/com/group4/sportsclub/Common/EmployeeLoginPageController.java`
- [User identity](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Common/User.java): `src/main/java/com/group4/sportsclub/Common/User.java`
- [Member account](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/Member/Member.java): `src/main/java/com/group4/sportsclub/Samiha/Member/Member.java`

### Member services

- [Member services](https://github.com/ismia-shin/oop-project-group4-sportsclub/tree/master/src/main/java/com/group4/sportsclub/Abid/MembershipHolder): `src/main/java/com/group4/sportsclub/Abid/MembershipHolder`

### Club operations

- [Operations management](https://github.com/ismia-shin/oop-project-group4-sportsclub/tree/master/src/main/java/com/group4/sportsclub/Abid/OperationsManager): `src/main/java/com/group4/sportsclub/Abid/OperationsManager`
- [Manager services](https://github.com/ismia-shin/oop-project-group4-sportsclub/tree/master/src/main/java/com/group4/sportsclub/Samiha/Other): `src/main/java/com/group4/sportsclub/Samiha/Other`

### Finance

- [Finance dashboard](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/FinancialDashboardController.java): `src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/FinancialDashboardController.java`
- [Asset management](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/AssetController.java): `src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/AssetController.java`
- [Budget management](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/DepartmentBudgetController.java): `src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/DepartmentBudgetController.java`
- [Event budgets](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/EventBudgetController.java): `src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/EventBudgetController.java`
- [Fees and refunds](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/FeeController.java): `src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/FeeController.java`
- [Refund review](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/RefundController.java): `src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/RefundController.java`
- [Payroll](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/PayrollController.java): `src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/PayrollController.java`
- [Finance history](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/FinancialHistoryController.java): `src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/FinancialHistoryController.java`
- [Finance notifications](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/FinancialNotificationController.java): `src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/FinancialNotificationController.java`
- **Payroll file**

### Member healthcare

- [Health requests](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/Member/RequestCheckupController.java): `src/main/java/com/group4/sportsclub/Samiha/Member/RequestCheckupController.java`
- [Physician account](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/Physician/Physician.java): `src/main/java/com/group4/sportsclub/Samiha/Physician/Physician.java`
- [Clinical care](https://github.com/ismia-shin/oop-project-group4-sportsclub/tree/master/src/main/java/com/group4/sportsclub/Samiha/Physician): `src/main/java/com/group4/sportsclub/Samiha/Physician`
- [Diet plans](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/Physician/DietPlanController.java): `src/main/java/com/group4/sportsclub/Samiha/Physician/DietPlanController.java`
- [Care reports](https://github.com/ismia-shin/oop-project-group4-sportsclub/blob/master/src/main/java/com/group4/sportsclub/Samiha/Physician/Reports.java): `src/main/java/com/group4/sportsclub/Samiha/Physician/Reports.java`
- **Report file**

### Facilities and marketing

- [Facility services](https://github.com/ismia-shin/oop-project-group4-sportsclub/tree/master/src/main/java/com/group4/sportsclub/Suzane/FacilitiesManager): `src/main/java/com/group4/sportsclub/Suzane/FacilitiesManager`
- [Marketing services](https://github.com/ismia-shin/oop-project-group4-sportsclub/tree/master/src/main/java/com/group4/sportsclub/Suzane/MarketingManager): `src/main/java/com/group4/sportsclub/Suzane/MarketingManager`

### Other components

- **Club member**
- **Club employee**

## Connections

- Club employee → Employee login: signs in
- Employee login → User identity: validates (evidence: `src/main/java/com/group4/sportsclub/Common/EmployeeLoginPageController.java`)
- Club member → Member services: uses
- Club member → Health requests: requests care
- Health requests → Physician account: loads physicians (evidence: `src/main/java/com/group4/sportsclub/Samiha/Member/RequestCheckupController.java`)
- Health requests → Physician account: adds pending checkup (evidence: `src/main/java/com/group4/sportsclub/Samiha/Member/RequestCheckupController.java`)
- Health requests → Member account: creates checkup for (evidence: `src/main/java/com/group4/sportsclub/Samiha/Member/RequestCheckupController.java`)
- Diet plans → Care reports: updates report (evidence: `src/main/java/com/group4/sportsclub/Samiha/Physician/DietPlanController.java`)
- Diet plans → Report file: reads and writes (evidence: `src/main/java/com/group4/sportsclub/Samiha/Physician/DietPlanController.java`)
- Payroll → Payroll file: writes payroll (evidence: `src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/PayrollController.java`)
- Refund review → Finance notifications: creates notification (evidence: `src/main/java/com/group4/sportsclub/Samiha/FinancialOfficer/RefundController.java`)
- Employee login → Finance dashboard: opens by role (evidence: `src/main/java/com/group4/sportsclub/Common/EmployeeLoginPageController.java`)
- Employee login → Manager services: opens by role (evidence: `src/main/java/com/group4/sportsclub/Common/EmployeeLoginPageController.java`)
- Employee login → Facility services: opens by role (evidence: `src/main/java/com/group4/sportsclub/Common/EmployeeLoginPageController.java`)
- Employee login → Marketing services: opens by role (evidence: `src/main/java/com/group4/sportsclub/Common/EmployeeLoginPageController.java`)
- Employee login → Clinical care: opens by role (evidence: `src/main/java/com/group4/sportsclub/Common/EmployeeLoginPageController.java`)
