# manasbhaumik-web/mediclinic-enterprise architecture

> Architecture diagram of the GitHub repository manasbhaumik-web/mediclinic-enterprise, 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/manasbhaumik-web/mediclinic-enterprise
- Repository: https://github.com/manasbhaumik-web/mediclinic-enterprise

## Overview

Mediclinic Enterprise is a clinic operations application. Staff enter through role-based login; the App coordinates clinical work, including doctor queue and consultation, prescription dispensing, and billing, while supporting registration, appointments, administration, and reporting. The sampled sync and context code shows Supabase-backed patient, visit, appointment, inventory, and transaction data; payment-intent handlers integrate with Stripe. Several modules are present in the tree but their wiring was not sampled, so their internal relationships are not inferred.

Main entry points: [`src/App.tsx`](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/App.tsx) (Application router), [`src/context/FinancialContext.tsx`](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/context/FinancialContext.tsx) (Financial service), [`src/lib/supabase.ts`](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/lib/supabase.ts) (Supabase), [`src/hooks/useSupabaseSync.ts`](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/hooks/useSupabaseSync.ts) (Clinic data sync)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Entry and orchestration"]
  node_app["Application router<br/>[App.tsx]"]
  node_auth["Authentication<br/>[AuthContext.tsx]"]
  node_landing["Clinic landing"]
  node_login["Staff login<br/>[LoginModule.tsx]"]
end

subgraph group_care["Clinical operations"]
  node_registration["Patient registration"]
  node_triage["Triage<br/>[TriageModule.tsx]"]
  node_appointments["Appointments"]
  node_doctor["Doctor workflow"]
  node_consultation["Consultation"]
  node_clinical_search["Clinical search<br/>[vectorDb.ts]"]
  node_dispensary["Dispensary"]
end

subgraph group_operations["Clinic operations"]
  node_billing["Billing desk<br/>[BillingDesk.tsx]"]
  node_revenue["Revenue cycle"]
  node_reports["Reports and analytics"]
  node_admin["Administration<br/>[AdminModule.tsx]"]
end

subgraph group_data["Data and integrations"]
  node_inventory_ctx["Inventory service"]
  node_financial_ctx["Financial service"]
  node_sync["Clinic data sync<br/>[useSupabaseSync.ts]"]
  node_supabase[("Supabase<br/>[supabase.ts]")]
  node_stripe_server["Payment intent API<br/>[server.js]"]
  node_stripe_function["Payment intent function<br/>[index.ts]"]
end

node_staff(("Clinic staff"))
node_stripe["Stripe"]

node_staff -->|"opens clinic"| node_landing
node_staff -->|"opens portal"| node_login
node_landing -->|"navigates"| node_app
node_login -->|"signs in"| node_app
node_app -->|"checks session"| node_auth
node_app -->|"loads clinic data"| node_sync
node_app -->|"records billing"| node_financial_ctx
node_app -->|"routes doctor view"| node_doctor
node_app -->|"routes registration"| node_registration
node_app -->|"routes triage"| node_triage
node_app -->|"routes appointments"| node_appointments
node_app -->|"routes dispensary"| node_dispensary
node_app -->|"routes billing"| node_billing
node_app -->|"routes reports"| node_reports
node_app -->|"routes admin"| node_admin
node_doctor -->|"opens consultation"| node_consultation
node_consultation -.->|"searches diagnoses"| node_clinical_search
node_app -->|"provides inventory"| node_inventory_ctx
node_app -->|"provides finances"| node_financial_ctx
node_sync -->|"reads and writes clinic records"| node_supabase
node_inventory_ctx -->|"reads and writes stock"| node_supabase
node_financial_ctx -->|"reads and writes transactions"| node_supabase
node_clinical_search -.->|"queries embeddings"| node_supabase
node_dispensary -->|"reports dispense completion"| node_app
node_app -->|"updates visit status"| node_sync
node_billing -->|"reports settlement"| node_app
node_stripe_server -->|"creates payment intent"| node_stripe
node_stripe_function -->|"creates payment intent"| node_stripe
node_revenue -.->|"manages claims"| node_financial_ctx

