# pratikvathare/arogyaconnect architecture

> Architecture diagram of the GitHub repository pratikvathare/arogyaconnect, 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/pratikvathare/arogyaconnect
- Repository: https://github.com/pratikvathare/arogyaconnect

## Overview

ArogyaConnect is a healthcare and hospital-navigation portal: users enter through a routed React application to find and compare hospitals, check symptoms, use an AI assistant, manage accounts, and access appointments. The backend exposes corresponding Express routes, with Supabase for authentication and appointment data, email notifications, and external map-data services for hospital discovery. Source excerpts show these backend service calls, but do not establish how the frontend pages call the API, so those links are omitted.

Main entry points: [`src/App.jsx`](https://github.com/pratikvathare/arogyaconnect/blob/main/src/App.jsx) (Route application), [`server/index.js`](https://github.com/pratikvathare/arogyaconnect/blob/main/server/index.js) (HTTP server), [`server/routes/userRoutes.js`](https://github.com/pratikvathare/arogyaconnect/blob/main/server/routes/userRoutes.js) (User routes), [`server/controllers/authController.js`](https://github.com/pratikvathare/arogyaconnect/blob/main/server/controllers/authController.js) (Account handling)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_app["Route application<br/>[App.jsx]"]
  node_layout["Main layout<br/>[MainLayout.jsx]"]
  node_home["Home<br/>[Home.jsx]"]
  node_authpages["Account pages<br/>[Signup.jsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.jsx]"]
  node_hospitalpages["Hospital listings<br/>[Hospitals.jsx]"]
  node_compare["Hospital comparison"]
  node_symptomspage["Symptom checker<br/>[SymptomChecker.jsx]"]
  node_assistantpage["AI assistant<br/>[AIAssistant.jsx]"]
  node_chatwidget["Chat widget<br/>[AIChatWidget.jsx]"]
end

subgraph group_identity["Accounts"]
  node_useroutes["User routes<br/>[userRoutes.js]"]
  node_authcontroller["Account handling<br/>[authController.js]"]
  node_authmiddleware["Token verification<br/>[auth.js]"]
end

subgraph group_care["Care services"]
  node_server["HTTP server<br/>[index.js]"]
  node_appointmentroutes["Appointment routes"]
  node_appointmentcontroller["Appointment handling"]
  node_chatbotroutes["Chat routes<br/>[chatbotRoutes.js]"]
  node_chatbotcontroller["Chat handling"]
  node_symptomsroutes["Symptom routes<br/>[symptomsRoutes.js]"]
  node_symptomscontroller["Symptom handling"]
  node_llm["LLM service<br/>[llmService.js]"]
end

subgraph group_discovery["Hospital discovery"]
  node_hospitalroutes["Hospital routes<br/>[hospitalRoutes.js]"]
  node_hospitalcontroller["Hospital search"]
end

subgraph group_integrations["External services"]
  node_supabaseclient["Supabase client<br/>[supabaseClient.js]"]
  node_supabase[("Supabase")]
  node_mailer["Mail transport<br/>[mailer.js]"]
  node_email["Email service"]
  node_groq["Groq API"]
  node_mapdata["OpenStreetMap data"]
end

node_visitor(("Portal user"))

node_visitor -->|"opens portal"| node_app
node_app -->|"routes to"| node_home
node_app -->|"routes to"| node_authpages
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_hospitalpages
node_app -->|"routes to"| node_compare
node_app -->|"routes to"| node_symptomspage
node_app -->|"routes to"| node_assistantpage
node_app -->|"renders within"| node_layout
node_layout -->|"uses"| node_chatwidget
node_server -->|"mounts routes"| node_useroutes
node_server -->|"mounts routes"| node_appointmentroutes
node_server -->|"mounts routes"| node_chatbotroutes
node_server -->|"mounts routes"| node_symptomsroutes
node_server -->|"mounts routes"| node_hospitalroutes
node_useroutes -->|"dispatches to"| node_authcontroller
node_useroutes -->|"protects route"| node_authmiddleware
node_appointmentroutes -->|"protects routes"| node_authmiddleware
node_appointmentroutes -->|"dispatches to"| node_appointmentcontroller
node_chatbotroutes -->|"dispatches to"| node_chatbotcontroller
node_symptomsroutes -->|"dispatches to"| node_symptomscontroller
node_hospitalroutes -->|"dispatches to"| node_hospitalcontroller
node_chatbotcontroller -->|"requests response"| node_llm
node_symptomscontroller -->|"uses analysis"| node_llm
node_authmiddleware -->|"verifies token"| node_supabaseclient
node_supabaseclient -.->|"connects to"| node_supabase
node_authcontroller -->|"uses client"| node_supabaseclient
node_authcontroller -->|"sends reset email"| node_mailer
node_appointmentcontroller -->|"reads and writes"| node_supabase
node_appointmentcontroller -->|"sends confirmation"| node_mailer
node_mailer -.->|"delivers email"| node_email
node_llm -->|"requests completions"| node_groq
node_hospitalcontroller -->|"queries facilities"| node_mapdata

click node_app "https://github.com/pratikvathare/arogyaconnect/blob/main/src/App.jsx"
click node_layout "https://github.com/pratikvathare/arogyaconnect/blob/main/src/layouts/MainLayout.jsx"
click node_home "https://github.com/pratikvathare/arogyaconnect/blob/main/src/pages/Home.jsx"
click node_authpages "https://github.com/pratikvathare/arogyaconnect/blob/main/src/pages/Signup.jsx"
click node_dashboard "https://github.com/pratikvathare/arogyaconnect/blob/main/src/pages/Dashboard.jsx"
click node_hospitalpages "https://github.com/pratikvathare/arogyaconnect/blob/main/src/pages/Hospitals.jsx"
click node_compare "https://github.com/pratikvathare/arogyaconnect/blob/main/src/pages/CompareHospitals.jsx"
click node_symptomspage "https://github.com/pratikvathare/arogyaconnect/blob/main/src/pages/SymptomChecker.jsx"
click node_assistantpage "https://github.com/pratikvathare/arogyaconnect/blob/main/src/pages/AIAssistant.jsx"
click node_chatwidget "https://github.com/pratikvathare/arogyaconnect/blob/main/src/components/AIChatWidget.jsx"
click node_server "https://github.com/pratikvathare/arogyaconnect/blob/main/server/index.js"
click node_useroutes "https://github.com/pratikvathare/arogyaconnect/blob/main/server/routes/userRoutes.js"
click node_authcontroller "https://github.com/pratikvathare/arogyaconnect/blob/main/server/controllers/authController.js"
click node_authmiddleware "https://github.com/pratikvathare/arogyaconnect/blob/main/server/middleware/auth.js"
click node_appointmentroutes "https://github.com/pratikvathare/arogyaconnect/blob/main/server/routes/appointmentRoutes.js"
click node_appointmentcontroller "https://github.com/pratikvathare/arogyaconnect/blob/main/server/controllers/appointmentController.js"
click node_chatbotroutes "https://github.com/pratikvathare/arogyaconnect/blob/main/server/routes/chatbotRoutes.js"
click node_chatbotcontroller "https://github.com/pratikvathare/arogyaconnect/blob/main/server/controllers/chatbotController.js"
click node_symptomsroutes "https://github.com/pratikvathare/arogyaconnect/blob/main/server/routes/symptomsRoutes.js"
click node_symptomscontroller "https://github.com/pratikvathare/arogyaconnect/blob/main/server/controllers/symptomsController.js"
click node_hospitalroutes "https://github.com/pratikvathare/arogyaconnect/blob/main/server/routes/hospitalRoutes.js"
click node_hospitalcontroller "https://github.com/pratikvathare/arogyaconnect/blob/main/server/controllers/hospitalController.js"
click node_llm "https://github.com/pratikvathare/arogyaconnect/blob/main/server/services/llmService.js"
click node_supabaseclient "https://github.com/pratikvathare/arogyaconnect/blob/main/server/config/supabaseClient.js"
click node_mailer "https://github.com/pratikvathare/arogyaconnect/blob/main/server/config/mailer.js"

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_layout,node_home,node_authpages,node_dashboard,node_hospitalpages,node_compare,node_symptomspage,node_assistantpage,node_chatwidget,node_visitor toneBlue
class node_useroutes,node_authcontroller,node_authmiddleware toneAmber
class node_server,node_appointmentroutes,node_appointmentcontroller,node_chatbotroutes,node_chatbotcontroller,node_symptomsroutes,node_symptomscontroller,node_llm toneMint
class node_hospitalroutes,node_hospitalcontroller toneRose
class node_supabaseclient,node_supabase,node_mailer,node_email,node_groq,node_mapdata toneIndigo
```

## Components

### Web application

- [Route application](https://github.com/pratikvathare/arogyaconnect/blob/main/src/App.jsx): `src/App.jsx`
- [Main layout](https://github.com/pratikvathare/arogyaconnect/blob/main/src/layouts/MainLayout.jsx): `src/layouts/MainLayout.jsx`
- [Home](https://github.com/pratikvathare/arogyaconnect/blob/main/src/pages/Home.jsx): `src/pages/Home.jsx`
- [Account pages](https://github.com/pratikvathare/arogyaconnect/blob/main/src/pages/Signup.jsx): `src/pages/Signup.jsx`
- [Dashboard](https://github.com/pratikvathare/arogyaconnect/blob/main/src/pages/Dashboard.jsx): `src/pages/Dashboard.jsx`
- [Hospital listings](https://github.com/pratikvathare/arogyaconnect/blob/main/src/pages/Hospitals.jsx): `src/pages/Hospitals.jsx`
- [Hospital comparison](https://github.com/pratikvathare/arogyaconnect/blob/main/src/pages/CompareHospitals.jsx): `src/pages/CompareHospitals.jsx`
- [Symptom checker](https://github.com/pratikvathare/arogyaconnect/blob/main/src/pages/SymptomChecker.jsx): `src/pages/SymptomChecker.jsx`
- [AI assistant](https://github.com/pratikvathare/arogyaconnect/blob/main/src/pages/AIAssistant.jsx): `src/pages/AIAssistant.jsx`
- [Chat widget](https://github.com/pratikvathare/arogyaconnect/blob/main/src/components/AIChatWidget.jsx): `src/components/AIChatWidget.jsx`

### Accounts

- [User routes](https://github.com/pratikvathare/arogyaconnect/blob/main/server/routes/userRoutes.js): `server/routes/userRoutes.js`
- [Account handling](https://github.com/pratikvathare/arogyaconnect/blob/main/server/controllers/authController.js): `server/controllers/authController.js`
- [Token verification](https://github.com/pratikvathare/arogyaconnect/blob/main/server/middleware/auth.js): `server/middleware/auth.js`

### Care services

- [HTTP server](https://github.com/pratikvathare/arogyaconnect/blob/main/server/index.js): `server/index.js`
- [Appointment routes](https://github.com/pratikvathare/arogyaconnect/blob/main/server/routes/appointmentRoutes.js): `server/routes/appointmentRoutes.js`
- [Appointment handling](https://github.com/pratikvathare/arogyaconnect/blob/main/server/controllers/appointmentController.js): `server/controllers/appointmentController.js`
- [Chat routes](https://github.com/pratikvathare/arogyaconnect/blob/main/server/routes/chatbotRoutes.js): `server/routes/chatbotRoutes.js`
- [Chat handling](https://github.com/pratikvathare/arogyaconnect/blob/main/server/controllers/chatbotController.js): `server/controllers/chatbotController.js`
- [Symptom routes](https://github.com/pratikvathare/arogyaconnect/blob/main/server/routes/symptomsRoutes.js): `server/routes/symptomsRoutes.js`
- [Symptom handling](https://github.com/pratikvathare/arogyaconnect/blob/main/server/controllers/symptomsController.js): `server/controllers/symptomsController.js`
- [LLM service](https://github.com/pratikvathare/arogyaconnect/blob/main/server/services/llmService.js): `server/services/llmService.js`

### Hospital discovery

- [Hospital routes](https://github.com/pratikvathare/arogyaconnect/blob/main/server/routes/hospitalRoutes.js): `server/routes/hospitalRoutes.js`
- [Hospital search](https://github.com/pratikvathare/arogyaconnect/blob/main/server/controllers/hospitalController.js): `server/controllers/hospitalController.js`

### External services

- [Supabase client](https://github.com/pratikvathare/arogyaconnect/blob/main/server/config/supabaseClient.js): `server/config/supabaseClient.js`
- **Supabase**
- [Mail transport](https://github.com/pratikvathare/arogyaconnect/blob/main/server/config/mailer.js): `server/config/mailer.js`
- **Email service**
- **Groq API**
- **OpenStreetMap data**

### Other components

- **Portal user**

## Connections

- Portal user → Route application: opens portal
- Route application → Home: routes to (evidence: `src/App.jsx`)
- Route application → Account pages: routes to (evidence: `src/App.jsx`)
- Route application → Dashboard: routes to (evidence: `src/App.jsx`)
- Route application → Hospital listings: routes to (evidence: `src/App.jsx`)
- Route application → Hospital comparison: routes to (evidence: `src/App.jsx`)
- Route application → Symptom checker: routes to (evidence: `src/App.jsx`)
- Route application → AI assistant: routes to (evidence: `src/App.jsx`)
- Route application → Main layout: renders within (evidence: `src/App.jsx`)
- Main layout → Chat widget: uses (evidence: `src/layouts/MainLayout.jsx`)
- HTTP server → User routes: mounts routes (evidence: `server/index.js`)
- HTTP server → Appointment routes: mounts routes (evidence: `server/index.js`)
- HTTP server → Chat routes: mounts routes (evidence: `server/index.js`)
- HTTP server → Symptom routes: mounts routes (evidence: `server/index.js`)
- HTTP server → Hospital routes: mounts routes (evidence: `server/index.js`)
- User routes → Account handling: dispatches to (evidence: `server/routes/userRoutes.js`)
- User routes → Token verification: protects route (evidence: `server/routes/userRoutes.js`)
- Appointment routes → Token verification: protects routes (evidence: `server/routes/appointmentRoutes.js`)
- Appointment routes → Appointment handling: dispatches to (evidence: `server/routes/appointmentRoutes.js`)
- Chat routes → Chat handling: dispatches to (evidence: `server/routes/chatbotRoutes.js`)
- Symptom routes → Symptom handling: dispatches to (evidence: `server/routes/symptomsRoutes.js`)
- Hospital routes → Hospital search: dispatches to (evidence: `server/routes/hospitalRoutes.js`)
- Chat handling → LLM service: requests response (evidence: `server/controllers/chatbotController.js`)
- Symptom handling → LLM service: uses analysis (evidence: `server/controllers/symptomsController.js`)
- Token verification → Supabase client: verifies token (evidence: `server/middleware/auth.js`)
- Supabase client → Supabase: connects to
- Account handling → Supabase client: uses client (evidence: `server/controllers/authController.js`)
- Account handling → Mail transport: sends reset email (evidence: `server/controllers/authController.js`)
- Appointment handling → Supabase: reads and writes (evidence: `server/controllers/appointmentController.js`)
- Appointment handling → Mail transport: sends confirmation (evidence: `server/controllers/appointmentController.js`)
- Mail transport → Email service: delivers email
- LLM service → Groq API: requests completions (evidence: `server/services/llmService.js`)
- Hospital search → OpenStreetMap data: queries facilities (evidence: `server/controllers/hospitalController.js`)
