# angelvtony/smartexpense architecture

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

## Overview

SmartExpense is an Android expense-tracking app. Its tree indicates a user-facing flow for viewing a dashboard, managing transactions, and reviewing analysis, alongside local budget/transaction persistence and SMS/reporting features. The source excerpts contain only build configuration and the README is empty, so component wiring and detailed behavior cannot be verified; the graph therefore keeps relationships conservative and uses filenames to identify likely responsibilities.

Main entry points: [`app/src/main/java/com/example/smartexpense/MainActivity.kt`](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/MainActivity.kt) (Main activity), [`app/src/main/java/com/example/smartexpense/ui/navigation/NavGraph.kt`](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/navigation/NavGraph.kt) (Navigation), [`app/src/main/java/com/example/smartexpense/ui/dashboard/DashboardScreen.kt`](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/dashboard/DashboardScreen.kt) (Dashboard), [`app/src/main/java/com/example/smartexpense/ui/all_transactions/AllTransactionsScreen.kt`](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/all_transactions/AllTransactionsScreen.kt) (Transaction list)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["App interface"]
  node_activity["Main activity<br/>[MainActivity.kt]"]
  node_app["App setup<br/>[SmartExpenseApp.kt]"]
  node_navigation["Navigation<br/>[NavGraph.kt]"]
  node_dashboard["Dashboard<br/>[DashboardScreen.kt]"]
  node_dashboard_vm["Dashboard state"]
  node_transactions["Transaction list"]
  node_transaction_edit["Transaction editor"]
  node_analysis["Analysis dashboard"]
  node_monthly["Monthly overview"]
  node_settings["Settings<br/>[SettingsScreen.kt]"]
end

subgraph group_domain["Domain logic"]
  node_weekly_insights["Weekly insights"]
  node_transaction_repo["Transaction repository"]
  node_budget_repo["Budget repository"]
end

subgraph group_data["Local data"]
  node_transaction_impl["Transaction storage adapter"]
  node_budget_impl["Budget storage adapter"]
  node_database[("Local database<br/>[AppDatabase.kt]")]
end

subgraph group_background["Background features"]
  node_sms_receiver["SMS receiver<br/>[SmsReceiver.kt]"]
  node_sms_parser["SMS parser<br/>[SmsParser.kt]"]
  node_sms_worker["SMS worker<br/>[SmsWorker.kt]"]
  node_reports["Report workers"]
  node_monthly_report["Monthly report worker"]
  node_exporter["Report exporter<br/>[ReportExporter.kt]"]
end

node_user(("User"))

node_user -->|"opens app"| node_activity
node_activity -->|"starts navigation"| node_navigation
node_user -->|"views"| node_dashboard
node_user -->|"manages expenses"| node_transactions
node_user -->|"edits transaction"| node_transaction_edit
node_user -->|"reviews spending"| node_analysis
node_user -->|"reviews month"| node_monthly
node_user -->|"configures"| node_settings

