# nabiha02/caretai-327-project architecture

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

- Interactive diagram: https://gitdiagram.com/nabiha02/caretai-327-project
- Repository: https://github.com/nabiha02/caretai-327-project

## Overview

CARETAI is a clinical information-collection and review demo, not a diagnostic or prescribing system. Its intended workflow collects patient/caregiver-reported information, organizes it into a visit and draft report, and presents saved material for clinician review and patient confirmation. The frontend also provides role-based onboarding, doctor verification, and admin demo workflows. The backend’s route-to-service and persistence links are visible in sampled source; frontend-to-backend wiring is described as incremental, so those connections are shown as unverified. Several frontend feature implementations were not sampled.

Main entry points: [`frontend/src/app/router.tsx`](https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/app/router.tsx) (Role router), [`backend/app/api/visits.py`](https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/api/visits.py) (Visit records), [`backend/app/main.py`](https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/main.py) (FastAPI routes), [`frontend/src/doctor/layout/DoctorApp.tsx`](https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/doctor/layout/DoctorApp.tsx) (Doctor workspace)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Frontend experience"]
  node_router["Role router<br/>[router.tsx]"]
  node_patientui["Patient workspace<br/>[PatientApp.tsx]"]
  node_doctorui["Doctor workspace<br/>[DoctorApp.tsx]"]
  node_reviewui["Visit review"]
  node_adminui["Admin workflows<br/>[AdminApp.tsx]"]
end

subgraph group_intake["Intake and records"]
  node_api["Frontend API client<br/>[api.ts]"]
  node_backend["FastAPI routes<br/>[main.py]"]
  node_conversations["Conversation intake<br/>[conversations.py]"]
  node_conversationlogic["Intake and draft logic<br/>[conversation.py]"]
  node_messages["Message endpoints<br/>[messages.py]"]
  node_visits["Visit records<br/>[visits.py]"]
  node_schemas["Visit data contract<br/>[visit.py]"]
  node_storage["Persistence helpers<br/>[storage.py]"]
  node_sqlite[("SQLite database<br/>[client.py]")]
end

subgraph group_review["Clinical review"]
  node_reports["Report endpoints<br/>[reports.py]"]
  node_doctorpatients[("Doctor patient data")]
  node_careplans["Care plans"]
  node_doctorreports["Doctor reports<br/>[DoctorReports.tsx]"]
end

subgraph group_identity["Identity and access"]
  node_registration["Account onboarding"]
  node_authstate[("Demo auth state<br/>[demoAuth.ts]")]
  node_verification["Doctor verification"]
  node_adminsession[("Admin session<br/>[adminSession.ts]")]
end

node_user(("Patient / caregiver"))
node_doctor(("Clinician"))
node_admin(("Administrator"))

node_user -->|"opens app"| node_router
node_doctor -->|"opens app"| node_router
node_admin -->|"opens app"| node_router
node_router -->|"routes patient"| node_patientui
node_router -->|"routes doctor"| node_doctorui
node_router -->|"routes admin"| node_adminui
node_router -->|"routes onboarding"| node_registration
node_router -->|"checks session"| node_authstate
node_router -->|"checks session"| node_adminsession
node_registration -->|"records registration"| node_authstate
node_adminui -->|"renders review"| node_verification
node_verification -->|"updates doctor status"| node_authstate
node_user -->|"provides intake"| node_patientui
node_patientui -->|"starts conversation"| node_api
node_patientui -->|"loads visit"| node_api
node_api -.->|"calls service"| node_backend
node_backend -->|"registers routes"| node_conversations
node_backend -->|"registers routes"| node_visits
node_backend -->|"registers routes"| node_messages
node_backend -->|"registers routes"| node_reports
node_conversations -->|"delegates intake"| node_conversationlogic
node_conversations -->|"persists records"| node_storage
node_messages -->|"stores messages"| node_storage
node_visits -->|"reads and writes"| node_storage
node_visits -->|"refreshes draft"| node_conversationlogic
node_reports -->|"reads and writes"| node_storage
node_storage -.->|"uses connection"| node_sqlite
node_visits -->|"validates payload"| node_schemas
node_doctorui -->|"renders reviews"| node_reviewui
node_reviewui -->|"loads saved records"| node_api
node_reviewui -->|"derives demo reviews"| node_doctorpatients
node_doctor -->|"reviews visits"| node_doctorui
node_doctorui -->|"renders care plans"| node_careplans
node_doctorui -->|"renders reports"| node_doctorreports
node_user -.->|"confirms visit"| node_visits
node_visits -.->|"creates draft"| node_reports

