# joko108/uber-s01-w03 architecture

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

- Interactive diagram: https://gitdiagram.com/joko108/uber-s01-w03
- Repository: https://github.com/joko108/uber-s01-w03

## Overview

This is an Express API for managing drivers and rides. An admin sends HTTP requests; the routers apply authorization and route-specific validation before dispatching handlers. Driver handlers manage driver records, while ride creation first looks up its driver and then stores a ride with a snapshot of the driver and vehicle details. Both domains use an in-memory database. The README is empty, so the map follows the source tree and supplied excerpts; some handler-to-repository links are inferred from the visible examples and module structure.

Main entry points: [`src/drivers/routers/drivers.router.ts`](https://github.com/joko108/uber-s01-w03/blob/main/src/drivers/routers/drivers.router.ts) (Driver routes), [`src/rides/routers/rides.router.ts`](https://github.com/joko108/uber-s01-w03/blob/main/src/rides/routers/rides.router.ts) (Ride routes), [`src/setup-app.ts`](https://github.com/joko108/uber-s01-w03/blob/main/src/setup-app.ts) (App setup), [`src/rides/routers/handlers`](https://github.com/joko108/uber-s01-w03/tree/main/src/rides/routers/handlers) (Ride handlers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["HTTP entry"]
  node_server["Server startup<br/>[index.ts]"]
  node_appsetup["App setup<br/>[setup-app.ts]"]
end

subgraph group_drivers["Driver management"]
  node_driverrouter["Driver routes<br/>[drivers.router.ts]"]
  node_drivervalidation["Driver validation"]
  node_driverhandlers["Driver handlers"]
  node_driverrepo["Driver repository"]
end

subgraph group_rides["Ride management"]
  node_riderouter["Ride routes<br/>[rides.router.ts]"]
  node_ridevalidation["Ride validation"]
  node_ridehandlers["Ride handlers"]
  node_riderepo["Ride repository"]
end

subgraph group_shared["Shared infrastructure"]
  node_driverauth["Admin guard"]
  node_validationresult["Validation result"]
  node_idvalidation["ID validation"]
  node_database[("In-memory database<br/>[in-memory.db.ts]")]
end

node_admin(("Admin client"))

node_admin -->|"sends requests"| node_driverrouter
node_admin -->|"sends requests"| node_riderouter
node_server -->|"configures app"| node_appsetup
node_appsetup -->|"mounts routes"| node_driverrouter
node_appsetup -->|"mounts routes"| node_riderouter
node_driverrouter -->|"applies guard"| node_driverauth
node_driverrouter -->|"validates input"| node_drivervalidation
node_driverrouter -->|"validates IDs"| node_idvalidation
node_driverrouter -->|"checks validation"| node_validationresult
node_driverrouter -->|"dispatches"| node_driverhandlers
node_driverhandlers -->|"manages drivers"| node_driverrepo
node_riderouter -->|"applies guard"| node_driverauth
node_riderouter -->|"validates input"| node_ridevalidation
node_riderouter -->|"validates IDs"| node_idvalidation
node_riderouter -->|"checks validation"| node_validationresult
node_riderouter -->|"dispatches"| node_ridehandlers
node_ridehandlers -->|"looks up driver"| node_driverrepo
node_ridehandlers -->|"stores ride"| node_riderepo
node_driverrepo -->|"reads and writes"| node_database
node_riderepo -->|"reads and writes"| node_database

click node_server "https://github.com/joko108/uber-s01-w03/blob/main/src/index.ts"
click node_appsetup "https://github.com/joko108/uber-s01-w03/blob/main/src/setup-app.ts"
click node_driverrouter "https://github.com/joko108/uber-s01-w03/blob/main/src/drivers/routers/drivers.router.ts"
click node_driverauth "https://github.com/joko108/uber-s01-w03/blob/main/src/auth/middlewares/super-admin.guard.middleware.ts"
click node_drivervalidation "https://github.com/joko108/uber-s01-w03/blob/main/src/drivers/validation/driver.input-dto.validation-middlewares.ts"
click node_driverhandlers "https://github.com/joko108/uber-s01-w03/tree/main/src/drivers/routers/handlers"
click node_driverrepo "https://github.com/joko108/uber-s01-w03/blob/main/src/drivers/repositories/drivers.repository.ts"
click node_riderouter "https://github.com/joko108/uber-s01-w03/blob/main/src/rides/routers/rides.router.ts"
click node_ridevalidation "https://github.com/joko108/uber-s01-w03/blob/main/src/rides/validation/ride.input-dto.validation-middlewares.ts"
click node_ridehandlers "https://github.com/joko108/uber-s01-w03/tree/main/src/rides/routers/handlers"
click node_riderepo "https://github.com/joko108/uber-s01-w03/blob/main/src/rides/repository/rides.repository.ts"
click node_validationresult "https://github.com/joko108/uber-s01-w03/blob/main/src/core/middlewares/validation/input-validation-result.middleware.ts"
click node_idvalidation "https://github.com/joko108/uber-s01-w03/blob/main/src/core/middlewares/validation/params-id.validation.middleware.ts"
click node_database "https://github.com/joko108/uber-s01-w03/blob/main/src/db/in-memory.db.ts"

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_server,node_appsetup,node_admin toneBlue
class node_driverrouter,node_drivervalidation,node_driverhandlers,node_driverrepo toneAmber
class node_riderouter,node_ridevalidation,node_ridehandlers,node_riderepo toneMint
class node_driverauth,node_validationresult,node_idvalidation,node_database toneRose
```

## Components

### HTTP entry

- [Server startup](https://github.com/joko108/uber-s01-w03/blob/main/src/index.ts): `src/index.ts`
- [App setup](https://github.com/joko108/uber-s01-w03/blob/main/src/setup-app.ts): `src/setup-app.ts`

### Driver management

- [Driver routes](https://github.com/joko108/uber-s01-w03/blob/main/src/drivers/routers/drivers.router.ts): `src/drivers/routers/drivers.router.ts`
- [Driver validation](https://github.com/joko108/uber-s01-w03/blob/main/src/drivers/validation/driver.input-dto.validation-middlewares.ts): `src/drivers/validation/driver.input-dto.validation-middlewares.ts`
- [Driver handlers](https://github.com/joko108/uber-s01-w03/tree/main/src/drivers/routers/handlers): `src/drivers/routers/handlers`
- [Driver repository](https://github.com/joko108/uber-s01-w03/blob/main/src/drivers/repositories/drivers.repository.ts): `src/drivers/repositories/drivers.repository.ts`

### Ride management

- [Ride routes](https://github.com/joko108/uber-s01-w03/blob/main/src/rides/routers/rides.router.ts): `src/rides/routers/rides.router.ts`
- [Ride validation](https://github.com/joko108/uber-s01-w03/blob/main/src/rides/validation/ride.input-dto.validation-middlewares.ts): `src/rides/validation/ride.input-dto.validation-middlewares.ts`
- [Ride handlers](https://github.com/joko108/uber-s01-w03/tree/main/src/rides/routers/handlers): `src/rides/routers/handlers`
- [Ride repository](https://github.com/joko108/uber-s01-w03/blob/main/src/rides/repository/rides.repository.ts): `src/rides/repository/rides.repository.ts`

### Shared infrastructure

- [Admin guard](https://github.com/joko108/uber-s01-w03/blob/main/src/auth/middlewares/super-admin.guard.middleware.ts): `src/auth/middlewares/super-admin.guard.middleware.ts`
- [Validation result](https://github.com/joko108/uber-s01-w03/blob/main/src/core/middlewares/validation/input-validation-result.middleware.ts): `src/core/middlewares/validation/input-validation-result.middleware.ts`
- [ID validation](https://github.com/joko108/uber-s01-w03/blob/main/src/core/middlewares/validation/params-id.validation.middleware.ts): `src/core/middlewares/validation/params-id.validation.middleware.ts`
- [In-memory database](https://github.com/joko108/uber-s01-w03/blob/main/src/db/in-memory.db.ts): `src/db/in-memory.db.ts`

### Other components

- **Admin client**

## Connections

- Admin client → Driver routes: sends requests
- Admin client → Ride routes: sends requests
- Server startup → App setup: configures app
- App setup → Driver routes: mounts routes
- App setup → Ride routes: mounts routes
- Driver routes → Admin guard: applies guard
- Driver routes → Driver validation: validates input
- Driver routes → ID validation: validates IDs
- Driver routes → Validation result: checks validation
- Driver routes → Driver handlers: dispatches
- Driver handlers → Driver repository: manages drivers
- Ride routes → Admin guard: applies guard
- Ride routes → Ride validation: validates input
- Ride routes → ID validation: validates IDs
- Ride routes → Validation result: checks validation
- Ride routes → Ride handlers: dispatches
- Ride handlers → Driver repository: looks up driver
- Ride handlers → Ride repository: stores ride
- Driver repository → In-memory database: reads and writes
- Ride repository → In-memory database: reads and writes
