# elyasdark/uhc architecture

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

- Interactive diagram: https://gitdiagram.com/elyasdark/uhc
- Repository: https://github.com/elyasdark/uhc

## Overview

UHC is a cross-platform university health-center platform: patients discover and book appointments directly or through a multilingual AI assistant; doctors manage schedules and check-ins; administrators operate the center and govern access. The README documents broader Flutter capabilities than the supplied tree exposes, so the client is represented without an invented source path. Backend relationships reflect the exported Cloud Functions and sampled assistant/auth code; unsampled client wiring is not inferred.

Main entry points: [`functions/src/index.ts`](https://github.com/elyasdark/uhc/blob/main/functions/src/index.ts) (Callable API Exports), [`functions/src/assistant/chatService.ts`](https://github.com/elyasdark/uhc/blob/main/functions/src/assistant/chatService.ts) (Chat and Booking Flow), [`functions/src/admin.ts`](https://github.com/elyasdark/uhc/blob/main/functions/src/admin.ts) (Admin Governance), [`functions/src/appointments.ts`](https://github.com/elyasdark/uhc/blob/main/functions/src/appointments.ts) (Appointment Actions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Patient and Staff App"]
  node_app["Flutter App"]
  node_auth["Sign-in and Profiles"]
  node_documents["Medical Documents"]
end

subgraph group_care["Appointments and Care"]
  node_appointment["Appointment Actions<br/>[appointments.ts]"]
  node_availability["Doctor Availability"]
  node_doctor_ops["Doctor Management<br/>[doctors.ts]"]
  node_departments["Department Management<br/>[departments.ts]"]
end

subgraph group_governance["Operations and Governance"]
  node_admin_ops["Admin Governance<br/>[admin.ts]"]
  node_user_ops["User Management<br/>[users.ts]"]
  node_audit["Audit Records<br/>[audit.ts]"]
  node_notifications["Notifications"]
end

subgraph group_assistant["AI Scheduling"]
  node_assistant_api["Assistant Endpoints<br/>[index.ts]"]
  node_chat["Chat and Booking Flow<br/>[chatService.ts]"]
  node_interpreter["Request Interpretation<br/>[geminiClient.ts]"]
  node_matching["Schedule Matching<br/>[scheduleMatcher.ts]"]
  node_localization["Assistant Localization<br/>[localization.ts]"]
  node_quota["Assistant Quotas<br/>[quota.ts]"]
end

subgraph group_platform["Firebase Services"]
  node_function_exports["Callable API Exports<br/>[index.ts]"]
  node_auth_service["Firebase Authentication"]
  node_firestore[("Cloud Firestore")]
  node_storage[("Firebase Storage")]
  node_fcm["Firebase Messaging"]
end

node_patients(("Patients and Staff"))
node_doctors(("Doctors"))
node_admins(("Admins"))
node_gemini["Google Gemini"]

node_patients -->|"use"| node_app
node_doctors -->|"use"| node_app
node_admins -->|"use"| node_app
node_app -->|"sign in"| node_auth
node_auth -->|"authenticate"| node_auth_service
node_app -->|"invoke"| node_function_exports
node_function_exports -->|"exports"| node_appointment
node_function_exports -->|"exports"| node_availability
node_function_exports -->|"exports"| node_doctor_ops
node_function_exports -->|"exports"| node_departments
node_function_exports -->|"exports"| node_user_ops
node_function_exports -->|"exports"| node_admin_ops
node_function_exports -->|"exports"| node_notifications
node_function_exports -->|"exports"| node_assistant_api
node_appointment -->|"read and write"| node_firestore
node_availability -->|"read and write"| node_firestore
node_doctor_ops -->|"read and write"| node_firestore
node_departments -->|"read and write"| node_firestore
node_user_ops -->|"read and write"| node_firestore
node_admin_ops -->|"read and write"| node_firestore
node_admin_ops -->|"records actions"| node_audit
node_admin_ops -->|"administers accounts"| node_auth_service
node_documents -->|"upload files"| node_storage
node_app -->|"manage alerts"| node_notifications
node_notifications -->|"deliver pushes"| node_fcm
node_assistant_api -->|"dispatches"| node_chat
node_chat -->|"stores chat"| node_firestore
node_chat -->|"interprets request"| node_interpreter
node_interpreter -.->|"requests interpretation"| node_gemini
node_chat -->|"finds schedule offers"| node_matching
node_chat -->|"checks quota"| node_quota
node_chat -->|"uses locale"| node_localization
node_chat -->|"confirms booking"| node_appointment

click node_appointment "https://github.com/elyasdark/uhc/blob/main/functions/src/appointments.ts"
click node_availability "https://github.com/elyasdark/uhc/blob/main/functions/src/doctorAvailability.ts"
click node_doctor_ops "https://github.com/elyasdark/uhc/blob/main/functions/src/doctors.ts"
click node_departments "https://github.com/elyasdark/uhc/blob/main/functions/src/departments.ts"
click node_admin_ops "https://github.com/elyasdark/uhc/blob/main/functions/src/admin.ts"
click node_user_ops "https://github.com/elyasdark/uhc/blob/main/functions/src/users.ts"
click node_audit "https://github.com/elyasdark/uhc/blob/main/functions/src/shared/audit.ts"
click node_notifications "https://github.com/elyasdark/uhc/tree/main/functions/src/notifications"
click node_assistant_api "https://github.com/elyasdark/uhc/blob/main/functions/src/assistant/index.ts"
click node_chat "https://github.com/elyasdark/uhc/blob/main/functions/src/assistant/chatService.ts"
click node_interpreter "https://github.com/elyasdark/uhc/blob/main/functions/src/assistant/geminiClient.ts"
click node_matching "https://github.com/elyasdark/uhc/blob/main/functions/src/assistant/scheduleMatcher.ts"
click node_localization "https://github.com/elyasdark/uhc/blob/main/functions/src/assistant/localization.ts"
click node_quota "https://github.com/elyasdark/uhc/blob/main/functions/src/assistant/quota.ts"
click node_function_exports "https://github.com/elyasdark/uhc/blob/main/functions/src/index.ts"

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_auth,node_documents toneBlue
class node_appointment,node_availability,node_doctor_ops,node_departments toneAmber
class node_admin_ops,node_user_ops,node_audit,node_notifications toneMint
class node_assistant_api,node_chat,node_interpreter,node_matching,node_localization,node_quota toneRose
class node_function_exports,node_auth_service,node_firestore,node_storage,node_fcm,node_patients,node_doctors,node_admins,node_gemini toneIndigo
```

## Components

### Patient and Staff App

- **Flutter App**
- **Sign-in and Profiles**
- **Medical Documents**

### Appointments and Care

- [Appointment Actions](https://github.com/elyasdark/uhc/blob/main/functions/src/appointments.ts): `functions/src/appointments.ts`
- [Doctor Availability](https://github.com/elyasdark/uhc/blob/main/functions/src/doctorAvailability.ts): `functions/src/doctorAvailability.ts`
- [Doctor Management](https://github.com/elyasdark/uhc/blob/main/functions/src/doctors.ts): `functions/src/doctors.ts`
- [Department Management](https://github.com/elyasdark/uhc/blob/main/functions/src/departments.ts): `functions/src/departments.ts`

### Operations and Governance

- [Admin Governance](https://github.com/elyasdark/uhc/blob/main/functions/src/admin.ts): `functions/src/admin.ts`
- [User Management](https://github.com/elyasdark/uhc/blob/main/functions/src/users.ts): `functions/src/users.ts`
- [Audit Records](https://github.com/elyasdark/uhc/blob/main/functions/src/shared/audit.ts): `functions/src/shared/audit.ts`
- [Notifications](https://github.com/elyasdark/uhc/tree/main/functions/src/notifications): `functions/src/notifications`

### AI Scheduling

- [Assistant Endpoints](https://github.com/elyasdark/uhc/blob/main/functions/src/assistant/index.ts): `functions/src/assistant/index.ts`
- [Chat and Booking Flow](https://github.com/elyasdark/uhc/blob/main/functions/src/assistant/chatService.ts): `functions/src/assistant/chatService.ts`
- [Request Interpretation](https://github.com/elyasdark/uhc/blob/main/functions/src/assistant/geminiClient.ts): `functions/src/assistant/geminiClient.ts`
- [Schedule Matching](https://github.com/elyasdark/uhc/blob/main/functions/src/assistant/scheduleMatcher.ts): `functions/src/assistant/scheduleMatcher.ts`
- [Assistant Localization](https://github.com/elyasdark/uhc/blob/main/functions/src/assistant/localization.ts): `functions/src/assistant/localization.ts`
- [Assistant Quotas](https://github.com/elyasdark/uhc/blob/main/functions/src/assistant/quota.ts): `functions/src/assistant/quota.ts`

### Firebase Services

- [Callable API Exports](https://github.com/elyasdark/uhc/blob/main/functions/src/index.ts): `functions/src/index.ts`
- **Firebase Authentication**
- **Cloud Firestore**
- **Firebase Storage**
- **Firebase Messaging**

### Other components

- **Patients and Staff**
- **Doctors**
- **Admins**
- **Google Gemini**

## Connections

- Patients and Staff → Flutter App: use
- Doctors → Flutter App: use
- Admins → Flutter App: use
- Flutter App → Sign-in and Profiles: sign in
- Sign-in and Profiles → Firebase Authentication: authenticate
- Flutter App → Callable API Exports: invoke
- Callable API Exports → Appointment Actions: exports
- Callable API Exports → Doctor Availability: exports
- Callable API Exports → Doctor Management: exports
- Callable API Exports → Department Management: exports
- Callable API Exports → User Management: exports
- Callable API Exports → Admin Governance: exports
- Callable API Exports → Notifications: exports
- Callable API Exports → Assistant Endpoints: exports
- Appointment Actions → Cloud Firestore: read and write
- Doctor Availability → Cloud Firestore: read and write
- Doctor Management → Cloud Firestore: read and write
- Department Management → Cloud Firestore: read and write
- User Management → Cloud Firestore: read and write
- Admin Governance → Cloud Firestore: read and write
- Admin Governance → Audit Records: records actions
- Admin Governance → Firebase Authentication: administers accounts
- Medical Documents → Firebase Storage: upload files
- Flutter App → Notifications: manage alerts
- Notifications → Firebase Messaging: deliver pushes
- Assistant Endpoints → Chat and Booking Flow: dispatches
- Chat and Booking Flow → Cloud Firestore: stores chat
- Chat and Booking Flow → Request Interpretation: interprets request
- Request Interpretation → Google Gemini: requests interpretation
- Chat and Booking Flow → Schedule Matching: finds schedule offers
- Chat and Booking Flow → Assistant Quotas: checks quota
- Chat and Booking Flow → Assistant Localization: uses locale
- Chat and Booking Flow → Appointment Actions: confirms booking
