# ojekab4u/ecoride-backend architecture

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

## Overview

EcoRide is a REST API for matching passengers with drivers and managing the ride lifecycle. Drivers publish rides; passengers search and book; drivers handle booking decisions and ride status/location updates. Authentication and role checks protect role-specific workflows, with wallet/payment, ratings, notifications, corporate management, and platform administration as supporting capabilities. The graph follows the sampled application wiring and ride, booking, and admin examples; several other branches are included from the README and tree, but their internal calls were not sampled.

Main entry points: [`app.js`](https://github.com/ojekab4u/ecoride-backend/blob/main/app.js) (Express API), [`src/config/database.js`](https://github.com/ojekab4u/ecoride-backend/blob/main/src/config/database.js) (PostgreSQL data), [`src/routes/auth.routes.js`](https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/auth.routes.js) (Auth routes), [`src/controllers/auth.controller.js`](https://github.com/ojekab4u/ecoride-backend/blob/main/src/controllers/auth.controller.js) (Auth controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["API entry"]
  node_app["Express API<br/>[app.js]"]
  node_auth_routes["Auth routes<br/>[auth.routes.js]"]
  node_database[("PostgreSQL data<br/>[database.js]")]
end

subgraph group_identity["Identity and profiles"]
  node_auth_controller["Auth controller<br/>[auth.controller.js]"]
  node_auth_service["Auth service<br/>[auth.service.js]"]
  node_profile_routes["Profile routes"]
end

subgraph group_rides["Ride lifecycle"]
  node_ride_routes["Ride routes<br/>[ride.routes.js]"]
  node_ride_controller["Ride controller<br/>[ride.controller.js]"]
  node_ride_service["Ride service<br/>[ride.service.js]"]
  node_booking_routes["Booking routes<br/>[booking.routes.js]"]
  node_booking_controller["Booking controller"]
  node_booking_service["Booking service<br/>[booking.service.js]"]
end

subgraph group_money["Payments and engagement"]
  node_payment_routes["Payment routes<br/>[payment.routes.js]"]
  node_wallet_routes["Wallet routes<br/>[wallet.routes.js]"]
  node_ratings_routes["Ratings routes<br/>[rating.routes.js]"]
  node_notifications_routes["Notification routes"]
end

subgraph group_operations["Platform operations"]
  node_corporate_routes["Corporate routes"]
  node_admin_routes["Admin routes<br/>[admin.routes.js]"]
  node_admin_controller["Admin controller"]
  node_admin_service["Admin service<br/>[admin.service.js]"]
end

node_passengers(("Passengers"))
node_drivers(("Drivers"))
node_corporates(("Corporate admins"))
node_platform_admins(("Platform admins"))

node_passengers -->|"send requests"| node_app
node_drivers -->|"send requests"| node_app
node_corporates -->|"send requests"| node_app
node_platform_admins -->|"send requests"| node_app
node_app -->|"mounts routes"| node_auth_routes
node_app -->|"mounts routes"| node_ride_routes
node_app -->|"mounts routes"| node_booking_routes
node_app -->|"mounts routes"| node_payment_routes
node_app -->|"mounts routes"| node_wallet_routes
node_app -->|"mounts routes"| node_ratings_routes
node_app -->|"mounts routes"| node_notifications_routes
node_app -->|"mounts routes"| node_profile_routes
node_app -->|"mounts routes"| node_corporate_routes
node_app -->|"mounts routes"| node_admin_routes
node_app -->|"connects"| node_database
node_auth_routes -->|"dispatches"| node_auth_controller
node_auth_controller -->|"calls"| node_auth_service
node_ride_routes -->|"dispatches"| node_ride_controller
node_ride_controller -->|"calls"| node_ride_service
node_booking_routes -->|"dispatches"| node_booking_controller
node_booking_controller -->|"calls"| node_booking_service
node_admin_routes -->|"dispatches"| node_admin_controller
node_admin_controller -->|"calls"| node_admin_service
node_auth_service -->|"reads and writes"| node_database
node_ride_service -->|"reads and writes"| node_database
node_booking_service -->|"reads and writes"| node_database
node_admin_service -->|"reads and writes"| node_database

click node_app "https://github.com/ojekab4u/ecoride-backend/blob/main/app.js"
click node_auth_routes "https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/auth.routes.js"
click node_auth_controller "https://github.com/ojekab4u/ecoride-backend/blob/main/src/controllers/auth.controller.js"
click node_auth_service "https://github.com/ojekab4u/ecoride-backend/blob/main/src/services/auth.service.js"
click node_profile_routes "https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/passenger.routes.js"
click node_ride_routes "https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/ride.routes.js"
click node_ride_controller "https://github.com/ojekab4u/ecoride-backend/blob/main/src/controllers/ride.controller.js"
click node_ride_service "https://github.com/ojekab4u/ecoride-backend/blob/main/src/services/ride.service.js"
click node_booking_routes "https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/booking.routes.js"
click node_booking_controller "https://github.com/ojekab4u/ecoride-backend/blob/main/src/controllers/booking.controller.js"
click node_booking_service "https://github.com/ojekab4u/ecoride-backend/blob/main/src/services/booking.service.js"
click node_payment_routes "https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/payment.routes.js"
click node_wallet_routes "https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/wallet.routes.js"
click node_ratings_routes "https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/rating.routes.js"
click node_notifications_routes "https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/notification.routes.js"
click node_corporate_routes "https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/corporate.routes.js"
click node_admin_routes "https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/admin.routes.js"
click node_admin_controller "https://github.com/ojekab4u/ecoride-backend/blob/main/src/controllers/admin.controller.js"
click node_admin_service "https://github.com/ojekab4u/ecoride-backend/blob/main/src/services/admin.service.js"
click node_database "https://github.com/ojekab4u/ecoride-backend/blob/main/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_auth_routes,node_database toneBlue
class node_auth_controller,node_auth_service,node_profile_routes toneAmber
class node_ride_routes,node_ride_controller,node_ride_service,node_booking_routes,node_booking_controller,node_booking_service toneMint
class node_payment_routes,node_wallet_routes,node_ratings_routes,node_notifications_routes toneRose
class node_corporate_routes,node_admin_routes,node_admin_controller,node_admin_service,node_passengers,node_drivers,node_corporates,node_platform_admins toneIndigo
```

## Components

### API entry

- [Express API](https://github.com/ojekab4u/ecoride-backend/blob/main/app.js): `app.js`
- [Auth routes](https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/auth.routes.js): `src/routes/auth.routes.js`
- [PostgreSQL data](https://github.com/ojekab4u/ecoride-backend/blob/main/src/config/database.js): `src/config/database.js`

### Identity and profiles

- [Auth controller](https://github.com/ojekab4u/ecoride-backend/blob/main/src/controllers/auth.controller.js): `src/controllers/auth.controller.js`
- [Auth service](https://github.com/ojekab4u/ecoride-backend/blob/main/src/services/auth.service.js): `src/services/auth.service.js`
- [Profile routes](https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/passenger.routes.js): `src/routes/passenger.routes.js`

### Ride lifecycle

- [Ride routes](https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/ride.routes.js): `src/routes/ride.routes.js`
- [Ride controller](https://github.com/ojekab4u/ecoride-backend/blob/main/src/controllers/ride.controller.js): `src/controllers/ride.controller.js`
- [Ride service](https://github.com/ojekab4u/ecoride-backend/blob/main/src/services/ride.service.js): `src/services/ride.service.js`
- [Booking routes](https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/booking.routes.js): `src/routes/booking.routes.js`
- [Booking controller](https://github.com/ojekab4u/ecoride-backend/blob/main/src/controllers/booking.controller.js): `src/controllers/booking.controller.js`
- [Booking service](https://github.com/ojekab4u/ecoride-backend/blob/main/src/services/booking.service.js): `src/services/booking.service.js`

### Payments and engagement

- [Payment routes](https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/payment.routes.js): `src/routes/payment.routes.js`
- [Wallet routes](https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/wallet.routes.js): `src/routes/wallet.routes.js`
- [Ratings routes](https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/rating.routes.js): `src/routes/rating.routes.js`
- [Notification routes](https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/notification.routes.js): `src/routes/notification.routes.js`

### Platform operations

- [Corporate routes](https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/corporate.routes.js): `src/routes/corporate.routes.js`
- [Admin routes](https://github.com/ojekab4u/ecoride-backend/blob/main/src/routes/admin.routes.js): `src/routes/admin.routes.js`
- [Admin controller](https://github.com/ojekab4u/ecoride-backend/blob/main/src/controllers/admin.controller.js): `src/controllers/admin.controller.js`
- [Admin service](https://github.com/ojekab4u/ecoride-backend/blob/main/src/services/admin.service.js): `src/services/admin.service.js`

### Other components

- **Passengers**
- **Drivers**
- **Corporate admins**
- **Platform admins**

## Connections

- Passengers → Express API: send requests
- Drivers → Express API: send requests
- Corporate admins → Express API: send requests
- Platform admins → Express API: send requests
- Express API → Auth routes: mounts routes
- Express API → Ride routes: mounts routes
- Express API → Booking routes: mounts routes
- Express API → Payment routes: mounts routes
- Express API → Wallet routes: mounts routes
- Express API → Ratings routes: mounts routes
- Express API → Notification routes: mounts routes
- Express API → Profile routes: mounts routes
- Express API → Corporate routes: mounts routes
- Express API → Admin routes: mounts routes
- Express API → PostgreSQL data: connects
- Auth routes → Auth controller: dispatches
- Auth controller → Auth service: calls
- Ride routes → Ride controller: dispatches
- Ride controller → Ride service: calls
- Booking routes → Booking controller: dispatches
- Booking controller → Booking service: calls
- Admin routes → Admin controller: dispatches
- Admin controller → Admin service: calls
- Auth service → PostgreSQL data: reads and writes
- Ride service → PostgreSQL data: reads and writes
- Booking service → PostgreSQL data: reads and writes
- Admin service → PostgreSQL data: reads and writes