click node_app "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/App.tsx"
click node_auth "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/context/AuthContext.tsx"
click node_landing "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/ClinicLandingPage.tsx"
click node_login "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/LoginModule.tsx"
click node_registration "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/PatientRegistrationModule.tsx"
click node_triage "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/TriageModule.tsx"
click node_appointments "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/AppointmentCalendarModule.tsx"
click node_doctor "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/DoctorDashboardModule.tsx"
click node_consultation "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/ConsultationRoom.tsx"
click node_clinical_search "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/lib/vectorDb.ts"
click node_dispensary "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/DispensaryDashboard.tsx"
click node_billing "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/BillingDesk.tsx"
click node_revenue "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/RevenueCycleHub.tsx"
click node_reports "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/ReportsAnalyticsModule.tsx"
click node_admin "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/AdminModule.tsx"
click node_inventory_ctx "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/context/InventoryContext.tsx"
click node_financial_ctx "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/context/FinancialContext.tsx"
click node_sync "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/hooks/useSupabaseSync.ts"
click node_supabase "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/lib/supabase.ts"
click node_stripe_server "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/server.js"
click node_stripe_function "https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/supabase/functions/payment-intent/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_landing,node_login toneBlue
class node_registration,node_triage,node_appointments,node_doctor,node_consultation,node_clinical_search,node_dispensary toneAmber
class node_billing,node_revenue,node_reports,node_admin toneMint
class node_inventory_ctx,node_financial_ctx,node_sync,node_supabase,node_stripe_server,node_stripe_function toneRose
class node_staff,node_stripe toneIndigo
```

## Components

### Entry and orchestration

- [Application router](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/App.tsx): `src/App.tsx`
- [Authentication](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/context/AuthContext.tsx): `src/context/AuthContext.tsx`
- [Clinic landing](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/ClinicLandingPage.tsx): `src/components/ClinicLandingPage.tsx`
- [Staff login](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/LoginModule.tsx): `src/components/LoginModule.tsx`

### Clinical operations

- [Patient registration](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/PatientRegistrationModule.tsx): `src/components/PatientRegistrationModule.tsx`
- [Triage](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/TriageModule.tsx): `src/components/TriageModule.tsx`
- [Appointments](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/AppointmentCalendarModule.tsx): `src/components/AppointmentCalendarModule.tsx`
- [Doctor workflow](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/DoctorDashboardModule.tsx): `src/components/DoctorDashboardModule.tsx`
- [Consultation](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/ConsultationRoom.tsx): `src/components/ConsultationRoom.tsx`
- [Clinical search](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/lib/vectorDb.ts): `src/lib/vectorDb.ts`
- [Dispensary](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/DispensaryDashboard.tsx): `src/components/DispensaryDashboard.tsx`

### Clinic operations

- [Billing desk](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/BillingDesk.tsx): `src/components/BillingDesk.tsx`
- [Revenue cycle](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/RevenueCycleHub.tsx): `src/components/RevenueCycleHub.tsx`
- [Reports and analytics](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/ReportsAnalyticsModule.tsx): `src/components/ReportsAnalyticsModule.tsx`
- [Administration](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/components/AdminModule.tsx): `src/components/AdminModule.tsx`

### Data and integrations

- [Inventory service](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/context/InventoryContext.tsx): `src/context/InventoryContext.tsx`
- [Financial service](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/context/FinancialContext.tsx): `src/context/FinancialContext.tsx`
- [Clinic data sync](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/hooks/useSupabaseSync.ts): `src/hooks/useSupabaseSync.ts`
- [Supabase](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/src/lib/supabase.ts): `src/lib/supabase.ts`
- [Payment intent API](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/server.js): `server.js`
- [Payment intent function](https://github.com/manasbhaumik-web/mediclinic-enterprise/blob/Main/supabase/functions/payment-intent/index.ts): `supabase/functions/payment-intent/index.ts`

### Other components

- **Clinic staff**
- **Stripe**

## Connections

- Clinic staff → Clinic landing: opens clinic
- Clinic staff → Staff login: opens portal
- Clinic landing → Application router: navigates
- Staff login → Application router: signs in
- Application router → Authentication: checks session
- Application router → Clinic data sync: loads clinic data
- Application router → Financial service: records billing
- Application router → Doctor workflow: routes doctor view
- Application router → Patient registration: routes registration
- Application router → Triage: routes triage
- Application router → Appointments: routes appointments
- Application router → Dispensary: routes dispensary
- Application router → Billing desk: routes billing
- Application router → Reports and analytics: routes reports
- Application router → Administration: routes admin
- Doctor workflow → Consultation: opens consultation
- Consultation → Clinical search: searches diagnoses
- Application router → Inventory service: provides inventory
- Application router → Financial service: provides finances
- Clinic data sync → Supabase: reads and writes clinic records
- Inventory service → Supabase: reads and writes stock
- Financial service → Supabase: reads and writes transactions
- Clinical search → Supabase: queries embeddings
- Dispensary → Application router: reports dispense completion
- Application router → Clinic data sync: updates visit status
- Billing desk → Application router: reports settlement
- Payment intent API → Stripe: creates payment intent
- Payment intent function → Stripe: creates payment intent
- Revenue cycle → Financial service: manages claims
