# amanxchaubey/delhi-route-optimizer-clean architecture

> Architecture diagram of the GitHub repository amanxchaubey/delhi-route-optimizer-clean, 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/amanxchaubey/delhi-route-optimizer-clean
- Repository: https://github.com/amanxchaubey/delhi-route-optimizer-clean

## Overview

Delhi Route Optimizer is a commuter-facing transit planner with a React interface and Express/MongoDB API. The main journey resolves entered places to nearby metro stations, computes a metro route, then presents timing, fare, crowd and bus-comparison information alongside maps and route details. Separate branches provide route browsing, fares, line exploration, authentication, administration and newsletter subscription. The README documents these capabilities; unsampled subsystem internals and their wiring are represented only where the tree supports a path.

Main entry points: [`delhi-transit-frontend/src/App.jsx`](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/App.jsx) (Planner app), [`delhi-transit-backend/server.js`](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/server.js) (API server), [`delhi-transit-frontend/src/utils/routeSearch.js`](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/utils/routeSearch.js) (Station routing), [`delhi-transit-frontend/src/components/Routes.jsx`](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/components/Routes.jsx) (Route browser)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_planning["Route planning"]
  node_app["Planner app<br/>[App.jsx]"]
  node_route_search["Station routing<br/>[routeSearch.js]"]
  node_metro_data["Metro network data<br/>[metroData.js]"]
  node_place_data["Delhi places<br/>[delhiPlaces.js]"]
  node_hero["Route search form<br/>[Hero.jsx]"]
  node_route_results["Route browser<br/>[Routes.jsx]"]
  node_fare["Fare calculator<br/>[FareCalculator.jsx]"]
end

subgraph group_transit["Transit information"]
  node_live_map["Interactive map<br/>[LiveMap.jsx]"]
  node_static_map["Static metro map<br/>[StaticMap.jsx]"]
  node_lines["Metro line explorer<br/>[MetroLines.jsx]"]
  node_realtime["Realtime panel<br/>[RealTimePanel.jsx]"]
  node_station_info["Crowd and station info<br/>[stationInfo.js]"]
  node_transit_helpers["Transit estimates<br/>[transitHelpers.js]"]
end

subgraph group_accounts["Accounts and admin"]
  node_auth_context["Auth state<br/>[AuthContext.jsx]"]
  node_admin["Admin dashboard<br/>[AdminDashboard.jsx]"]
end

subgraph group_backend["Backend services"]
  node_api_client["Frontend API client<br/>[api.js]"]
  node_server["API server<br/>[server.js]"]
  node_route_api["Route endpoints<br/>[routes.js]"]
  node_route_controller["Route queries<br/>[routeController.js]"]
  node_transit_api["Transit endpoints<br/>[transit.js]"]
  node_auth_api["Auth endpoints<br/>[auth.js]"]
  node_oauth_api["OAuth endpoints<br/>[oauth.js]"]
  node_auth_controller["Credential auth<br/>[authController.js]"]
  node_passport["OAuth strategies<br/>[passport.js]"]
  node_newsletter_api["Newsletter endpoints<br/>[newsletter.js]"]
  node_email_service["Welcome email<br/>[emailService.js]"]
  node_route_store[("Route records<br/>[Route.js]")]
end

node_commuter(("Commuter"))
node_mongo[("MongoDB")]

node_commuter -->|"uses"| node_app
node_app -->|"renders"| node_hero
node_app -->|"resolves and searches"| node_route_search
node_route_search -->|"reads network"| node_metro_data
node_route_search -->|"matches places"| node_place_data
node_app -->|"gets crowd data"| node_station_info
node_app -->|"gets estimates"| node_transit_helpers
node_app -->|"renders routes"| node_route_results
node_app -->|"opens calculator"| node_fare
node_app -->|"shows searched route"| node_live_map
node_app -->|"opens map"| node_static_map
node_app -->|"shows lines"| node_lines
node_app -->|"opens panel"| node_realtime
node_route_results -->|"requests routes"| node_api_client
node_app -->|"uses auth state"| node_auth_context
node_app -->|"shows admin"| node_admin
node_api_client -->|"HTTP requests"| node_server
node_server -->|"mounts"| node_route_api
node_server -->|"mounts"| node_transit_api
node_server -->|"mounts"| node_auth_api
node_server -->|"mounts"| node_oauth_api
node_server -->|"mounts"| node_newsletter_api
node_route_api -->|"dispatches"| node_route_controller
node_route_controller -->|"queries"| node_route_store
node_route_store -->|"persists through"| node_mongo
node_auth_api -->|"dispatches"| node_auth_controller
node_auth_controller -->|"reads and writes users"| node_mongo
node_oauth_api -->|"uses strategies"| node_passport
node_newsletter_api -.->|"sends welcome email"| node_email_service
node_email_service -.->|"emails subscriber"| node_commuter

