# eashangallage/dimeview architecture

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

- Interactive diagram: https://gitdiagram.com/eashangallage/dimeview
- Repository: https://github.com/eashangallage/dimeview

## Overview

DimeView is a desktop finance tracker for trucking owner-operators. The principal workflow is to select a Google spreadsheet, enter load or expense transactions, and review filtered reports or export them. The README also documents schema migration, state/city routing, split calculations, multiple assets, trash-sheet recovery, and branded PDF and CSV exports. The graph maps these capabilities to the sampled GUI, controller, and model; several subsystems share the large model.py implementation. Some feature links rely on README descriptions because their implementation was not excerpted.

Main entry points: [`src/dimeview/controller.py`](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/controller.py) (Interaction controller), [`src/dimeview/model.py`](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py) (Google Sheets data), [`src/dimeview/view.py`](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/view.py) (Desktop windows), [`src/dimeview/main.py`](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/main.py) (App startup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop interface"]
  node_launcher["App startup<br/>[main.py]"]
  node_gui["Desktop windows<br/>[view.py]"]
  node_controller["Interaction controller<br/>[controller.py]"]
end

subgraph group_workflow["Finance workflow"]
  node_entry["Transaction entry<br/>[controller.py]"]
  node_routing["State and city routing<br/>[model.py]"]
  node_splits["Payment splits<br/>[model.py]"]
  node_assets["Driver and truck assets<br/>[model.py]"]
end

subgraph group_storage["Sheets and data"]
  node_sheets[("Google Sheets data<br/>[model.py]")]
  node_drive[("Google Drive service")]
  node_cache[("Local data cache<br/>[model.py]")]
  node_migration["Sheet migration<br/>[model.py]"]
  node_trash["Trash recovery<br/>[model.py]"]
end

subgraph group_outputs["Reports and exports"]
  node_reports["Filtered reports<br/>[controller.py]"]
  node_calculations["Report calculations<br/>[model.py]"]
  node_pdf["PDF reports<br/>[model.py]"]
  node_csv["CSV export<br/>[view.py]"]
end

node_owner(("Owner-operator"))

node_owner -->|"uses"| node_gui
node_launcher -->|"creates"| node_controller
node_launcher -.->|"starts"| node_gui
node_controller -->|"updates"| node_gui
node_controller -->|"requests data"| node_sheets
node_controller -->|"handles submission"| node_entry
node_entry -.->|"saves transactions"| node_sheets
node_sheets -.->|"uses API"| node_drive
node_sheets -->|"loads rows"| node_cache
node_controller -->|"starts migration"| node_migration
node_controller -->|"requests reports"| node_reports
node_reports -.->|"gets report data"| node_calculations
node_calculations -.->|"reads entries"| node_sheets
node_reports -.->|"exports PDF"| node_pdf
node_reports -.->|"exports CSV"| node_csv
node_entry -.->|"uses location fields"| node_routing
node_entry -.->|"calculates splits"| node_splits
node_entry -.->|"associates assets"| node_assets
node_sheets -.->|"supports recovery"| node_trash

click node_launcher "https://github.com/eashangallage/dimeview/blob/main/src/dimeview/main.py"
click node_gui "https://github.com/eashangallage/dimeview/blob/main/src/dimeview/view.py"
click node_controller "https://github.com/eashangallage/dimeview/blob/main/src/dimeview/controller.py"
click node_entry "https://github.com/eashangallage/dimeview/blob/main/src/dimeview/controller.py"
click node_routing "https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py"
click node_splits "https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py"
click node_assets "https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py"
click node_sheets "https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py"
click node_cache "https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py"
click node_migration "https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py"
click node_trash "https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py"
click node_reports "https://github.com/eashangallage/dimeview/blob/main/src/dimeview/controller.py"
click node_calculations "https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py"
click node_pdf "https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py"
click node_csv "https://github.com/eashangallage/dimeview/blob/main/src/dimeview/view.py"

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_launcher,node_gui,node_controller toneBlue
class node_entry,node_routing,node_splits,node_assets toneAmber
class node_sheets,node_drive,node_cache,node_migration,node_trash toneMint
class node_reports,node_calculations,node_pdf,node_csv toneRose
class node_owner toneIndigo
```

## Components

### Desktop interface

- [App startup](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/main.py): `src/dimeview/main.py`
- [Desktop windows](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/view.py): `src/dimeview/view.py`
- [Interaction controller](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/controller.py): `src/dimeview/controller.py`

### Finance workflow

- [Transaction entry](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/controller.py): `src/dimeview/controller.py`
- [State and city routing](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py): `src/dimeview/model.py`
- [Payment splits](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py): `src/dimeview/model.py`
- [Driver and truck assets](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py): `src/dimeview/model.py`

### Sheets and data

- [Google Sheets data](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py): `src/dimeview/model.py`
- **Google Drive service**
- [Local data cache](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py): `src/dimeview/model.py`
- [Sheet migration](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py): `src/dimeview/model.py`
- [Trash recovery](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py): `src/dimeview/model.py`

### Reports and exports

- [Filtered reports](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/controller.py): `src/dimeview/controller.py`
- [Report calculations](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py): `src/dimeview/model.py`
- [PDF reports](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/model.py): `src/dimeview/model.py`
- [CSV export](https://github.com/eashangallage/dimeview/blob/main/src/dimeview/view.py): `src/dimeview/view.py`

### Other components

- **Owner-operator**

## Connections

- Owner-operator → Desktop windows: uses (evidence: `README.md`)
- App startup → Interaction controller: creates (evidence: `src/dimeview/main.py`)
- App startup → Desktop windows: starts
- Interaction controller → Desktop windows: updates (evidence: `src/dimeview/controller.py`)
- Interaction controller → Google Sheets data: requests data (evidence: `src/dimeview/controller.py`)
- Interaction controller → Transaction entry: handles submission (evidence: `src/dimeview/controller.py`)
- Transaction entry → Google Sheets data: saves transactions (evidence: `src/dimeview/controller.py`)
- Google Sheets data → Google Drive service: uses API
- Google Sheets data → Local data cache: loads rows (evidence: `src/dimeview/model.py`)
- Interaction controller → Sheet migration: starts migration (evidence: `src/dimeview/controller.py`)
- Interaction controller → Filtered reports: requests reports (evidence: `src/dimeview/controller.py`)
- Filtered reports → Report calculations: gets report data (evidence: `src/dimeview/controller.py`)
- Report calculations → Google Sheets data: reads entries (evidence: `src/dimeview/model.py`)
- Filtered reports → PDF reports: exports PDF (evidence: `src/dimeview/controller.py`)
- Filtered reports → CSV export: exports CSV (evidence: `src/dimeview/controller.py`)
- Transaction entry → State and city routing: uses location fields (evidence: `src/dimeview/controller.py`)
- Transaction entry → Payment splits: calculates splits (evidence: `src/dimeview/controller.py`)
- Transaction entry → Driver and truck assets: associates assets (evidence: `src/dimeview/controller.py`)
- Google Sheets data → Trash recovery: supports recovery (evidence: `src/dimeview/model.py`)
