# suryakiran602/road-rescue architecture

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

## Overview

RoadRescue is implemented here as a roadside-assistance web app: users authenticate, submit a located service request, mechanics manage jobs and availability, and users can pay for completed service. The README also describes accident detection, emergency alerts, hospitals and ambulances, but the supplied tree and sampled implementation do not establish those capabilities; they are not represented as working subsystems. Edges reflect the sampled frontend calls and backend route ownership; unsampled mechanics behavior is limited to documented UI/API scope.

Main entry points: [`backend/server.js`](https://github.com/suryakiran602/road-rescue/blob/main/backend/server.js) (Express server), [`backend/routes/payment.js`](https://github.com/suryakiran602/road-rescue/blob/main/backend/routes/payment.js) (Payments), [`frontend/js/app.js`](https://github.com/suryakiran602/road-rescue/blob/main/frontend/js/app.js) (Web app), [`backend/routes/serviceRequest.js`](https://github.com/suryakiran602/road-rescue/blob/main/backend/routes/serviceRequest.js) (Service requests)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_frontend["Web app<br/>[app.js]"]
end

subgraph group_api["API services"]
  node_server["Express server<br/>[server.js]"]
  node_auth_route["Authentication<br/>[auth.js]"]
  node_auth_mw["JWT authorization<br/>[auth.js]"]
  node_service_route["Service requests<br/>[serviceRequest.js]"]
  node_mechanic_route["Mechanic jobs<br/>[mechanic.js]"]
  node_payment_route["Payments<br/>[payment.js]"]
end

subgraph group_data["Persistence"]
  node_user_model[("User records<br/>[user.js]")]
  node_mechanic_model[("Mechanic profiles<br/>[mechanic.js]")]
  node_request_model[("Service records<br/>[ServiceRequest.js]")]
  node_payment_model[("Payment records<br/>[Payment.js]")]
end

subgraph group_integrations["External services"]
  node_mongodb[("MongoDB")]
  node_razorpay["Razorpay"]
  node_maps["Google Maps"]
end

node_user(("Roadside user"))
node_mechanic_actor(("Mechanic"))

node_user -->|"uses"| node_frontend
node_mechanic_actor -->|"uses"| node_frontend
node_frontend -->|"HTTP API"| node_server
node_server -->|"mounts auth"| node_auth_route
node_server -->|"mounts service"| node_service_route
node_server -->|"mounts mechanics"| node_mechanic_route
node_server -->|"mounts payments"| node_payment_route
node_auth_route -->|"reads/writes"| node_user_model
node_auth_route -->|"creates profile"| node_mechanic_model
node_service_route -->|"checks token"| node_auth_mw
node_mechanic_route -->|"checks token"| node_auth_mw
node_payment_route -->|"checks token"| node_auth_mw
node_service_route -->|"reads/writes"| node_request_model
node_service_route -->|"finds/updates"| node_mechanic_model
node_payment_route -->|"reads/writes"| node_payment_model
node_payment_route -->|"updates completion"| node_request_model
node_server -->|"connects"| node_mongodb
node_frontend -->|"opens checkout"| node_razorpay
node_payment_route -->|"creates order"| node_razorpay
node_frontend -.->|"renders location"| node_maps

click node_frontend "https://github.com/suryakiran602/road-rescue/blob/main/frontend/js/app.js"
click node_server "https://github.com/suryakiran602/road-rescue/blob/main/backend/server.js"
click node_auth_route "https://github.com/suryakiran602/road-rescue/blob/main/backend/routes/auth.js"
click node_auth_mw "https://github.com/suryakiran602/road-rescue/blob/main/backend/middleware/auth.js"
click node_service_route "https://github.com/suryakiran602/road-rescue/blob/main/backend/routes/serviceRequest.js"
click node_mechanic_route "https://github.com/suryakiran602/road-rescue/blob/main/backend/routes/mechanic.js"
click node_payment_route "https://github.com/suryakiran602/road-rescue/blob/main/backend/routes/payment.js"
click node_user_model "https://github.com/suryakiran602/road-rescue/blob/main/backend/models/user.js"
click node_mechanic_model "https://github.com/suryakiran602/road-rescue/blob/main/backend/models/mechanic.js"
click node_request_model "https://github.com/suryakiran602/road-rescue/blob/main/backend/models/ServiceRequest.js"
click node_payment_model "https://github.com/suryakiran602/road-rescue/blob/main/backend/models/Payment.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_frontend,node_user toneBlue
class node_server,node_auth_route,node_auth_mw,node_service_route,node_mechanic_route,node_payment_route toneAmber
class node_user_model,node_mechanic_model,node_request_model,node_payment_model toneMint
class node_mongodb,node_razorpay,node_maps toneRose
class node_mechanic_actor toneIndigo
```

## Components

### Web experience

- [Web app](https://github.com/suryakiran602/road-rescue/blob/main/frontend/js/app.js): `frontend/js/app.js`

### API services

- [Express server](https://github.com/suryakiran602/road-rescue/blob/main/backend/server.js): `backend/server.js`
- [Authentication](https://github.com/suryakiran602/road-rescue/blob/main/backend/routes/auth.js): `backend/routes/auth.js`
- [JWT authorization](https://github.com/suryakiran602/road-rescue/blob/main/backend/middleware/auth.js): `backend/middleware/auth.js`
- [Service requests](https://github.com/suryakiran602/road-rescue/blob/main/backend/routes/serviceRequest.js): `backend/routes/serviceRequest.js`
- [Mechanic jobs](https://github.com/suryakiran602/road-rescue/blob/main/backend/routes/mechanic.js): `backend/routes/mechanic.js`
- [Payments](https://github.com/suryakiran602/road-rescue/blob/main/backend/routes/payment.js): `backend/routes/payment.js`

### Persistence

- [User records](https://github.com/suryakiran602/road-rescue/blob/main/backend/models/user.js): `backend/models/user.js`
- [Mechanic profiles](https://github.com/suryakiran602/road-rescue/blob/main/backend/models/mechanic.js): `backend/models/mechanic.js`
- [Service records](https://github.com/suryakiran602/road-rescue/blob/main/backend/models/ServiceRequest.js): `backend/models/ServiceRequest.js`
- [Payment records](https://github.com/suryakiran602/road-rescue/blob/main/backend/models/Payment.js): `backend/models/Payment.js`

### External services

- **MongoDB**
- **Razorpay**
- **Google Maps**

### Other components

- **Roadside user**
- **Mechanic**

## Connections

- Roadside user → Web app: uses
- Mechanic → Web app: uses
- Web app → Express server: HTTP API
- Express server → Authentication: mounts auth
- Express server → Service requests: mounts service
- Express server → Mechanic jobs: mounts mechanics
- Express server → Payments: mounts payments
- Authentication → User records: reads/writes
- Authentication → Mechanic profiles: creates profile
- Service requests → JWT authorization: checks token
- Mechanic jobs → JWT authorization: checks token
- Payments → JWT authorization: checks token
- Service requests → Service records: reads/writes
- Service requests → Mechanic profiles: finds/updates
- Payments → Payment records: reads/writes
- Payments → Service records: updates completion
- Express server → MongoDB: connects
- Web app → Razorpay: opens checkout
- Payments → Razorpay: creates order
- Web app → Google Maps: renders location
