Totals is a Flutter mobile app that automatically tracks your bank transactions by parsing SMS messages from Ethiopian banks. It provides real-time balance updates, transaction history, budgeting, analytics, and financial insights — all stored locally on your device.
|
|
|
|
|
|
- Commercial Bank of Ethiopia (CBE)
- Awash Bank
- Bank of Abyssinia (BOA)
- Dashen Bank
- Telebirr
- Amhara Bank
- Nib Bank
- Automatic SMS Parsing — monitors incoming bank SMS and extracts transaction details
- Real-Time Balance Updates — balances update automatically when transactions are detected
- Transaction History — full history with filtering, search, and category tagging
- Budgets — create budgets with alerts and track spending against them
- Account Management — multiple bank accounts with QR code sharing
- Analytics Dashboard — income vs expense charts, net worth over time, spending patterns by day/week/month/year
- Financial Insights — automated spending analysis and trends
- Home Screen Widgets — balance and expense summary widgets for Android
- Biometric Security — fingerprint or face authentication with auto-lock
- Dark/Light Theme — Material Design 3 with Google Fonts and custom font selection
- Local Web Server — access your data from a browser on the same network
- Data Export/Import — backup and restore your financial data
- Data Sync (optional, advanced) — push selected data to a backend you configure, with per-rule filters, field mapping, HTTP method/path, and triggers (manual, periodic, on new transaction, on reconnect). Off by default, behind a consent screen; one-way export only — bring your own server
- Local-First Storage — all data stored on-device using sqflite
- No Cloud Sync by Default — financial data stays on your device unless you explicitly enable the optional, off-by-default Data Sync feature
- Biometric Authentication — secure access with fingerprint or face recognition
- Offline-First — works completely offline after initial setup
- Flutter 3.27.1 (managed via FVM)
- Android Studio (Android only — iOS is not currently supported)
git clone <repository-url>
cd totals/app
fvm flutter pub get
fvm flutter run --flavor qa- Grant SMS Permissions — required to monitor bank transaction notifications
- Add Your First Account — enter account number, select bank, and provide holder name
- Initial Internet Connection — needed once to download SMS parsing patterns; fully offline after that
app/lib/
├── main.dart
├── _redesign/ # New UI (redesign in progress)
│ ├── screens/ # Redesigned pages
│ ├── widgets/ # Redesign-specific widgets
│ └── theme/ # Colors, icons, theme
├── background/ # Background tasks (daily spending, etc.)
├── components/ # Shared UI components
├── data/ # Static data and constants
├── database/
│ ├── database_helper.dart # sqflite setup
│ └── migration_helper.dart # Schema migrations
├── local_server/ # Built-in HTTP server
│ └── handlers/ # API route handlers
├── models/ # Domain models (account, transaction, budget, etc.)
├── providers/ # State management (Provider/ChangeNotifier)
├── repositories/ # Data access layer
├── screens/ # App screens (legacy)
├── services/ # Business logic (SMS, budgets, notifications, widgets, etc.)
├── theme/ # App-wide theming
├── utils/ # Helpers
└── widgets/ # Reusable UI widgets
- SMS Service — monitors SMS in foreground/background, identifies bank messages by sender, parses transactions via regex, and updates balances
- Local Server — Shelf-based HTTP server exposing REST endpoints (
/api/accounts,/api/transactions,/api/banks,/api/summary) - Database — sqflite with automatic migrations; tables for accounts, transactions, budgets, categories, failed parses, and profiles
- Budget Service — budget creation, tracking, and threshold alerts
- Widget Service — Android home screen widget data providers and refresh scheduling
- Notification Service — transaction notifications and budget alerts
The app uses build flavors. Run with:
fvm flutter run --flavor qafvm flutter build apk --release --flavor stableKey dependencies:
provider— state managementsqflite— local databaseanother_telephony— SMS monitoringshelf/shelf_router— HTTP serverlocal_auth— biometric authenticationfl_chart— chartshome_widget— Android home screen widgetsgoogle_fonts— typographyphosphor_flutter— iconsmobile_scanner/pretty_qr_code— QR code scanning and generation
See app/pubspec.yaml for the complete list.