click node_activity "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/MainActivity.kt"
click node_app "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/SmartExpenseApp.kt"
click node_navigation "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/navigation/NavGraph.kt"
click node_dashboard "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/dashboard/DashboardScreen.kt"
click node_dashboard_vm "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/dashboard/DashboardViewModel.kt"
click node_transactions "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/all_transactions/AllTransactionsScreen.kt"
click node_transaction_edit "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/add_edit/AddEditTransactionScreen.kt"
click node_analysis "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/analysis/AnalysisDashboardScreen.kt"
click node_monthly "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/analysis/MonthlyOverviewScreen.kt"
click node_settings "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/settings/SettingsScreen.kt"
click node_weekly_insights "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/domain/usecase/GetWeeklyInsightsUseCase.kt"
click node_transaction_repo "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/domain/repository/TransactionRepository.kt"
click node_budget_repo "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/domain/repository/BudgetRepository.kt"
click node_transaction_impl "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/data/repository/TransactionRepositoryImpl.kt"
click node_budget_impl "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/data/repository/BudgetRepositoryImpl.kt"
click node_database "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/data/local/AppDatabase.kt"
click node_sms_receiver "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/data/sms/SmsReceiver.kt"
click node_sms_parser "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/data/sms/SmsParser.kt"
click node_sms_worker "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/data/sms/SmsWorker.kt"
click node_reports "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/data/worker/WeeklyReportWorker.kt"
click node_monthly_report "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/data/worker/MonthlyReportWorker.kt"
click node_exporter "https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/util/ReportExporter.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_activity,node_app,node_navigation,node_dashboard,node_dashboard_vm,node_transactions,node_transaction_edit,node_analysis,node_monthly,node_settings,node_user toneBlue
class node_weekly_insights,node_transaction_repo,node_budget_repo toneAmber
class node_transaction_impl,node_budget_impl,node_database toneMint
class node_sms_receiver,node_sms_parser,node_sms_worker,node_reports,node_monthly_report,node_exporter toneRose
```

## Components

### App interface

- [Main activity](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/MainActivity.kt): `app/src/main/java/com/example/smartexpense/MainActivity.kt`
- [App setup](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/SmartExpenseApp.kt): `app/src/main/java/com/example/smartexpense/SmartExpenseApp.kt`
- [Navigation](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/navigation/NavGraph.kt): `app/src/main/java/com/example/smartexpense/ui/navigation/NavGraph.kt`
- [Dashboard](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/dashboard/DashboardScreen.kt): `app/src/main/java/com/example/smartexpense/ui/dashboard/DashboardScreen.kt`
- [Dashboard state](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/dashboard/DashboardViewModel.kt): `app/src/main/java/com/example/smartexpense/ui/dashboard/DashboardViewModel.kt`
- [Transaction list](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/all_transactions/AllTransactionsScreen.kt): `app/src/main/java/com/example/smartexpense/ui/all_transactions/AllTransactionsScreen.kt`
- [Transaction editor](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/add_edit/AddEditTransactionScreen.kt): `app/src/main/java/com/example/smartexpense/ui/add_edit/AddEditTransactionScreen.kt`
- [Analysis dashboard](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/analysis/AnalysisDashboardScreen.kt): `app/src/main/java/com/example/smartexpense/ui/analysis/AnalysisDashboardScreen.kt`
- [Monthly overview](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/analysis/MonthlyOverviewScreen.kt): `app/src/main/java/com/example/smartexpense/ui/analysis/MonthlyOverviewScreen.kt`
- [Settings](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/ui/settings/SettingsScreen.kt): `app/src/main/java/com/example/smartexpense/ui/settings/SettingsScreen.kt`

### Domain logic

- [Weekly insights](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/domain/usecase/GetWeeklyInsightsUseCase.kt): `app/src/main/java/com/example/smartexpense/domain/usecase/GetWeeklyInsightsUseCase.kt`
- [Transaction repository](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/domain/repository/TransactionRepository.kt): `app/src/main/java/com/example/smartexpense/domain/repository/TransactionRepository.kt`
- [Budget repository](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/domain/repository/BudgetRepository.kt): `app/src/main/java/com/example/smartexpense/domain/repository/BudgetRepository.kt`

### Local data

- [Transaction storage adapter](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/data/repository/TransactionRepositoryImpl.kt): `app/src/main/java/com/example/smartexpense/data/repository/TransactionRepositoryImpl.kt`
- [Budget storage adapter](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/data/repository/BudgetRepositoryImpl.kt): `app/src/main/java/com/example/smartexpense/data/repository/BudgetRepositoryImpl.kt`
- [Local database](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/data/local/AppDatabase.kt): `app/src/main/java/com/example/smartexpense/data/local/AppDatabase.kt`

### Background features

- [SMS receiver](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/data/sms/SmsReceiver.kt): `app/src/main/java/com/example/smartexpense/data/sms/SmsReceiver.kt`
- [SMS parser](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/data/sms/SmsParser.kt): `app/src/main/java/com/example/smartexpense/data/sms/SmsParser.kt`
- [SMS worker](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/data/sms/SmsWorker.kt): `app/src/main/java/com/example/smartexpense/data/sms/SmsWorker.kt`
- [Report workers](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/data/worker/WeeklyReportWorker.kt): `app/src/main/java/com/example/smartexpense/data/worker/WeeklyReportWorker.kt`
- [Monthly report worker](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/data/worker/MonthlyReportWorker.kt): `app/src/main/java/com/example/smartexpense/data/worker/MonthlyReportWorker.kt`
- [Report exporter](https://github.com/angelvtony/smartexpense/blob/master/app/src/main/java/com/example/smartexpense/util/ReportExporter.kt): `app/src/main/java/com/example/smartexpense/util/ReportExporter.kt`

### Other components

- **User**

## Connections

- User → Main activity: opens app
- Main activity → Navigation: starts navigation
- User → Dashboard: views
- User → Transaction list: manages expenses
- User → Transaction editor: edits transaction
- User → Analysis dashboard: reviews spending
- User → Monthly overview: reviews month
- User → Settings: configures
