How hariharen9/spendwiser-app works
SpendWiser is a local-first personal-finance app. Users onboard, record or import transactions, and review a ledger and forward-looking cash runway alongside accounts, cards, debt, budgets, goals, subscriptions, splits, and insights. The README documents these product capabilities; the sampled Android sources show a separate SMS intake path that filters bank alerts, queues them locally, and exposes them to Flutter. Flutter internals beyond the sampled native bridge are represented at subsystem level, so undocumented call relationships are omitted.
Main entry points: SmsReceiver.kt SMS receiver · MainActivity.kt Flutter SMS channels · app_shell.dart App shell · home_screen.dart Home and runway
Components 22
App experience
- App entry
lib/main.dart - App shell
lib/features/shell/app_shell.dart - Onboarding and auth
lib/features/auth/auth_gate.dart
Finance features
- Home and runway
lib/features/home/home_screen.dart - Ledger
lib/features/ledger/ledger_screen.dart - Finance modules
lib/features - Insights
lib/features/insights/insights_screen.dart
Transaction capture
- Capture UI
lib/features/home/widgets - Quick capture parser
lib/features/home/services/capture_parser.dart - SMS review
lib/features/sms/sms_review_sheet.dart - Bank SMS parser
lib/data/sms/bank_sms_parser.dart
Data and analysis
- Finance calculator
lib/data/services/finance_calculator.dart - Local persistence
lib/data/persistence/hive_persistence.dart - Firestore finance store
lib/data/firebase/firestore_finance_store.dart - Backup and export
lib/data/services/backup_service.dart
Android SMS bridge
- SMS receiver
android/app/src/main/kotlin/com/spendwiser/spendwiser_app/SmsReceiver.kt - SMS candidate filter
android/app/src/main/kotlin/com/spendwiser/spendwiser_app/SmsFilter.kt - Pending SMS queue
android/app/src/main/kotlin/com/spendwiser/spendwiser_app/SmsInboxStore.kt - SMS event bridge
android/app/src/main/kotlin/com/spendwiser/spendwiser_app/SmsEventBus.kt - Flutter SMS channels
android/app/src/main/kotlin/com/spendwiser/spendwiser_app/MainActivity.kt - SMS notification
android/app/src/main/kotlin/com/spendwiser/spendwiser_app/SmsNotifier.kt
Other components
- Finance user
Connections 21
- Finance user → App entry: uses
README.md - App entry → App shell: opens
- App shell → Onboarding and auth: gates access
- App shell → Home and runway: shows home
- Finance user → Capture UI: records spending
README.md - Capture UI → Quick capture parser: parses typed input
README.md - Finance user → SMS review: reviews alerts
README.md - SMS review → Bank SMS parser: parses bank messages
README.md - Finance user → Ledger: reviews transactions
README.md - Finance user → Home and runway: checks runway
README.md - Home and runway → Finance calculator: uses forecasts
README.md - Finance user → Finance modules: manages finances
README.md - Finance user → Insights: views analysis
README.md - Finance user → Backup and export: exports data
README.md - SMS receiver → Pending SMS queue: stores candidate
android/app/src/main/kotlin/com/spendwiser/spendwiser_app/SmsReceiver.kt - SMS receiver → SMS candidate filter: checks message
android/app/src/main/kotlin/com/spendwiser/spendwiser_app/SmsReceiver.kt - SMS receiver → SMS event bridge: emits queued item
android/app/src/main/kotlin/com/spendwiser/spendwiser_app/SmsReceiver.kt - SMS receiver → SMS notification: notifies user
android/app/src/main/kotlin/com/spendwiser/spendwiser_app/SmsReceiver.kt - Flutter SMS channels → SMS event bridge: registers stream
android/app/src/main/kotlin/com/spendwiser/spendwiser_app/MainActivity.kt - Flutter SMS channels → Pending SMS queue: serves queue calls
android/app/src/main/kotlin/com/spendwiser/spendwiser_app/MainActivity.kt - Flutter SMS channels → SMS notification: runs test notice
android/app/src/main/kotlin/com/spendwiser/spendwiser_app/MainActivity.kt