# pavanirathnatunga99-tech/sunrise-dental-clinic architecture

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

- Interactive diagram: https://gitdiagram.com/pavanirathnatunga99-tech/sunrise-dental-clinic
- Repository: https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic

## Overview

Sunrise Dental Clinic is a browser-based clinic-management product backed by a secured Spring REST service and MySQL. Staff sign in, then manage patients, appointments, dentists and treatments, billing, and daily reporting through the React client; appointment booking checks dentist availability and can lead to billing and payment tracking. The graph separates frontend workflows, backend API/service logic, and domain persistence. README statements establish the distributed architecture and major capabilities; unsampled page and security internals are represented only at their documented boundaries.

Main entry points: [`frontend/src/api.js`](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/api.js) (HTTP API client), [`frontend/src/App.jsx`](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/App.jsx) (Routed application), [`backend/src/main/java/com/sunrise/dental/service/ClinicService.java`](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/service/ClinicService.java) (Clinic rules and transactions), [`backend/src/main/java/com/sunrise/dental/controller/ClinicController.java`](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/controller/ClinicController.java) (Clinic REST routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["React clinic client"]
  node_app["Routed application<br/>[App.jsx]"]
  node_api_client["HTTP API client<br/>[api.js]"]
  node_appointments_ui["Appointment workflow<br/>[Appointments.jsx]"]
  node_patient_ui["Patient management<br/>[Patients.jsx]"]
  node_billing_ui["Billing and receipts<br/>[Billing.jsx]"]
  node_dashboard_ui["Daily dashboard<br/>[Dashboard.jsx]"]
  node_manage_ui["Dentist and treatment admin<br/>[Manage.jsx]"]
  node_auth_ui["Login and signup<br/>[Login.jsx]"]
end

subgraph group_api["Spring API and rules"]
  node_clinic_controller["Clinic REST routes"]
  node_clinic_service["Clinic rules and transactions<br/>[ClinicService.java]"]
  node_requests["Validated request DTOs<br/>[Requests.java]"]
end

subgraph group_domain["Clinic data and persistence"]
  node_patient["Patient records<br/>[Patient.java]"]
  node_appointment["Appointment records<br/>[Appointment.java]"]
  node_bill["Bills and payments<br/>[Bill.java]"]
  node_dentist["Dentist records<br/>[Dentist.java]"]
  node_treatment["Treatment catalogue<br/>[Treatment.java]"]
  node_repositories["Spring Data repositories"]
end

subgraph group_identity["Staff identity"]
  node_auth_controller["Authentication routes"]
  node_jwt["JWT creation<br/>[JwtService.java]"]
  node_user["Staff accounts<br/>[User.java]"]
end

node_staff(("Clinic staff"))
node_mysql[("MySQL database")]

node_staff -->|"uses"| node_app
node_app -->|"routes to"| node_appointments_ui
node_app -->|"routes to"| node_patient_ui
node_app -->|"routes to"| node_billing_ui
node_app -->|"routes to"| node_dashboard_ui
node_app -->|"routes to"| node_manage_ui
node_app -->|"routes to"| node_auth_ui
node_appointments_ui -->|"calls"| node_api_client
node_patient_ui -->|"calls"| node_api_client
node_billing_ui -->|"calls"| node_api_client
node_dashboard_ui -->|"calls"| node_api_client
node_manage_ui -->|"calls"| node_api_client
node_auth_ui -->|"calls"| node_api_client
node_api_client -->|"sends JSON requests"| node_clinic_controller
node_api_client -->|"sends login requests"| node_auth_controller
node_clinic_controller -->|"delegates clinic operations"| node_clinic_service
node_clinic_controller -->|"reads catalogue"| node_dentist
node_clinic_controller -->|"reads catalogue"| node_treatment
node_clinic_controller -->|"accepts inputs"| node_requests
node_auth_controller -->|"authenticates accounts"| node_user
node_auth_controller -->|"creates tokens"| node_jwt
node_clinic_service -->|"reads and writes"| node_repositories
node_repositories -->|"persists entities"| node_mysql
node_clinic_service -->|"updates records"| node_patient
node_clinic_service -->|"books and updates"| node_appointment
node_clinic_service -->|"checks availability"| node_dentist
node_clinic_service -->|"assigns and prices"| node_treatment
node_clinic_service -->|"generates and pays"| node_bill

click node_app "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/App.jsx"
click node_api_client "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/api.js"
click node_appointments_ui "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/pages/Appointments.jsx"
click node_patient_ui "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/pages/Patients.jsx"
click node_billing_ui "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/pages/Billing.jsx"
click node_dashboard_ui "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/pages/Dashboard.jsx"
click node_manage_ui "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/pages/Manage.jsx"
click node_auth_ui "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/pages/Login.jsx"
click node_clinic_controller "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/controller/ClinicController.java"
click node_auth_controller "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/controller/AuthController.java"
click node_clinic_service "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/service/ClinicService.java"
click node_requests "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/dto/Requests.java"
click node_jwt "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/security/JwtService.java"
click node_user "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/entity/User.java"
click node_patient "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/entity/Patient.java"
click node_appointment "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/entity/Appointment.java"
click node_bill "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/entity/Bill.java"
click node_dentist "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/entity/Dentist.java"
click node_treatment "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/entity/Treatment.java"
click node_repositories "https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/tree/main/backend/src/main/java/com/sunrise/dental/repository"

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_api_client,node_appointments_ui,node_patient_ui,node_billing_ui,node_dashboard_ui,node_manage_ui,node_auth_ui toneBlue
class node_clinic_controller,node_clinic_service,node_requests,node_mysql toneAmber
class node_patient,node_appointment,node_bill,node_dentist,node_treatment,node_repositories toneMint
class node_auth_controller,node_jwt,node_user toneRose
class node_staff toneIndigo
```

## Components

### React clinic client

- [Routed application](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [HTTP API client](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/api.js): `frontend/src/api.js`
- [Appointment workflow](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/pages/Appointments.jsx): `frontend/src/pages/Appointments.jsx`
- [Patient management](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/pages/Patients.jsx): `frontend/src/pages/Patients.jsx`
- [Billing and receipts](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/pages/Billing.jsx): `frontend/src/pages/Billing.jsx`
- [Daily dashboard](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/pages/Dashboard.jsx): `frontend/src/pages/Dashboard.jsx`
- [Dentist and treatment admin](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/pages/Manage.jsx): `frontend/src/pages/Manage.jsx`
- [Login and signup](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/frontend/src/pages/Login.jsx): `frontend/src/pages/Login.jsx`

### Spring API and rules

- [Clinic REST routes](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/controller/ClinicController.java): `backend/src/main/java/com/sunrise/dental/controller/ClinicController.java`
- [Clinic rules and transactions](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/service/ClinicService.java): `backend/src/main/java/com/sunrise/dental/service/ClinicService.java`
- [Validated request DTOs](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/dto/Requests.java): `backend/src/main/java/com/sunrise/dental/dto/Requests.java`

### Clinic data and persistence

- [Patient records](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/entity/Patient.java): `backend/src/main/java/com/sunrise/dental/entity/Patient.java`
- [Appointment records](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/entity/Appointment.java): `backend/src/main/java/com/sunrise/dental/entity/Appointment.java`
- [Bills and payments](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/entity/Bill.java): `backend/src/main/java/com/sunrise/dental/entity/Bill.java`
- [Dentist records](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/entity/Dentist.java): `backend/src/main/java/com/sunrise/dental/entity/Dentist.java`
- [Treatment catalogue](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/entity/Treatment.java): `backend/src/main/java/com/sunrise/dental/entity/Treatment.java`
- [Spring Data repositories](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/tree/main/backend/src/main/java/com/sunrise/dental/repository): `backend/src/main/java/com/sunrise/dental/repository`

### Staff identity

- [Authentication routes](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/controller/AuthController.java): `backend/src/main/java/com/sunrise/dental/controller/AuthController.java`
- [JWT creation](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/security/JwtService.java): `backend/src/main/java/com/sunrise/dental/security/JwtService.java`
- [Staff accounts](https://github.com/pavanirathnatunga99-tech/sunrise-dental-clinic/blob/main/backend/src/main/java/com/sunrise/dental/entity/User.java): `backend/src/main/java/com/sunrise/dental/entity/User.java`

### Other components

- **Clinic staff**
- **MySQL database**

## Connections

- Clinic staff → Routed application: uses (evidence: `frontend/src/App.jsx`)
- Routed application → Appointment workflow: routes to (evidence: `frontend/src/App.jsx`)
- Routed application → Patient management: routes to (evidence: `frontend/src/App.jsx`)
- Routed application → Billing and receipts: routes to (evidence: `frontend/src/App.jsx`)
- Routed application → Daily dashboard: routes to (evidence: `frontend/src/App.jsx`)
- Routed application → Dentist and treatment admin: routes to (evidence: `frontend/src/App.jsx`)
- Routed application → Login and signup: routes to (evidence: `frontend/src/App.jsx`)
- Appointment workflow → HTTP API client: calls (evidence: `frontend/src/pages/Appointments.jsx`)
- Patient management → HTTP API client: calls (evidence: `frontend/src/pages/Patients.jsx`)
- Billing and receipts → HTTP API client: calls (evidence: `frontend/src/pages/Billing.jsx`)
- Daily dashboard → HTTP API client: calls (evidence: `frontend/src/pages/Dashboard.jsx`)
- Dentist and treatment admin → HTTP API client: calls (evidence: `frontend/src/pages/Manage.jsx`)
- Login and signup → HTTP API client: calls (evidence: `frontend/src/pages/Login.jsx`)
- HTTP API client → Clinic REST routes: sends JSON requests (evidence: `README.md`)
- HTTP API client → Authentication routes: sends login requests (evidence: `README.md`)
- Clinic REST routes → Clinic rules and transactions: delegates clinic operations (evidence: `backend/src/main/java/com/sunrise/dental/controller/ClinicController.java`)
- Clinic REST routes → Dentist records: reads catalogue (evidence: `backend/src/main/java/com/sunrise/dental/controller/ClinicController.java`)
- Clinic REST routes → Treatment catalogue: reads catalogue (evidence: `backend/src/main/java/com/sunrise/dental/controller/ClinicController.java`)
- Clinic REST routes → Validated request DTOs: accepts inputs (evidence: `backend/src/main/java/com/sunrise/dental/controller/ClinicController.java`)
- Authentication routes → Staff accounts: authenticates accounts (evidence: `backend/src/main/java/com/sunrise/dental/controller/AuthController.java`)
- Authentication routes → JWT creation: creates tokens (evidence: `backend/src/main/java/com/sunrise/dental/controller/AuthController.java`)
- Clinic rules and transactions → Spring Data repositories: reads and writes (evidence: `backend/src/main/java/com/sunrise/dental/service/ClinicService.java`)
- Spring Data repositories → MySQL database: persists entities (evidence: `README.md`)
- Clinic rules and transactions → Patient records: updates records (evidence: `backend/src/main/java/com/sunrise/dental/service/ClinicService.java`)
- Clinic rules and transactions → Appointment records: books and updates (evidence: `backend/src/main/java/com/sunrise/dental/service/ClinicService.java`)
- Clinic rules and transactions → Dentist records: checks availability (evidence: `backend/src/main/java/com/sunrise/dental/service/ClinicService.java`)
- Clinic rules and transactions → Treatment catalogue: assigns and prices (evidence: `backend/src/main/java/com/sunrise/dental/service/ClinicService.java`)
- Clinic rules and transactions → Bills and payments: generates and pays (evidence: `backend/src/main/java/com/sunrise/dental/service/ClinicService.java`)
