# covaimetertaxi-byte/covai-meter-taxi-app architecture

> Architecture diagram of the GitHub repository covaimetertaxi-byte/covai-meter-taxi-app, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/covaimetertaxi-byte/covai-meter-taxi-app
- Repository: https://github.com/covaimetertaxi-byte/covai-meter-taxi-app

## Overview

Covai Meter Taxi is an Android driver app for recording metered rides and handling dispatched bookings. Drivers configure their profile, start or resume a meter, track trip location and fare, then complete a ride for local history, receipt generation, and cloud/spreadsheet synchronization. A separate dispatch workflow discovers nearby open trips, supports OTP verification and acceptance, and tracks active bookings. The excerpts show the main activity wiring the repository and ViewModel, and the dispatch service fetching trips through Supabase; unsampled UI and service details limit further call-level links.

Main entry points: [`app/src/main/java/com/covaimetertaxi/driver/ui/TaxiMeterViewModel.kt`](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/ui/TaxiMeterViewModel.kt) (Meter ViewModel), [`app/src/main/java/com/covaimetertaxi/driver/MainActivity.kt`](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/MainActivity.kt) (App entry and UI), [`app/src/main/java/com/covaimetertaxi/driver/network/GoogleSheetsSyncManager.kt`](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/network/GoogleSheetsSyncManager.kt) (Sheets sync), [`app/src/main/java/com/covaimetertaxi/driver/data/TripRepository.kt`](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/data/TripRepository.kt) (Trip repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_driver_app["Driver experience"]
  node_main["App entry and UI<br/>[MainActivity.kt]"]
  node_dispatch_ui["Dispatch screen<br/>[DispatchScreen.kt]"]
  node_meter_vm["Meter ViewModel"]
end

subgraph group_ride_runtime["Ride execution"]
  node_dispatch_service["Trip dispatch"]
  node_meter_service["Meter service"]
  node_location["Location engine<br/>[LocationEngine.kt]"]
end

subgraph group_trip_data["Trip records"]
  node_trip["Trip record<br/>[Trip.kt]"]
  node_repository["Trip repository<br/>[TripRepository.kt]"]
  node_room[("Local trip database<br/>[AppDatabase.kt]")]
end

subgraph group_integrations["Sync and services"]
  node_firebase["Firebase manager<br/>[FirebaseManager.kt]"]
  node_sheets["Sheets sync"]
  node_supabase["Supabase manager<br/>[SupabaseManager.kt]"]
  node_receipt["PDF receipts"]
end

subgraph group_shared["Shared utilities"]
  node_otp["Ride OTP<br/>[RideOtpManager.kt]"]
  node_geocoder["Address lookup<br/>[GeocoderHelper.kt]"]
  node_time["Network time"]
  node_security["Credential obfuscation"]
  node_language["Language manager<br/>[LanguageManager.kt]"]
  node_tts["Voice announcements<br/>[TtsAnnouncer.kt]"]
end

node_driver(("Driver"))
node_sheets_service["Google Sheets"]
node_firebase_service["Firebase"]
node_supabase_service["Supabase"]

node_driver -->|"uses"| node_main
node_main -->|"creates"| node_repository
node_main -->|"creates"| node_meter_vm
node_main -->|"initializes"| node_language
node_main -->|"initializes"| node_time
node_meter_vm -->|"starts trip"| node_meter_service
node_meter_vm -->|"uses"| node_repository
node_meter_vm -->|"syncs profile"| node_sheets
node_meter_vm -->|"resolves address"| node_geocoder
node_meter_vm -->|"uses"| node_tts
node_meter_service -->|"builds trip state"| node_trip
node_dispatch_ui -->|"uses"| node_dispatch_service
node_dispatch_ui -->|"uses"| node_otp
node_dispatch_service -->|"fetches trips"| node_supabase
node_dispatch_service -->|"checks meter status"| node_meter_service
node_repository -.->|"persists trips"| node_room
node_sheets -->|"uploads trips"| node_sheets_service
node_sheets -->|"marks synced"| node_repository
node_firebase -->|"updates driver data"| node_firebase_service
node_supabase -->|"requests trip data"| node_supabase_service
node_receipt -->|"formats receipt"| node_trip
node_otp -.->|"gets IST hour"| node_time
node_sheets -->|"gets sync URL"| node_security

click node_main "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/MainActivity.kt"
click node_dispatch_ui "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/ui/DispatchScreen.kt"
click node_meter_vm "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/ui/TaxiMeterViewModel.kt"
click node_dispatch_service "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/service/TaxiDispatchService.kt"
click node_meter_service "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/service/TaxiMeterService.kt"
click node_location "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/service/LocationEngine.kt"
click node_trip "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/data/Trip.kt"
click node_repository "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/data/TripRepository.kt"
click node_room "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/data/AppDatabase.kt"
click node_firebase "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/network/FirebaseManager.kt"
click node_sheets "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/network/GoogleSheetsSyncManager.kt"
click node_supabase "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/network/SupabaseManager.kt"
click node_receipt "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/util/PdfReceiptGenerator.kt"
click node_otp "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/util/RideOtpManager.kt"
click node_geocoder "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/util/GeocoderHelper.kt"
click node_time "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/util/NetworkTimeHelper.kt"
click node_security "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/util/SecurityObfuscator.kt"
click node_language "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/util/LanguageManager.kt"
click node_tts "https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/util/TtsAnnouncer.kt"

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_main,node_dispatch_ui,node_meter_vm toneBlue
class node_dispatch_service,node_meter_service,node_location toneAmber
class node_trip,node_repository,node_room toneMint
class node_firebase,node_sheets,node_supabase,node_receipt toneRose
class node_otp,node_geocoder,node_time,node_security,node_language,node_tts,node_driver,node_sheets_service,node_firebase_service,node_supabase_service toneIndigo
```

## Components

### Driver experience

- [App entry and UI](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/MainActivity.kt): `app/src/main/java/com/covaimetertaxi/driver/MainActivity.kt`
- [Dispatch screen](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/ui/DispatchScreen.kt): `app/src/main/java/com/covaimetertaxi/driver/ui/DispatchScreen.kt`
- [Meter ViewModel](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/ui/TaxiMeterViewModel.kt): `app/src/main/java/com/covaimetertaxi/driver/ui/TaxiMeterViewModel.kt`

### Ride execution

- [Trip dispatch](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/service/TaxiDispatchService.kt): `app/src/main/java/com/covaimetertaxi/driver/service/TaxiDispatchService.kt`
- [Meter service](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/service/TaxiMeterService.kt): `app/src/main/java/com/covaimetertaxi/driver/service/TaxiMeterService.kt`
- [Location engine](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/service/LocationEngine.kt): `app/src/main/java/com/covaimetertaxi/driver/service/LocationEngine.kt`

### Trip records

- [Trip record](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/data/Trip.kt): `app/src/main/java/com/covaimetertaxi/driver/data/Trip.kt`
- [Trip repository](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/data/TripRepository.kt): `app/src/main/java/com/covaimetertaxi/driver/data/TripRepository.kt`
- [Local trip database](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/data/AppDatabase.kt): `app/src/main/java/com/covaimetertaxi/driver/data/AppDatabase.kt`

### Sync and services

- [Firebase manager](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/network/FirebaseManager.kt): `app/src/main/java/com/covaimetertaxi/driver/network/FirebaseManager.kt`
- [Sheets sync](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/network/GoogleSheetsSyncManager.kt): `app/src/main/java/com/covaimetertaxi/driver/network/GoogleSheetsSyncManager.kt`
- [Supabase manager](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/network/SupabaseManager.kt): `app/src/main/java/com/covaimetertaxi/driver/network/SupabaseManager.kt`
- [PDF receipts](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/util/PdfReceiptGenerator.kt): `app/src/main/java/com/covaimetertaxi/driver/util/PdfReceiptGenerator.kt`

### Shared utilities

- [Ride OTP](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/util/RideOtpManager.kt): `app/src/main/java/com/covaimetertaxi/driver/util/RideOtpManager.kt`
- [Address lookup](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/util/GeocoderHelper.kt): `app/src/main/java/com/covaimetertaxi/driver/util/GeocoderHelper.kt`
- [Network time](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/util/NetworkTimeHelper.kt): `app/src/main/java/com/covaimetertaxi/driver/util/NetworkTimeHelper.kt`
- [Credential obfuscation](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/util/SecurityObfuscator.kt): `app/src/main/java/com/covaimetertaxi/driver/util/SecurityObfuscator.kt`
- [Language manager](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/util/LanguageManager.kt): `app/src/main/java/com/covaimetertaxi/driver/util/LanguageManager.kt`
- [Voice announcements](https://github.com/covaimetertaxi-byte/covai-meter-taxi-app/blob/main/app/src/main/java/com/covaimetertaxi/driver/util/TtsAnnouncer.kt): `app/src/main/java/com/covaimetertaxi/driver/util/TtsAnnouncer.kt`

### Other components

- **Driver**
- **Google Sheets**
- **Firebase**
- **Supabase**

## Connections

- Driver → App entry and UI: uses
- App entry and UI → Trip repository: creates (evidence: `app/src/main/java/com/covaimetertaxi/driver/MainActivity.kt`)
- App entry and UI → Meter ViewModel: creates (evidence: `app/src/main/java/com/covaimetertaxi/driver/MainActivity.kt`)
- App entry and UI → Language manager: initializes (evidence: `app/src/main/java/com/covaimetertaxi/driver/MainActivity.kt`)
- App entry and UI → Network time: initializes (evidence: `app/src/main/java/com/covaimetertaxi/driver/MainActivity.kt`)
- Meter ViewModel → Meter service: starts trip (evidence: `app/src/main/java/com/covaimetertaxi/driver/ui/TaxiMeterViewModel.kt`)
- Meter ViewModel → Trip repository: uses (evidence: `app/src/main/java/com/covaimetertaxi/driver/ui/TaxiMeterViewModel.kt`)
- Meter ViewModel → Sheets sync: syncs profile (evidence: `app/src/main/java/com/covaimetertaxi/driver/ui/TaxiMeterViewModel.kt`)
- Meter ViewModel → Address lookup: resolves address (evidence: `app/src/main/java/com/covaimetertaxi/driver/ui/TaxiMeterViewModel.kt`)
- Meter ViewModel → Voice announcements: uses (evidence: `app/src/main/java/com/covaimetertaxi/driver/ui/TaxiMeterViewModel.kt`)
- Meter service → Trip record: builds trip state (evidence: `app/src/main/java/com/covaimetertaxi/driver/service/TaxiMeterService.kt`)
- Dispatch screen → Trip dispatch: uses (evidence: `app/src/main/java/com/covaimetertaxi/driver/ui/DispatchScreen.kt`)
- Dispatch screen → Ride OTP: uses (evidence: `app/src/main/java/com/covaimetertaxi/driver/ui/DispatchScreen.kt`)
- Trip dispatch → Supabase manager: fetches trips (evidence: `app/src/main/java/com/covaimetertaxi/driver/service/TaxiDispatchService.kt`)
- Trip dispatch → Meter service: checks meter status (evidence: `app/src/main/java/com/covaimetertaxi/driver/service/TaxiDispatchService.kt`)
- Trip repository → Local trip database: persists trips
- Sheets sync → Google Sheets: uploads trips (evidence: `app/src/main/java/com/covaimetertaxi/driver/network/GoogleSheetsSyncManager.kt`)
- Sheets sync → Trip repository: marks synced (evidence: `app/src/main/java/com/covaimetertaxi/driver/network/GoogleSheetsSyncManager.kt`)
- Firebase manager → Firebase: updates driver data (evidence: `app/src/main/java/com/covaimetertaxi/driver/network/FirebaseManager.kt`)
- Supabase manager → Supabase: requests trip data (evidence: `app/src/main/java/com/covaimetertaxi/driver/network/SupabaseManager.kt`)
- PDF receipts → Trip record: formats receipt (evidence: `app/src/main/java/com/covaimetertaxi/driver/util/PdfReceiptGenerator.kt`)
- Ride OTP → Network time: gets IST hour (evidence: `app/src/main/java/com/covaimetertaxi/driver/util/RideOtpManager.kt`)
- Sheets sync → Credential obfuscation: gets sync URL (evidence: `app/src/main/java/com/covaimetertaxi/driver/network/GoogleSheetsSyncManager.kt`)
