# edemekong/city-cab architecture

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

- Interactive diagram: https://gitdiagram.com/edemekong/city-cab
- Repository: https://github.com/edemekong/city-cab

## Overview

City Cab is a Flutter ride-hailing app backed by Firebase. Its documented user journey includes phone authentication and account setup, map-based location search, ride selection and confirmation, then ride tracking and completion; the README also describes driver roles and ride boarding, loading, and cancellation. The README outlines UI → state → repositories/services → models, but the Dart implementation was not sampled, so some feature wiring and external-service details remain uncertain.

Main entry points: [`lib/repositories/ride_repository.dart`](https://github.com/edemekong/city-cab/blob/develop-provider/lib/repositories/ride_repository.dart) (Ride repository), [`lib/pages/map/map_state.dart`](https://github.com/edemekong/city-cab/blob/develop-provider/lib/pages/map/map_state.dart) (Map state), [`lib/main.dart`](https://github.com/edemekong/city-cab/blob/develop-provider/lib/main.dart) (Flutter entry), [`lib/repositories/user_repository.dart`](https://github.com/edemekong/city-cab/blob/develop-provider/lib/repositories/user_repository.dart) (User repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App and access"]
  node_entry["Flutter entry<br/>[main.dart]"]
  node_authui["Authentication UI"]
  node_phone["Phone and OTP"]
  node_account["Account setup"]
end

subgraph group_ride["Ride experience"]
  node_home["Home screen<br/>[home.dart]"]
  node_mapui["Map experience"]
  node_location["Location search"]
  node_ridechoice["Ride selection<br/>[select_ride.dart]"]
  node_confirmation["Ride confirmation<br/>[confirm_ride.dart]"]
  node_tripstatus["Trip status UI"]
end

subgraph group_domain["State and models"]
  node_authstate["Authentication state<br/>[auth_state.dart]"]
  node_mapstate["Map state<br/>[map_state.dart]"]
  node_models["Ride and user models"]
end

subgraph group_services["Repositories and services"]
  node_userrepo["User repository"]
  node_riderepo["Ride repository"]
  node_authsvc["Authentication service<br/>[auth.dart]"]
  node_mapsvc["Map services<br/>[map_services.dart]"]
end

node_rider(("Rider or driver"))
node_firebase[("Firebase")]
node_maps["Google Maps"]

node_rider -->|"opens app"| node_entry
node_entry -->|"starts UI"| node_authui
node_authui -->|"requests sign-in"| node_phone
node_phone -->|"updates state"| node_authstate
node_authstate -->|"requests auth"| node_authsvc
node_authsvc -->|"phone auth"| node_firebase
node_account -->|"sets up account"| node_userrepo
node_userrepo -->|"reads and writes"| node_firebase
node_entry -->|"starts UI"| node_home
node_home -->|"shows map"| node_mapui
node_mapui -->|"updates state"| node_mapstate
node_location -->|"updates locations"| node_mapstate
node_mapstate -->|"requests map operations"| node_mapsvc
node_mapsvc -->|"uses map services"| node_maps
node_ridechoice -->|"updates selection"| node_mapstate
node_confirmation -->|"submits ride"| node_riderepo
node_tripstatus -->|"loads ride state"| node_riderepo
node_riderepo -->|"ride operations"| node_firebase
node_userrepo -->|"uses models"| node_models
node_riderepo -->|"uses models"| node_models

click node_entry "https://github.com/edemekong/city-cab/blob/develop-provider/lib/main.dart"
click node_authui "https://github.com/edemekong/city-cab/tree/develop-provider/lib/pages/auth"
click node_phone "https://github.com/edemekong/city-cab/tree/develop-provider/lib/pages/auth/widgets"
click node_account "https://github.com/edemekong/city-cab/blob/develop-provider/lib/pages/auth/widgets/set_up_account.dart"
click node_home "https://github.com/edemekong/city-cab/blob/develop-provider/lib/pages/home/home.dart"
click node_mapui "https://github.com/edemekong/city-cab/tree/develop-provider/lib/pages/map"
click node_location "https://github.com/edemekong/city-cab/blob/develop-provider/lib/pages/map/widgets/search_map_address.dart"
click node_ridechoice "https://github.com/edemekong/city-cab/blob/develop-provider/lib/pages/map/widgets/select_ride.dart"
click node_confirmation "https://github.com/edemekong/city-cab/blob/develop-provider/lib/pages/map/widgets/confirm_ride.dart"
click node_tripstatus "https://github.com/edemekong/city-cab/tree/develop-provider/lib/pages/map/widgets"
click node_authstate "https://github.com/edemekong/city-cab/blob/develop-provider/lib/pages/auth/auth_state.dart"
click node_mapstate "https://github.com/edemekong/city-cab/blob/develop-provider/lib/pages/map/map_state.dart"
click node_models "https://github.com/edemekong/city-cab/tree/develop-provider/lib/models"
click node_userrepo "https://github.com/edemekong/city-cab/blob/develop-provider/lib/repositories/user_repository.dart"
click node_riderepo "https://github.com/edemekong/city-cab/blob/develop-provider/lib/repositories/ride_repository.dart"
click node_authsvc "https://github.com/edemekong/city-cab/blob/develop-provider/lib/services/auth.dart"
click node_mapsvc "https://github.com/edemekong/city-cab/blob/develop-provider/lib/services/map_services.dart"

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_entry,node_authui,node_phone,node_account toneBlue
class node_home,node_mapui,node_location,node_ridechoice,node_confirmation,node_tripstatus,node_firebase toneAmber
class node_authstate,node_mapstate,node_models toneMint
class node_userrepo,node_riderepo,node_authsvc,node_mapsvc toneRose
class node_rider,node_maps toneIndigo
```

## Components

### App and access

- [Flutter entry](https://github.com/edemekong/city-cab/blob/develop-provider/lib/main.dart): `lib/main.dart`
- [Authentication UI](https://github.com/edemekong/city-cab/tree/develop-provider/lib/pages/auth): `lib/pages/auth`
- [Phone and OTP](https://github.com/edemekong/city-cab/tree/develop-provider/lib/pages/auth/widgets): `lib/pages/auth/widgets`
- [Account setup](https://github.com/edemekong/city-cab/blob/develop-provider/lib/pages/auth/widgets/set_up_account.dart): `lib/pages/auth/widgets/set_up_account.dart`

### Ride experience

- [Home screen](https://github.com/edemekong/city-cab/blob/develop-provider/lib/pages/home/home.dart): `lib/pages/home/home.dart`
- [Map experience](https://github.com/edemekong/city-cab/tree/develop-provider/lib/pages/map): `lib/pages/map`
- [Location search](https://github.com/edemekong/city-cab/blob/develop-provider/lib/pages/map/widgets/search_map_address.dart): `lib/pages/map/widgets/search_map_address.dart`
- [Ride selection](https://github.com/edemekong/city-cab/blob/develop-provider/lib/pages/map/widgets/select_ride.dart): `lib/pages/map/widgets/select_ride.dart`
- [Ride confirmation](https://github.com/edemekong/city-cab/blob/develop-provider/lib/pages/map/widgets/confirm_ride.dart): `lib/pages/map/widgets/confirm_ride.dart`
- [Trip status UI](https://github.com/edemekong/city-cab/tree/develop-provider/lib/pages/map/widgets): `lib/pages/map/widgets`

### State and models

- [Authentication state](https://github.com/edemekong/city-cab/blob/develop-provider/lib/pages/auth/auth_state.dart): `lib/pages/auth/auth_state.dart`
- [Map state](https://github.com/edemekong/city-cab/blob/develop-provider/lib/pages/map/map_state.dart): `lib/pages/map/map_state.dart`
- [Ride and user models](https://github.com/edemekong/city-cab/tree/develop-provider/lib/models): `lib/models`

### Repositories and services

- [User repository](https://github.com/edemekong/city-cab/blob/develop-provider/lib/repositories/user_repository.dart): `lib/repositories/user_repository.dart`
- [Ride repository](https://github.com/edemekong/city-cab/blob/develop-provider/lib/repositories/ride_repository.dart): `lib/repositories/ride_repository.dart`
- [Authentication service](https://github.com/edemekong/city-cab/blob/develop-provider/lib/services/auth.dart): `lib/services/auth.dart`
- [Map services](https://github.com/edemekong/city-cab/blob/develop-provider/lib/services/map_services.dart): `lib/services/map_services.dart`

### Other components

- **Rider or driver**
- **Firebase**
- **Google Maps**

## Connections

- Rider or driver → Flutter entry: opens app
- Flutter entry → Authentication UI: starts UI
- Authentication UI → Phone and OTP: requests sign-in
- Phone and OTP → Authentication state: updates state
- Authentication state → Authentication service: requests auth
- Authentication service → Firebase: phone auth
- Account setup → User repository: sets up account
- User repository → Firebase: reads and writes
- Flutter entry → Home screen: starts UI
- Home screen → Map experience: shows map
- Map experience → Map state: updates state
- Location search → Map state: updates locations
- Map state → Map services: requests map operations
- Map services → Google Maps: uses map services
- Ride selection → Map state: updates selection
- Ride confirmation → Ride repository: submits ride
- Trip status UI → Ride repository: loads ride state
- Ride repository → Firebase: ride operations
- User repository → Ride and user models: uses models
- Ride repository → Ride and user models: uses models
