An Android expense tracker that turns ČSOB SmartBanking card-payment notifications into monthly spending insights, budgets, and home screen widgets.
Note
Expense Widget currently supports positive EUR card transactions from Slovak-language ČSOB SmartBanking notifications on Android 7.0 and newer.
- Automatically records ČSOB card expenses from Android notifications.
- Shows monthly totals, transaction history, merchants, and payment details.
- Tracks progress against a configurable monthly budget.
- Provides a compact 1×1 monthly-spending widget and a 2×1 budget widget.
- Provides a Wear OS budget tile with the spent amount, percentage, and progress.
- Stores expense data and settings locally on the device.
- Supports light and dark system themes.
- The user grants Android notification access to Expense Widget.
- A native notification listener filters events from the ČSOB SmartBanking app.
- Supported card-transaction notifications are parsed, normalized, and stored in a local SQLite database.
- The app and its widgets update with the current month's spending and budget progress.
Expense Widget does not connect to a bank API and does not require ČSOB credentials.
Captured ČSOB notifications and parsed transactions remain in the phone app's private on-device storage, with Android backups disabled. A compact current-month summary containing only the spent amount and budget is synchronized to the paired Wear OS app using Google's encrypted Wear OS Data Layer; the transfer may route through Google Cloud when Bluetooth is unavailable. The project contains no custom backend or analytics.
Android notification access is a powerful permission. Expense Widget discards events from other apps before extracting or storing their notification contents. Captured ČSOB notification records currently have no automatic retention limit or deletion UI.
- Node.js and npm
- Android Studio with the Android SDK
- An Android emulator or physical device
Install dependencies and create a development build:
npm install
npm run androidBuild the Wear OS APK after generating the Android project:
npm run android:wearThis project contains a native Android module, so it cannot run in Expo Go. To exercise automatic tracking, enable notification access in the app and use a device with ČSOB SmartBanking installed.
Run the checks:
npm test
npm run lint- Expo 57, React Native, React, and TypeScript
- Kotlin native module with
NotificationListenerService - SQLite, Android
RemoteViewswidgets, and a native Wear OS Tile - Vitest and JUnit
- Android only
- ČSOB SmartBanking for Slovakia only
- Positive EUR card transactions only
- Dependent on the bank's current Slovak notification format