# molvess/para-defteri architecture

> Architecture diagram of the GitHub repository molvess/para-defteri, 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/molvess/para-defteri
- Repository: https://github.com/molvess/para-defteri

## Overview

Para Defteri is a local-first debt and receivables tracker with two independent Android implementations: a feature-rich Flutter app and an earlier Kotlin/Compose app. The main workflow is recording and reviewing debts, with local persistence; the Flutter README also documents contact photos, multiple IBANs, editing, filters, per-person totals, Keep-text transfer, and CSV/JSON backup. Flutter’s native Android bridge handles document and photo selection. Flutter source was not sampled, so feature wiring beyond the documented entry points and native bridge is left unspecified.

Main entry points: [`flutter_app/android/app/src/main/kotlin/com/molvess/para_defteri_flutter/MainActivity.kt`](https://github.com/molvess/para-defteri/blob/main/flutter_app/android/app/src/main/kotlin/com/molvess/para_defteri_flutter/MainActivity.kt) (Native bridge), [`app/src/main/java/com/example/MainActivity.kt`](https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/MainActivity.kt) (Compose activity), [`app/src/main/java/com/example/ui/FinanceViewModel.kt`](https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/ui/FinanceViewModel.kt) (Finance view model), [`app/src/main/java/com/example/data/FinanceRepository.kt`](https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/data/FinanceRepository.kt) (Finance repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_flutter["Flutter app"]
  node_flutter_entry["Flutter entry<br/>[main.dart]"]
  node_flutter_ui["App interface<br/>[app.dart]"]
  node_ledger["Debt ledger<br/>[ledger.dart]"]
  node_store[("Local store<br/>[store.dart]")]
  node_dialogs["Dialogs<br/>[dialogs.dart]"]
  node_avatars["Person photos<br/>[person_avatar.dart]"]
  node_consent["Access consent"]
end

subgraph group_native["Android bridge"]
  node_native_activity["Native bridge<br/>[MainActivity.kt]"]
  node_access_policy["Permission policy<br/>[AccessPolicy.kt]"]
end

subgraph group_kotlin["Kotlin app"]
  node_kotlin_activity["Compose activity<br/>[MainActivity.kt]"]
  node_features["Debt features<br/>[DebtFeatures.kt]"]
  node_viewmodel["Finance view model"]
end

subgraph group_kotlin_data["Kotlin data"]
  node_repository["Finance repository"]
  node_dao["Finance DAO<br/>[FinanceDao.kt]"]
  node_database[("Room database<br/>[AppDatabase.kt]")]
  node_models["Finance models<br/>[Models.kt]"]
  node_debt_utils["Debt calculations<br/>[DebtUtils.kt]"]
end

node_person(("User"))
node_android["Android system"]
node_file_photo["File and photo providers"]
node_kotlin_user(("User"))

node_person -->|"opens"| node_flutter_entry
node_native_activity -->|"checks access"| node_access_policy
node_native_activity -->|"requests permissions"| node_android
node_native_activity -->|"opens, reads, writes"| node_file_photo
node_kotlin_user -->|"uses"| node_kotlin_activity
node_kotlin_activity --> node_viewmodel
node_viewmodel --> node_repository
node_repository --> node_dao
node_dao --> node_database

click node_flutter_entry "https://github.com/molvess/para-defteri/blob/main/flutter_app/lib/main.dart"
click node_flutter_ui "https://github.com/molvess/para-defteri/blob/main/flutter_app/lib/app.dart"
click node_ledger "https://github.com/molvess/para-defteri/blob/main/flutter_app/lib/ledger.dart"
click node_store "https://github.com/molvess/para-defteri/blob/main/flutter_app/lib/store.dart"
click node_dialogs "https://github.com/molvess/para-defteri/blob/main/flutter_app/lib/dialogs.dart"
click node_avatars "https://github.com/molvess/para-defteri/blob/main/flutter_app/lib/person_avatar.dart"
click node_consent "https://github.com/molvess/para-defteri/blob/main/flutter_app/lib/access_consent.dart"
click node_native_activity "https://github.com/molvess/para-defteri/blob/main/flutter_app/android/app/src/main/kotlin/com/molvess/para_defteri_flutter/MainActivity.kt"
click node_access_policy "https://github.com/molvess/para-defteri/blob/main/flutter_app/android/app/src/main/kotlin/com/molvess/para_defteri_flutter/AccessPolicy.kt"
click node_kotlin_activity "https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/MainActivity.kt"
click node_features "https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/DebtFeatures.kt"
click node_viewmodel "https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/ui/FinanceViewModel.kt"
click node_repository "https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/data/FinanceRepository.kt"
click node_dao "https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/data/FinanceDao.kt"
click node_database "https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/data/AppDatabase.kt"
click node_models "https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/data/Models.kt"
click node_debt_utils "https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/data/DebtUtils.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_flutter_entry,node_flutter_ui,node_ledger,node_store,node_dialogs,node_avatars,node_consent,node_person,node_kotlin_user toneBlue
class node_native_activity,node_access_policy toneAmber
class node_kotlin_activity,node_features,node_viewmodel toneMint
class node_repository,node_dao,node_database,node_models,node_debt_utils toneRose
class node_android,node_file_photo toneIndigo
```

## Components

### Flutter app

- [Flutter entry](https://github.com/molvess/para-defteri/blob/main/flutter_app/lib/main.dart): `flutter_app/lib/main.dart`
- [App interface](https://github.com/molvess/para-defteri/blob/main/flutter_app/lib/app.dart): `flutter_app/lib/app.dart`
- [Debt ledger](https://github.com/molvess/para-defteri/blob/main/flutter_app/lib/ledger.dart): `flutter_app/lib/ledger.dart`
- [Local store](https://github.com/molvess/para-defteri/blob/main/flutter_app/lib/store.dart): `flutter_app/lib/store.dart`
- [Dialogs](https://github.com/molvess/para-defteri/blob/main/flutter_app/lib/dialogs.dart): `flutter_app/lib/dialogs.dart`
- [Person photos](https://github.com/molvess/para-defteri/blob/main/flutter_app/lib/person_avatar.dart): `flutter_app/lib/person_avatar.dart`
- [Access consent](https://github.com/molvess/para-defteri/blob/main/flutter_app/lib/access_consent.dart): `flutter_app/lib/access_consent.dart`

### Android bridge

- [Native bridge](https://github.com/molvess/para-defteri/blob/main/flutter_app/android/app/src/main/kotlin/com/molvess/para_defteri_flutter/MainActivity.kt): `flutter_app/android/app/src/main/kotlin/com/molvess/para_defteri_flutter/MainActivity.kt`
- [Permission policy](https://github.com/molvess/para-defteri/blob/main/flutter_app/android/app/src/main/kotlin/com/molvess/para_defteri_flutter/AccessPolicy.kt): `flutter_app/android/app/src/main/kotlin/com/molvess/para_defteri_flutter/AccessPolicy.kt`

### Kotlin app

- [Compose activity](https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/MainActivity.kt): `app/src/main/java/com/example/MainActivity.kt`
- [Debt features](https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/DebtFeatures.kt): `app/src/main/java/com/example/DebtFeatures.kt`
- [Finance view model](https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/ui/FinanceViewModel.kt): `app/src/main/java/com/example/ui/FinanceViewModel.kt`

### Kotlin data

- [Finance repository](https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/data/FinanceRepository.kt): `app/src/main/java/com/example/data/FinanceRepository.kt`
- [Finance DAO](https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/data/FinanceDao.kt): `app/src/main/java/com/example/data/FinanceDao.kt`
- [Room database](https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/data/AppDatabase.kt): `app/src/main/java/com/example/data/AppDatabase.kt`
- [Finance models](https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/data/Models.kt): `app/src/main/java/com/example/data/Models.kt`
- [Debt calculations](https://github.com/molvess/para-defteri/blob/main/app/src/main/java/com/example/data/DebtUtils.kt): `app/src/main/java/com/example/data/DebtUtils.kt`

### Other components

- **User**
- **Android system**
- **File and photo providers**
- **User**

## Connections

- User → Flutter entry: opens
- Native bridge → Permission policy: checks access
- Native bridge → Android system: requests permissions
- Native bridge → File and photo providers: opens, reads, writes
- User → Compose activity: uses
- Compose activity → Finance view model
- Finance view model → Finance repository
- Finance repository → Finance DAO
- Finance DAO → Room database