click node_router "https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/app/router.tsx"
click node_patientui "https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/patient/layout/PatientApp.tsx"
click node_doctorui "https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/doctor/layout/DoctorApp.tsx"
click node_reviewui "https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/doctor/consultation-review/DoctorVisitReviews.tsx"
click node_adminui "https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/admin/layout/AdminApp.tsx"
click node_registration "https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/auth/pages/DoctorRegistrationPage.tsx"
click node_authstate "https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/auth/services/demoAuth.ts"
click node_verification "https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/admin/doctor-verification/ApplicationReview.tsx"
click node_adminsession "https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/admin/data/adminSession.ts"
click node_api "https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/app/api.ts"
click node_backend "https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/main.py"
click node_conversations "https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/api/conversations.py"
click node_conversationlogic "https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/services/conversation.py"
click node_messages "https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/api/messages.py"
click node_visits "https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/api/visits.py"
click node_reports "https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/api/reports.py"
click node_schemas "https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/schemas/visit.py"
click node_storage "https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/services/storage.py"
click node_sqlite "https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/database/client.py"
click node_doctorpatients "https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/doctor/data/doctorPatientData.ts"
click node_careplans "https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/doctor/care-plans/DoctorCarePlans.tsx"
click node_doctorreports "https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/doctor/reports/DoctorReports.tsx"

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_router,node_patientui,node_doctorui,node_reviewui,node_adminui toneBlue
class node_api,node_backend,node_conversations,node_conversationlogic,node_messages,node_visits,node_schemas,node_storage,node_sqlite toneAmber
class node_reports,node_doctorpatients,node_careplans,node_doctorreports toneMint
class node_registration,node_authstate,node_verification,node_adminsession toneRose
class node_user,node_doctor,node_admin toneIndigo
```

## Components

### Frontend experience

- [Role router](https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/app/router.tsx): `frontend/src/app/router.tsx`
- [Patient workspace](https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/patient/layout/PatientApp.tsx): `frontend/src/patient/layout/PatientApp.tsx`
- [Doctor workspace](https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/doctor/layout/DoctorApp.tsx): `frontend/src/doctor/layout/DoctorApp.tsx`
- [Visit review](https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/doctor/consultation-review/DoctorVisitReviews.tsx): `frontend/src/doctor/consultation-review/DoctorVisitReviews.tsx`
- [Admin workflows](https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/admin/layout/AdminApp.tsx): `frontend/src/admin/layout/AdminApp.tsx`

### Intake and records

- [Frontend API client](https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/app/api.ts): `frontend/src/app/api.ts`
- [FastAPI routes](https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/main.py): `backend/app/main.py`
- [Conversation intake](https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/api/conversations.py): `backend/app/api/conversations.py`
- [Intake and draft logic](https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/services/conversation.py): `backend/app/services/conversation.py`
- [Message endpoints](https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/api/messages.py): `backend/app/api/messages.py`
- [Visit records](https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/api/visits.py): `backend/app/api/visits.py`
- [Visit data contract](https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/schemas/visit.py): `backend/app/schemas/visit.py`
- [Persistence helpers](https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/services/storage.py): `backend/app/services/storage.py`
- [SQLite database](https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/database/client.py): `backend/app/database/client.py`

### Clinical review

- [Report endpoints](https://github.com/nabiha02/caretai-327-project/blob/main/backend/app/api/reports.py): `backend/app/api/reports.py`
- [Doctor patient data](https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/doctor/data/doctorPatientData.ts): `frontend/src/doctor/data/doctorPatientData.ts`
- [Care plans](https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/doctor/care-plans/DoctorCarePlans.tsx): `frontend/src/doctor/care-plans/DoctorCarePlans.tsx`
- [Doctor reports](https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/doctor/reports/DoctorReports.tsx): `frontend/src/doctor/reports/DoctorReports.tsx`

### Identity and access

- [Account onboarding](https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/auth/pages/DoctorRegistrationPage.tsx): `frontend/src/auth/pages/DoctorRegistrationPage.tsx`
- [Demo auth state](https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/auth/services/demoAuth.ts): `frontend/src/auth/services/demoAuth.ts`
- [Doctor verification](https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/admin/doctor-verification/ApplicationReview.tsx): `frontend/src/admin/doctor-verification/ApplicationReview.tsx`
- [Admin session](https://github.com/nabiha02/caretai-327-project/blob/main/frontend/src/admin/data/adminSession.ts): `frontend/src/admin/data/adminSession.ts`

### Other components

- **Patient / caregiver**
- **Clinician**
- **Administrator**

## Connections

- Patient / caregiver → Role router: opens app (evidence: `README.md`)
- Clinician → Role router: opens app (evidence: `README.md`)
- Administrator → Role router: opens app (evidence: `frontend/src/app/router.tsx`)
- Role router → Patient workspace: routes patient (evidence: `frontend/src/app/router.tsx`)
- Role router → Doctor workspace: routes doctor (evidence: `frontend/src/app/router.tsx`)
- Role router → Admin workflows: routes admin (evidence: `frontend/src/app/router.tsx`)
- Role router → Account onboarding: routes onboarding (evidence: `frontend/src/app/router.tsx`)
- Role router → Demo auth state: checks session (evidence: `frontend/src/app/router.tsx`)
- Role router → Admin session: checks session (evidence: `frontend/src/app/router.tsx`)
- Account onboarding → Demo auth state: records registration (evidence: `frontend/src/auth/pages/DoctorRegistrationPage.tsx`)
- Admin workflows → Doctor verification: renders review (evidence: `frontend/src/admin/layout/AdminApp.tsx`)
- Doctor verification → Demo auth state: updates doctor status (evidence: `frontend/src/admin/doctor-verification/ApplicationReview.tsx`)
- Patient / caregiver → Patient workspace: provides intake (evidence: `README.md`)
- Patient workspace → Frontend API client: starts conversation (evidence: `frontend/src/patient/layout/PatientApp.tsx`)
- Patient workspace → Frontend API client: loads visit (evidence: `frontend/src/patient/layout/PatientApp.tsx`)
- Frontend API client → FastAPI routes: calls service
- FastAPI routes → Conversation intake: registers routes (evidence: `backend/app/main.py`)
- FastAPI routes → Visit records: registers routes (evidence: `backend/app/main.py`)
- FastAPI routes → Message endpoints: registers routes (evidence: `backend/app/main.py`)
- FastAPI routes → Report endpoints: registers routes (evidence: `backend/app/main.py`)
- Conversation intake → Intake and draft logic: delegates intake (evidence: `backend/app/api/conversations.py`)
- Conversation intake → Persistence helpers: persists records (evidence: `backend/app/api/conversations.py`)
- Message endpoints → Persistence helpers: stores messages (evidence: `backend/app/api/messages.py`)
- Visit records → Persistence helpers: reads and writes (evidence: `backend/app/api/visits.py`)
- Visit records → Intake and draft logic: refreshes draft (evidence: `backend/app/api/visits.py`)
- Report endpoints → Persistence helpers: reads and writes (evidence: `backend/app/api/reports.py`)
- Persistence helpers → SQLite database: uses connection
- Visit records → Visit data contract: validates payload (evidence: `backend/app/api/visits.py`)
- Doctor workspace → Visit review: renders reviews (evidence: `frontend/src/doctor/layout/DoctorApp.tsx`)
- Visit review → Frontend API client: loads saved records (evidence: `frontend/src/doctor/consultation-review/DoctorVisitReviews.tsx`)
- Visit review → Doctor patient data: derives demo reviews (evidence: `frontend/src/doctor/consultation-review/DoctorVisitReviews.tsx`)
- Clinician → Doctor workspace: reviews visits (evidence: `README.md`)
- Doctor workspace → Care plans: renders care plans (evidence: `frontend/src/doctor/layout/DoctorApp.tsx`)
- Doctor workspace → Doctor reports: renders reports (evidence: `frontend/src/doctor/layout/DoctorApp.tsx`)
- Patient / caregiver → Visit records: confirms visit
- Visit records → Report endpoints: creates draft