click node_app "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/App.jsx"
click node_route_search "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/utils/routeSearch.js"
click node_metro_data "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/data/metroData.js"
click node_place_data "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/data/delhiPlaces.js"
click node_hero "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/components/Hero.jsx"
click node_route_results "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/components/Routes.jsx"
click node_fare "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/components/FareCalculator.jsx"
click node_live_map "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/components/LiveMap.jsx"
click node_static_map "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/components/StaticMap.jsx"
click node_lines "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/components/MetroLines.jsx"
click node_realtime "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/components/RealTimePanel.jsx"
click node_station_info "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/utils/stationInfo.js"
click node_transit_helpers "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/utils/transitHelpers.js"
click node_auth_context "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/context/AuthContext.jsx"
click node_admin "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/components/AdminDashboard.jsx"
click node_api_client "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/services/api.js"
click node_server "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/server.js"
click node_route_api "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/routes/routes.js"
click node_route_controller "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/controllers/routeController.js"
click node_transit_api "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/routes/transit.js"
click node_auth_api "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/routes/auth.js"
click node_oauth_api "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/routes/oauth.js"
click node_auth_controller "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/controllers/authController.js"
click node_passport "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/config/passport.js"
click node_newsletter_api "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/routes/newsletter.js"
click node_email_service "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/services/emailService.js"
click node_route_store "https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/models/Route.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_route_search,node_metro_data,node_place_data,node_hero,node_route_results,node_fare toneBlue
class node_live_map,node_static_map,node_lines,node_realtime,node_station_info,node_transit_helpers,node_mongo toneAmber
class node_auth_context,node_admin toneMint
class node_api_client,node_server,node_route_api,node_route_controller,node_transit_api,node_auth_api,node_oauth_api,node_auth_controller,node_passport,node_newsletter_api,node_email_service,node_route_store toneRose
class node_commuter toneIndigo
```

## Components

### Route planning

- [Planner app](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/App.jsx): `delhi-transit-frontend/src/App.jsx`
- [Station routing](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/utils/routeSearch.js): `delhi-transit-frontend/src/utils/routeSearch.js`
- [Metro network data](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/data/metroData.js): `delhi-transit-frontend/src/data/metroData.js`
- [Delhi places](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/data/delhiPlaces.js): `delhi-transit-frontend/src/data/delhiPlaces.js`
- [Route search form](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/components/Hero.jsx): `delhi-transit-frontend/src/components/Hero.jsx`
- [Route browser](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/components/Routes.jsx): `delhi-transit-frontend/src/components/Routes.jsx`
- [Fare calculator](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/components/FareCalculator.jsx): `delhi-transit-frontend/src/components/FareCalculator.jsx`

### Transit information

- [Interactive map](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/components/LiveMap.jsx): `delhi-transit-frontend/src/components/LiveMap.jsx`
- [Static metro map](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/components/StaticMap.jsx): `delhi-transit-frontend/src/components/StaticMap.jsx`
- [Metro line explorer](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/components/MetroLines.jsx): `delhi-transit-frontend/src/components/MetroLines.jsx`
- [Realtime panel](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/components/RealTimePanel.jsx): `delhi-transit-frontend/src/components/RealTimePanel.jsx`
- [Crowd and station info](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/utils/stationInfo.js): `delhi-transit-frontend/src/utils/stationInfo.js`
- [Transit estimates](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/utils/transitHelpers.js): `delhi-transit-frontend/src/utils/transitHelpers.js`

### Accounts and admin

- [Auth state](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/context/AuthContext.jsx): `delhi-transit-frontend/src/context/AuthContext.jsx`
- [Admin dashboard](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/components/AdminDashboard.jsx): `delhi-transit-frontend/src/components/AdminDashboard.jsx`

### Backend services

- [Frontend API client](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-frontend/src/services/api.js): `delhi-transit-frontend/src/services/api.js`
- [API server](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/server.js): `delhi-transit-backend/server.js`
- [Route endpoints](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/routes/routes.js): `delhi-transit-backend/routes/routes.js`
- [Route queries](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/controllers/routeController.js): `delhi-transit-backend/controllers/routeController.js`
- [Transit endpoints](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/routes/transit.js): `delhi-transit-backend/routes/transit.js`
- [Auth endpoints](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/routes/auth.js): `delhi-transit-backend/routes/auth.js`
- [OAuth endpoints](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/routes/oauth.js): `delhi-transit-backend/routes/oauth.js`
- [Credential auth](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/controllers/authController.js): `delhi-transit-backend/controllers/authController.js`
- [OAuth strategies](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/config/passport.js): `delhi-transit-backend/config/passport.js`
- [Newsletter endpoints](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/routes/newsletter.js): `delhi-transit-backend/routes/newsletter.js`
- [Welcome email](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/services/emailService.js): `delhi-transit-backend/services/emailService.js`
- [Route records](https://github.com/amanxchaubey/delhi-route-optimizer-clean/blob/main/delhi-transit-backend/models/Route.js): `delhi-transit-backend/models/Route.js`

### Other components

- **Commuter**
- **MongoDB**

## Connections

- Commuter → Planner app: uses
- Planner app → Route search form: renders
- Planner app → Station routing: resolves and searches
- Station routing → Metro network data: reads network
- Station routing → Delhi places: matches places
- Planner app → Crowd and station info: gets crowd data
- Planner app → Transit estimates: gets estimates
- Planner app → Route browser: renders routes
- Planner app → Fare calculator: opens calculator
- Planner app → Interactive map: shows searched route
- Planner app → Static metro map: opens map
- Planner app → Metro line explorer: shows lines
- Planner app → Realtime panel: opens panel
- Route browser → Frontend API client: requests routes
- Planner app → Auth state: uses auth state
- Planner app → Admin dashboard: shows admin
- Frontend API client → API server: HTTP requests
- API server → Route endpoints: mounts
- API server → Transit endpoints: mounts
- API server → Auth endpoints: mounts
- API server → OAuth endpoints: mounts
- API server → Newsletter endpoints: mounts
- Route endpoints → Route queries: dispatches
- Route queries → Route records: queries
- Route records → MongoDB: persists through
- Auth endpoints → Credential auth: dispatches
- Credential auth → MongoDB: reads and writes users
- OAuth endpoints → OAuth strategies: uses strategies
- Newsletter endpoints → Welcome email: sends welcome email
- Welcome email → Commuter: emails subscriber
