# marcluna-git/pupbc-carelink architecture

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

- Interactive diagram: https://gitdiagram.com/marcluna-git/pupbc-carelink
- Repository: https://github.com/marcluna-git/pupbc-carelink

## Overview

PUPBC CareLink is a clinic-management system with a React app and Laravel API. Students register or sign in, maintain health information, book appointments, and use the kiosk to check in; nurses manage appointments, consultations, queue, records, medicines, courses, and clinic communications. The graph preserves these documented-by-tree product areas, but several controller implementations were not sampled, so uncertain internal wiring is omitted.

Main entry points: [`backend/routes/api.php`](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/routes/api.php) (API routes), [`frontend/src/App.jsx`](https://github.com/marcluna-git/pupbc-carelink/blob/main/frontend/src/App.jsx) (App routing), [`backend/app/Http/Controllers/Api/Kiosk/KioskController.php`](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Http/Controllers/Api/Kiosk/KioskController.php) (Kiosk check-in), [`frontend/src/services/api.js`](https://github.com/marcluna-git/pupbc-carelink/blob/main/frontend/src/services/api.js) (API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["React client"]
  node_app["App routing<br/>[App.jsx]"]
  node_student_pages["Student pages"]
  node_nurse_pages["Nurse pages"]
  node_kiosk_pages["Kiosk pages"]
  node_auth_client["Auth client<br/>[authService.js]"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_api["API and identity"]
  node_api_routes["API routes<br/>[api.php]"]
  node_auth_controller["Auth controller<br/>[AuthController.php]"]
  node_auth_service["Auth service<br/>[AuthService.php]"]
end

subgraph group_clinic["Clinic operations"]
  node_student_appt["Student appointments"]
  node_nurse_appt["Nurse appointments"]
  node_kiosk["Kiosk check-in"]
  node_queue["Queue service<br/>[ClinicQueue.php]"]
  node_identity["Kiosk identity<br/>[KioskIdentity.php]"]
  node_consultation["Consultations"]
  node_emergency["Emergency encounters"]
  node_medicine["Medicine inventory"]
  node_nurse_admin["Clinic administration"]
  node_student_features["Student services"]
end

subgraph group_records["Clinical and admin data"]
  node_user_store[("User data<br/>[User.php]")]
  node_registration_store[("Registration data")]
  node_appt_store[("Appointment data<br/>[Appointment.php]")]
  node_checkin[("Check-in data")]
  node_health["Health profiles"]
  node_medicine_store[("Medicine stock<br/>[Medicine.php]")]
end

node_student(("Student"))
node_nurse(("Nurse"))
node_kiosk_user(("Kiosk visitor"))
node_email["Email delivery"]

node_student -->|"uses"| node_app
node_nurse -->|"uses"| node_app
node_kiosk_user -->|"uses"| node_app
node_app -->|"routes to"| node_student_pages
node_app -->|"routes to"| node_nurse_pages
node_app -->|"routes to"| node_kiosk_pages
node_student_pages -->|"auth requests"| node_auth_client
node_auth_client -->|"sends requests"| node_api_client
node_student_pages -->|"sends requests"| node_api_client
node_nurse_pages -->|"sends requests"| node_api_client
node_kiosk_pages -->|"sends requests"| node_api_client
node_api_client -->|"calls API"| node_api_routes
node_api_routes -->|"dispatches"| node_auth_controller
node_api_routes -->|"dispatches"| node_student_appt
node_api_routes -->|"dispatches"| node_nurse_appt
node_api_routes -->|"dispatches"| node_kiosk
node_api_routes -->|"dispatches"| node_consultation
node_api_routes -->|"dispatches"| node_emergency
node_api_routes -->|"dispatches"| node_health
node_api_routes -->|"dispatches"| node_medicine
node_auth_controller -->|"calls"| node_auth_service
node_auth_service -->|"reads and writes"| node_user_store
node_auth_service -->|"reads and writes"| node_registration_store
node_auth_service -->|"sends verification"| node_email
node_student_appt -->|"reads and writes"| node_appt_store
node_nurse_appt -->|"manages"| node_appt_store
node_kiosk -->|"resolves student"| node_identity
node_kiosk -->|"allocates and reads"| node_queue
node_kiosk -->|"resolves appointment"| node_appt_store
node_kiosk -->|"creates check-in"| node_checkin
node_medicine -->|"updates stock"| node_medicine_store
node_student_pages -->|"uses services"| node_student_features
node_nurse_pages -->|"uses services"| node_nurse_admin

click node_app "https://github.com/marcluna-git/pupbc-carelink/blob/main/frontend/src/App.jsx"
click node_student_pages "https://github.com/marcluna-git/pupbc-carelink/tree/main/frontend/src/pages/Student"
click node_nurse_pages "https://github.com/marcluna-git/pupbc-carelink/tree/main/frontend/src/pages/Admin"
click node_kiosk_pages "https://github.com/marcluna-git/pupbc-carelink/tree/main/frontend/src/pages/Kiosk"
click node_auth_client "https://github.com/marcluna-git/pupbc-carelink/blob/main/frontend/src/services/authService.js"
click node_api_client "https://github.com/marcluna-git/pupbc-carelink/blob/main/frontend/src/services/api.js"
click node_api_routes "https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/routes/api.php"
click node_auth_controller "https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Http/Controllers/Api/AuthController.php"
click node_auth_service "https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Services/AuthService.php"
click node_user_store "https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Models/User.php"
click node_registration_store "https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Models/PendingRegistration.php"
click node_student_appt "https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Http/Controllers/Api/Student/AppointmentController.php"
click node_nurse_appt "https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Http/Controllers/Api/Nurse/AppointmentController.php"
click node_appt_store "https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Models/Appointment.php"
click node_kiosk "https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Http/Controllers/Api/Kiosk/KioskController.php"
click node_checkin "https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Models/AppointmentCheckin.php"
click node_queue "https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Services/ClinicQueue.php"
click node_identity "https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Services/KioskIdentity.php"
click node_consultation "https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Http/Controllers/Api/Nurse/ConsultationController.php"
click node_emergency "https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Http/Controllers/Api/Nurse/EmergencyEncounterController.php"
click node_health "https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Http/Controllers/Api/Student/HealthProfileController.php"
click node_medicine "https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Http/Controllers/Api/Nurse/MedicineController.php"
click node_medicine_store "https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Models/Medicine.php"
click node_nurse_admin "https://github.com/marcluna-git/pupbc-carelink/tree/main/backend/app/Http/Controllers/Api/Nurse"
click node_student_features "https://github.com/marcluna-git/pupbc-carelink/tree/main/backend/app/Http/Controllers/Api/Student"

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_student_pages,node_nurse_pages,node_kiosk_pages,node_auth_client,node_api_client toneBlue
class node_api_routes,node_auth_controller,node_auth_service toneAmber
class node_student_appt,node_nurse_appt,node_kiosk,node_queue,node_identity,node_consultation,node_emergency,node_medicine,node_nurse_admin,node_student_features toneMint
class node_user_store,node_registration_store,node_appt_store,node_checkin,node_health,node_medicine_store toneRose
class node_student,node_nurse,node_kiosk_user,node_email toneIndigo
```

## Components

### React client

- [App routing](https://github.com/marcluna-git/pupbc-carelink/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Student pages](https://github.com/marcluna-git/pupbc-carelink/tree/main/frontend/src/pages/Student): `frontend/src/pages/Student`
- [Nurse pages](https://github.com/marcluna-git/pupbc-carelink/tree/main/frontend/src/pages/Admin): `frontend/src/pages/Admin`
- [Kiosk pages](https://github.com/marcluna-git/pupbc-carelink/tree/main/frontend/src/pages/Kiosk): `frontend/src/pages/Kiosk`
- [Auth client](https://github.com/marcluna-git/pupbc-carelink/blob/main/frontend/src/services/authService.js): `frontend/src/services/authService.js`
- [API client](https://github.com/marcluna-git/pupbc-carelink/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`

### API and identity

- [API routes](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/routes/api.php): `backend/routes/api.php`
- [Auth controller](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Http/Controllers/Api/AuthController.php): `backend/app/Http/Controllers/Api/AuthController.php`
- [Auth service](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Services/AuthService.php): `backend/app/Services/AuthService.php`

### Clinic operations

- [Student appointments](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Http/Controllers/Api/Student/AppointmentController.php): `backend/app/Http/Controllers/Api/Student/AppointmentController.php`
- [Nurse appointments](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Http/Controllers/Api/Nurse/AppointmentController.php): `backend/app/Http/Controllers/Api/Nurse/AppointmentController.php`
- [Kiosk check-in](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Http/Controllers/Api/Kiosk/KioskController.php): `backend/app/Http/Controllers/Api/Kiosk/KioskController.php`
- [Queue service](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Services/ClinicQueue.php): `backend/app/Services/ClinicQueue.php`
- [Kiosk identity](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Services/KioskIdentity.php): `backend/app/Services/KioskIdentity.php`
- [Consultations](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Http/Controllers/Api/Nurse/ConsultationController.php): `backend/app/Http/Controllers/Api/Nurse/ConsultationController.php`
- [Emergency encounters](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Http/Controllers/Api/Nurse/EmergencyEncounterController.php): `backend/app/Http/Controllers/Api/Nurse/EmergencyEncounterController.php`
- [Medicine inventory](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Http/Controllers/Api/Nurse/MedicineController.php): `backend/app/Http/Controllers/Api/Nurse/MedicineController.php`
- [Clinic administration](https://github.com/marcluna-git/pupbc-carelink/tree/main/backend/app/Http/Controllers/Api/Nurse): `backend/app/Http/Controllers/Api/Nurse`
- [Student services](https://github.com/marcluna-git/pupbc-carelink/tree/main/backend/app/Http/Controllers/Api/Student): `backend/app/Http/Controllers/Api/Student`

### Clinical and admin data

- [User data](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Models/User.php): `backend/app/Models/User.php`
- [Registration data](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Models/PendingRegistration.php): `backend/app/Models/PendingRegistration.php`
- [Appointment data](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Models/Appointment.php): `backend/app/Models/Appointment.php`
- [Check-in data](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Models/AppointmentCheckin.php): `backend/app/Models/AppointmentCheckin.php`
- [Health profiles](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Http/Controllers/Api/Student/HealthProfileController.php): `backend/app/Http/Controllers/Api/Student/HealthProfileController.php`
- [Medicine stock](https://github.com/marcluna-git/pupbc-carelink/blob/main/backend/app/Models/Medicine.php): `backend/app/Models/Medicine.php`

### Other components

- **Student**
- **Nurse**
- **Kiosk visitor**
- **Email delivery**

## Connections

- Student → App routing: uses
- Nurse → App routing: uses
- Kiosk visitor → App routing: uses
- App routing → Student pages: routes to
- App routing → Nurse pages: routes to
- App routing → Kiosk pages: routes to
- Student pages → Auth client: auth requests
- Auth client → API client: sends requests
- Student pages → API client: sends requests
- Nurse pages → API client: sends requests
- Kiosk pages → API client: sends requests
- API client → API routes: calls API
- API routes → Auth controller: dispatches
- API routes → Student appointments: dispatches
- API routes → Nurse appointments: dispatches
- API routes → Kiosk check-in: dispatches
- API routes → Consultations: dispatches
- API routes → Emergency encounters: dispatches
- API routes → Health profiles: dispatches
- API routes → Medicine inventory: dispatches
- Auth controller → Auth service: calls
- Auth service → User data: reads and writes
- Auth service → Registration data: reads and writes
- Auth service → Email delivery: sends verification
- Student appointments → Appointment data: reads and writes
- Nurse appointments → Appointment data: manages
- Kiosk check-in → Kiosk identity: resolves student
- Kiosk check-in → Queue service: allocates and reads
- Kiosk check-in → Appointment data: resolves appointment
- Kiosk check-in → Check-in data: creates check-in
- Medicine inventory → Medicine stock: updates stock
- Student pages → Student services: uses services
- Nurse pages → Clinic administration: uses services
