# pablonortiz/vehicle-manager architecture

> Architecture diagram of the GitHub repository pablonortiz/vehicle-manager, 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/pablonortiz/vehicle-manager
- Repository: https://github.com/pablonortiz/vehicle-manager

## Overview

Vehicle Manager is a cross-platform fleet-management app. A user works through Flutter screens and Riverpod state providers to manage vehicles and their related records; repositories persist data locally and synchronize with Supabase. Separate capabilities cover fuel and expenses, fleet reporting, OCR-assisted capture, notifications, and PDF export. The README documents these capabilities and the tree identifies their modules, but the sampled source does not include the Dart runtime wiring, so uncertain call relationships are omitted; arrows show only documented or clearly indicated interactions.

Main entry points: [`lib/presentation/screens`](https://github.com/pablonortiz/vehicle-manager/tree/master/lib/presentation/screens) (Fleet screens), [`lib/presentation/providers`](https://github.com/pablonortiz/vehicle-manager/tree/master/lib/presentation/providers) (State providers), [`lib/data/services/sync_service.dart`](https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/services/sync_service.dart) (Offline sync), [`lib/data/database/database.dart`](https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/database/database.dart) (SQLite cache)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_presentation["User experience"]
  node_app["Flutter app<br/>[main.dart]"]
  node_screens["Fleet screens"]
  node_providers["State providers"]
end

subgraph group_domain["Fleet records"]
  node_vehicles["Vehicle records"]
  node_related["Related records"]
  node_fuel["Fuel and expenses"]
  node_history["Change history"]
end

subgraph group_data["Persistence and sync"]
  node_localdb[("SQLite cache<br/>[database.dart]")]
  node_sync["Offline sync<br/>[sync_service.dart]"]
end

subgraph group_services["Supporting capabilities"]
  node_photos["Photo storage"]
  node_ocr["OCR capture<br/>[ocr_service.dart]"]
  node_reports["PDF export<br/>[pdf_service.dart]"]
  node_fleetreports["Fleet reports"]
  node_fuelstats["Fuel analytics<br/>[fuel_stats.dart]"]
  node_notifications["Notifications"]
end

node_user(("Fleet manager"))
node_supabase[("Supabase")]
node_cloudinary[("Cloudinary")]
node_printing["Share and print"]

node_user -->|"opens"| node_app
node_app -->|"routes to"| node_screens
node_screens -->|"reads and updates"| node_providers
node_providers -->|"requests vehicle data"| node_vehicles
node_providers -->|"requests records"| node_related
node_providers -->|"requests fuel data"| node_fuel
node_vehicles -->|"reads and writes"| node_localdb
node_related -->|"reads and writes"| node_localdb
node_fuel -->|"reads and writes"| node_localdb
node_sync -->|"syncs data"| node_supabase
node_sync -->|"syncs cache"| node_localdb
node_vehicles -->|"syncable data"| node_sync
node_related -->|"syncable data"| node_sync
node_photos -->|"uploads images"| node_cloudinary
node_screens -->|"captures receipts"| node_ocr
node_screens -->|"exports vehicle PDF"| node_reports
node_screens -->|"exports fleet PDF"| node_fleetreports
node_reports -->|"shares or prints"| node_printing
node_fuel -->|"provides fuel data"| node_fuelstats
node_screens -.->|"uses reminders"| node_notifications

click node_app "https://github.com/pablonortiz/vehicle-manager/blob/master/lib/main.dart"
click node_screens "https://github.com/pablonortiz/vehicle-manager/tree/master/lib/presentation/screens"
click node_providers "https://github.com/pablonortiz/vehicle-manager/tree/master/lib/presentation/providers"
click node_vehicles "https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/repositories/vehicle_repository.dart"
click node_related "https://github.com/pablonortiz/vehicle-manager/tree/master/lib/data/repositories"
click node_fuel "https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/repositories/fuel_charge_repository.dart"
click node_history "https://github.com/pablonortiz/vehicle-manager/blob/master/lib/domain/models/vehicle_history.dart"
click node_localdb "https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/database/database.dart"
click node_sync "https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/services/sync_service.dart"
click node_photos "https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/services/cloudinary_service.dart"
click node_ocr "https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/services/ocr_service.dart"
click node_reports "https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/services/pdf_service.dart"
click node_fleetreports "https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/services/fleet_report_pdf.dart"
click node_fuelstats "https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/services/fuel_stats.dart"
click node_notifications "https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/services/notification_service.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_app,node_screens,node_providers toneBlue
class node_vehicles,node_related,node_fuel,node_history,node_supabase,node_cloudinary toneAmber
class node_localdb,node_sync toneMint
class node_photos,node_ocr,node_reports,node_fleetreports,node_fuelstats,node_notifications toneRose
class node_user,node_printing toneIndigo
```

## Components

### User experience

- [Flutter app](https://github.com/pablonortiz/vehicle-manager/blob/master/lib/main.dart): `lib/main.dart`
- [Fleet screens](https://github.com/pablonortiz/vehicle-manager/tree/master/lib/presentation/screens): `lib/presentation/screens`
- [State providers](https://github.com/pablonortiz/vehicle-manager/tree/master/lib/presentation/providers): `lib/presentation/providers`

### Fleet records

- [Vehicle records](https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/repositories/vehicle_repository.dart): `lib/data/repositories/vehicle_repository.dart`
- [Related records](https://github.com/pablonortiz/vehicle-manager/tree/master/lib/data/repositories): `lib/data/repositories`
- [Fuel and expenses](https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/repositories/fuel_charge_repository.dart): `lib/data/repositories/fuel_charge_repository.dart`
- [Change history](https://github.com/pablonortiz/vehicle-manager/blob/master/lib/domain/models/vehicle_history.dart): `lib/domain/models/vehicle_history.dart`

### Persistence and sync

- [SQLite cache](https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/database/database.dart): `lib/data/database/database.dart`
- [Offline sync](https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/services/sync_service.dart): `lib/data/services/sync_service.dart`

### Supporting capabilities

- [Photo storage](https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/services/cloudinary_service.dart): `lib/data/services/cloudinary_service.dart`
- [OCR capture](https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/services/ocr_service.dart): `lib/data/services/ocr_service.dart`
- [PDF export](https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/services/pdf_service.dart): `lib/data/services/pdf_service.dart`
- [Fleet reports](https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/services/fleet_report_pdf.dart): `lib/data/services/fleet_report_pdf.dart`
- [Fuel analytics](https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/services/fuel_stats.dart): `lib/data/services/fuel_stats.dart`
- [Notifications](https://github.com/pablonortiz/vehicle-manager/blob/master/lib/data/services/notification_service.dart): `lib/data/services/notification_service.dart`

### Other components

- **Fleet manager**
- **Supabase**
- **Cloudinary**
- **Share and print**

## Connections

- Fleet manager → Flutter app: opens
- Flutter app → Fleet screens: routes to
- Fleet screens → State providers: reads and updates
- State providers → Vehicle records: requests vehicle data
- State providers → Related records: requests records
- State providers → Fuel and expenses: requests fuel data
- Vehicle records → SQLite cache: reads and writes
- Related records → SQLite cache: reads and writes
- Fuel and expenses → SQLite cache: reads and writes
- Offline sync → Supabase: syncs data
- Offline sync → SQLite cache: syncs cache
- Vehicle records → Offline sync: syncable data
- Related records → Offline sync: syncable data
- Photo storage → Cloudinary: uploads images
- Fleet screens → OCR capture: captures receipts
- Fleet screens → PDF export: exports vehicle PDF
- Fleet screens → Fleet reports: exports fleet PDF
- PDF export → Share and print: shares or prints
- Fuel and expenses → Fuel analytics: provides fuel data
- Fleet screens → Notifications: uses reminders
