# wahidmubarrat/emercare architecture

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

- Interactive diagram: https://gitdiagram.com/wahidmubarrat/emercare
- Repository: https://github.com/wahidmubarrat/emercare

## Overview

EmerCare connects unauthenticated emergency seekers and service accounts to nearby hospitals, blood donors, and ambulance services. The user workflow runs from location-aware discovery or account registration through direct contact and service-availability management; a separate assistant enriches chat responses with nearby facility and donor information. The graph follows documented routes and sampled call relationships. Several controller and frontend implementations were not sampled, so their internal wiring is shown only where supported by the tree, README, or excerpts.

Main entry points: [`backend/src/index.js`](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/index.js) (HTTP application), [`frontend/src/App.jsx`](https://github.com/wahidmubarrat/emercare/blob/main/frontend/src/App.jsx) (App routing), [`frontend/src/services/api.js`](https://github.com/wahidmubarrat/emercare/blob/main/frontend/src/services/api.js) (API client), [`backend/src/controllers/ambulanceController.js`](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/controllers/ambulanceController.js) (Ambulance workflows)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web experience"]
  node_app["App routing<br/>[App.jsx]"]
  node_discovery["Service discovery"]
  node_registration["Account registration"]
  node_profiles["Profiles and availability"]
  node_hospitalops["Hospital service management"]
  node_chatui["Assistant chat<br/>[ChatBot.jsx]"]
  node_location["Location capture<br/>[useGeolocation.js]"]
  node_http["API client<br/>[api.js]"]
end

subgraph group_api["API and workflows"]
  node_server["HTTP application<br/>[index.js]"]
  node_donorroutes["Donor routes<br/>[donorRoutes.js]"]
  node_hospitalroutes["Hospital routes<br/>[hospitalRoutes.js]"]
  node_ambulanceroutes["Ambulance routes<br/>[ambulanceRoutes.js]"]
  node_vehicleroutes["Vehicle routes"]
  node_serviceroutes["Hospital service routes"]
  node_airoutes["Assistant route<br/>[aiRoutes.js]"]
  node_donorlogic["Donor workflows<br/>[donorController.js]"]
  node_hospitalogic["Hospital workflows"]
  node_ambulancelogic["Ambulance workflows"]
  node_vehiclelogic["Vehicle workflows"]
  node_servicelogic["Hospital service workflows"]
  node_ailogic["Nearby AI context<br/>[aiController.js]"]
end

subgraph group_records["Healthcare records"]
  node_donorstore[("Donor records<br/>[Donor.js]")]
  node_hospitalstore[("Hospital records<br/>[Hospital.js]")]
  node_ambulancestore[("Ambulance records<br/>[Ambulance.js]")]
  node_vehiclestore[("Vehicle records")]
  node_servicestore[("Service profiles")]
  node_dbconnect["MongoDB connection<br/>[database.js]"]
end

subgraph group_integrations["External services"]
  node_cloudinary[("Cloudinary storage")]
  node_geocoder["Geocoding service"]
  node_openrouter["OpenRouter AI"]
end

node_seeker(("Emergency seeker"))
node_account(("Service account"))

node_seeker -->|"opens"| node_app
node_account -->|"opens"| node_app
node_app -->|"routes to"| node_discovery
node_app -->|"routes to"| node_registration
node_app -->|"routes to"| node_profiles
node_app -->|"routes to"| node_hospitalops
node_app -->|"renders"| node_chatui
node_discovery -->|"captures location"| node_location
node_discovery -->|"requests results"| node_http
node_registration -->|"captures location"| node_location
node_registration -->|"submits account"| node_http
node_profiles -->|"updates profile"| node_http
node_hospitalops -->|"manages services"| node_http
node_chatui -->|"sends chat"| node_http
node_http -->|"HTTP requests"| node_server
node_server -->|"connects"| node_dbconnect
node_server -->|"mounts"| node_donorroutes
node_server -->|"mounts"| node_hospitalroutes
node_server -->|"mounts"| node_ambulanceroutes
node_server -->|"mounts"| node_vehicleroutes
node_server -->|"mounts"| node_serviceroutes
node_server -->|"mounts"| node_airoutes
node_donorroutes -->|"dispatches"| node_donorlogic
node_hospitalroutes -->|"dispatches"| node_hospitalogic
node_ambulanceroutes -->|"dispatches"| node_ambulancelogic
node_vehicleroutes -->|"dispatches"| node_vehiclelogic
node_serviceroutes -->|"dispatches"| node_servicelogic
node_airoutes -->|"dispatches"| node_ailogic
node_donorlogic -->|"queries and updates"| node_donorstore
node_hospitalogic -->|"queries and updates"| node_hospitalstore
node_ambulancelogic -->|"queries and updates"| node_ambulancestore
node_ambulancelogic -->|"loads vehicles"| node_vehiclestore
node_vehiclelogic -->|"queries and updates"| node_vehiclestore
node_servicelogic -->|"queries and updates"| node_servicestore
node_ailogic -->|"finds nearby"| node_hospitalstore
node_ailogic -->|"finds nearby"| node_donorstore
node_ailogic -->|"loads facility context"| node_servicestore
node_ailogic -->|"requests completion"| node_openrouter
node_donorlogic -.->|"uploads images"| node_cloudinary
node_ambulancelogic -.->|"uploads images"| node_cloudinary
node_donorlogic -.->|"resolves location"| node_geocoder
node_ambulancelogic -.->|"resolves location"| node_geocoder

click node_app "https://github.com/wahidmubarrat/emercare/blob/main/frontend/src/App.jsx"
click node_discovery "https://github.com/wahidmubarrat/emercare/tree/main/frontend/src/pages"
click node_registration "https://github.com/wahidmubarrat/emercare/tree/main/frontend/src/pages"
click node_profiles "https://github.com/wahidmubarrat/emercare/tree/main/frontend/src/pages"
click node_hospitalops "https://github.com/wahidmubarrat/emercare/blob/main/frontend/src/pages/ManageHospitalServices.jsx"
click node_chatui "https://github.com/wahidmubarrat/emercare/blob/main/frontend/src/components/ChatBot.jsx"
click node_location "https://github.com/wahidmubarrat/emercare/blob/main/frontend/src/hooks/useGeolocation.js"
click node_http "https://github.com/wahidmubarrat/emercare/blob/main/frontend/src/services/api.js"
click node_server "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/index.js"
click node_donorroutes "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/routes/donorRoutes.js"
click node_hospitalroutes "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/routes/hospitalRoutes.js"
click node_ambulanceroutes "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/routes/ambulanceRoutes.js"
click node_vehicleroutes "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/routes/ambulanceVehicleRoutes.js"
click node_serviceroutes "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/routes/hospitalServiceRoutes.js"
click node_airoutes "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/routes/aiRoutes.js"
click node_donorlogic "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/controllers/donorController.js"
click node_hospitalogic "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/controllers/hospitalController.js"
click node_ambulancelogic "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/controllers/ambulanceController.js"
click node_vehiclelogic "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/controllers/ambulanceVehicleController.js"
click node_servicelogic "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/controllers/hospitalServiceController.js"
click node_ailogic "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/controllers/aiController.js"
click node_donorstore "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/models/Donor.js"
click node_hospitalstore "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/models/Hospital.js"
click node_ambulancestore "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/models/Ambulance.js"
click node_vehiclestore "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/models/AmbulanceVehicle.js"
click node_servicestore "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/models/HospitalServiceProfile.js"
click node_dbconnect "https://github.com/wahidmubarrat/emercare/blob/main/backend/src/config/database.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_discovery,node_registration,node_profiles,node_hospitalops,node_chatui,node_location,node_http toneBlue
class node_server,node_donorroutes,node_hospitalroutes,node_ambulanceroutes,node_vehicleroutes,node_serviceroutes,node_airoutes,node_donorlogic,node_hospitalogic,node_ambulancelogic,node_vehiclelogic,node_servicelogic,node_ailogic toneAmber
class node_donorstore,node_hospitalstore,node_ambulancestore,node_vehiclestore,node_servicestore,node_dbconnect toneMint
class node_cloudinary,node_geocoder,node_openrouter toneRose
class node_seeker,node_account toneIndigo
```

## Components

### Web experience

- [App routing](https://github.com/wahidmubarrat/emercare/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Service discovery](https://github.com/wahidmubarrat/emercare/tree/main/frontend/src/pages): `frontend/src/pages`
- [Account registration](https://github.com/wahidmubarrat/emercare/tree/main/frontend/src/pages): `frontend/src/pages`
- [Profiles and availability](https://github.com/wahidmubarrat/emercare/tree/main/frontend/src/pages): `frontend/src/pages`
- [Hospital service management](https://github.com/wahidmubarrat/emercare/blob/main/frontend/src/pages/ManageHospitalServices.jsx): `frontend/src/pages/ManageHospitalServices.jsx`
- [Assistant chat](https://github.com/wahidmubarrat/emercare/blob/main/frontend/src/components/ChatBot.jsx): `frontend/src/components/ChatBot.jsx`
- [Location capture](https://github.com/wahidmubarrat/emercare/blob/main/frontend/src/hooks/useGeolocation.js): `frontend/src/hooks/useGeolocation.js`
- [API client](https://github.com/wahidmubarrat/emercare/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`

### API and workflows

- [HTTP application](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/index.js): `backend/src/index.js`
- [Donor routes](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/routes/donorRoutes.js): `backend/src/routes/donorRoutes.js`
- [Hospital routes](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/routes/hospitalRoutes.js): `backend/src/routes/hospitalRoutes.js`
- [Ambulance routes](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/routes/ambulanceRoutes.js): `backend/src/routes/ambulanceRoutes.js`
- [Vehicle routes](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/routes/ambulanceVehicleRoutes.js): `backend/src/routes/ambulanceVehicleRoutes.js`
- [Hospital service routes](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/routes/hospitalServiceRoutes.js): `backend/src/routes/hospitalServiceRoutes.js`
- [Assistant route](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/routes/aiRoutes.js): `backend/src/routes/aiRoutes.js`
- [Donor workflows](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/controllers/donorController.js): `backend/src/controllers/donorController.js`
- [Hospital workflows](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/controllers/hospitalController.js): `backend/src/controllers/hospitalController.js`
- [Ambulance workflows](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/controllers/ambulanceController.js): `backend/src/controllers/ambulanceController.js`
- [Vehicle workflows](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/controllers/ambulanceVehicleController.js): `backend/src/controllers/ambulanceVehicleController.js`
- [Hospital service workflows](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/controllers/hospitalServiceController.js): `backend/src/controllers/hospitalServiceController.js`
- [Nearby AI context](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/controllers/aiController.js): `backend/src/controllers/aiController.js`

### Healthcare records

- [Donor records](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/models/Donor.js): `backend/src/models/Donor.js`
- [Hospital records](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/models/Hospital.js): `backend/src/models/Hospital.js`
- [Ambulance records](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/models/Ambulance.js): `backend/src/models/Ambulance.js`
- [Vehicle records](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/models/AmbulanceVehicle.js): `backend/src/models/AmbulanceVehicle.js`
- [Service profiles](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/models/HospitalServiceProfile.js): `backend/src/models/HospitalServiceProfile.js`
- [MongoDB connection](https://github.com/wahidmubarrat/emercare/blob/main/backend/src/config/database.js): `backend/src/config/database.js`

### External services

- **Cloudinary storage**
- **Geocoding service**
- **OpenRouter AI**

### Other components

- **Emergency seeker**
- **Service account**

## Connections

- Emergency seeker → App routing: opens
- Service account → App routing: opens
- App routing → Service discovery: routes to
- App routing → Account registration: routes to
- App routing → Profiles and availability: routes to
- App routing → Hospital service management: routes to
- App routing → Assistant chat: renders
- Service discovery → Location capture: captures location
- Service discovery → API client: requests results
- Account registration → Location capture: captures location
- Account registration → API client: submits account
- Profiles and availability → API client: updates profile
- Hospital service management → API client: manages services
- Assistant chat → API client: sends chat
- API client → HTTP application: HTTP requests
- HTTP application → MongoDB connection: connects
- HTTP application → Donor routes: mounts
- HTTP application → Hospital routes: mounts
- HTTP application → Ambulance routes: mounts
- HTTP application → Vehicle routes: mounts
- HTTP application → Hospital service routes: mounts
- HTTP application → Assistant route: mounts
- Donor routes → Donor workflows: dispatches
- Hospital routes → Hospital workflows: dispatches
- Ambulance routes → Ambulance workflows: dispatches
- Vehicle routes → Vehicle workflows: dispatches
- Hospital service routes → Hospital service workflows: dispatches
- Assistant route → Nearby AI context: dispatches
- Donor workflows → Donor records: queries and updates
- Hospital workflows → Hospital records: queries and updates
- Ambulance workflows → Ambulance records: queries and updates
- Ambulance workflows → Vehicle records: loads vehicles
- Vehicle workflows → Vehicle records: queries and updates
- Hospital service workflows → Service profiles: queries and updates
- Nearby AI context → Hospital records: finds nearby
- Nearby AI context → Donor records: finds nearby
- Nearby AI context → Service profiles: loads facility context
- Nearby AI context → OpenRouter AI: requests completion
- Donor workflows → Cloudinary storage: uploads images
- Ambulance workflows → Cloudinary storage: uploads images
- Donor workflows → Geocoding service: resolves location
- Ambulance workflows → Geocoding service: resolves location
