mirror of
https://github.com/andwati/ledga.git
synced 2026-10-18 11:22:54 +00:00
124 lines
3.7 KiB
Markdown
124 lines
3.7 KiB
Markdown
# Ledga
|
|
|
|
M-Pesa spending tracker for Android. Automatically reads M-Pesa SMS confirmations to track your spending — zero manual entry.
|
|
|
|
## Download
|
|
|
|
Download the latest APK from [Releases](https://github.com/ngenohkevin/ledga/releases/latest).
|
|
|
|
Install directly on your Android phone (no Play Store needed). The app checks for updates automatically.
|
|
|
|
## Features
|
|
|
|
### Automatic SMS Tracking
|
|
- Reads M-Pesa SMS in real-time via BroadcastReceiver
|
|
- Supports **17 transaction types**: Send Money, Buy Goods, Pay Bill, Withdraw (Agent/ATM), Deposit, Received, Airtime (Self/Other), M-Pesa Global, Fuliza (Borrow/Repayment/Reversal), M-Shwari, KCB M-Pesa, Reversal
|
|
- Import existing SMS history on first launch
|
|
- Stores raw SMS for future parser improvements
|
|
|
|
### Smart Categorization
|
|
- 13 default categories: Groceries, Transport, Bills, Airtime, Food, Send Money, Received, Withdrawal, Deposit, Shopping, International, Savings & Loans, Other
|
|
- Auto-categorizes by merchant name and paybill/till number
|
|
- Pre-loaded rules for common merchants (Naivas, KPLC, Uber, etc.)
|
|
- Tap any transaction to re-categorize
|
|
|
|
### Home Dashboard
|
|
- Current M-Pesa balance (from last transaction)
|
|
- Monthly spending total with fees breakdown
|
|
- Animated donut chart by category
|
|
- Period selector: Today / This Week / Month
|
|
- Recent transactions feed
|
|
|
|
### Transactions
|
|
- Grouped by day with search and filters
|
|
- Filter by type: All, Sent, Received, Bills, Goods, Withdraw
|
|
- Transaction detail bottom sheet with full info
|
|
- One-tap re-categorization
|
|
|
|
### Trends & Analytics
|
|
- Daily spending bar chart (Vico)
|
|
- Category breakdown with color indicators
|
|
- Top 5 merchants by spending
|
|
- Transaction fees summary
|
|
- Period selector: 7D / 30D / 90D / 1Y
|
|
|
|
### Budget Tracking
|
|
- Set overall monthly budget
|
|
- Progress bars with color coding (green/warning/red)
|
|
- Per-category budget support
|
|
|
|
### Notifications
|
|
- Daily spending summary (default 8 PM)
|
|
- Weekly summary (Sunday evening)
|
|
- Budget warning at 80% and exceeded at 100%
|
|
- Large transaction alerts (configurable threshold)
|
|
- All toggleable in settings
|
|
|
|
### Backup & Export
|
|
- **Google Drive**: Auto-backup to app data folder, restore on fresh install
|
|
- **Manual Export**: ZIP file with `transactions.csv` (Excel-friendly) + `data.json` (full restore)
|
|
- **Manual Import**: Restore from exported ZIP
|
|
- Share exports via WhatsApp, email, Bluetooth
|
|
|
|
### Self-Update
|
|
- Checks GitHub Releases on launch (max once per day)
|
|
- Download and install updates directly from the app
|
|
|
|
### Customization
|
|
- Theme: System / Light / Dark
|
|
- Font size: System Default / Small / Medium / Large / Extra Large
|
|
- M-Pesa green primary color with Material 3
|
|
|
|
## Tech Stack
|
|
|
|
| Component | Technology |
|
|
|-----------|------------|
|
|
| Language | Kotlin |
|
|
| UI | Jetpack Compose + Material 3 |
|
|
| Database | Room (SQLite) |
|
|
| DI | Hilt |
|
|
| Settings | Jetpack DataStore |
|
|
| Charts | Vico |
|
|
| Background | WorkManager + BroadcastReceiver |
|
|
| Backup | Google Drive API |
|
|
| Navigation | Navigation Compose (type-safe routes) |
|
|
| Build | Gradle (Kotlin DSL) |
|
|
|
|
## Requirements
|
|
|
|
- Android 8.0+ (API 26)
|
|
- SMS permission (to read M-Pesa messages)
|
|
- Notification permission (Android 13+, for summaries and alerts)
|
|
|
|
## Privacy
|
|
|
|
All data stays on your device. No server, no accounts, no analytics, no tracking. Google Drive backup uses the app-specific folder — invisible to other apps and only accessible by Ledga.
|
|
|
|
## Building
|
|
|
|
```bash
|
|
# Debug
|
|
./gradlew assembleDebug
|
|
|
|
# Release (requires keystore)
|
|
./gradlew assembleRelease
|
|
|
|
# Tests
|
|
./gradlew testDebugUnitTest
|
|
```
|
|
|
|
## Release
|
|
|
|
Tag a version to trigger the CI/CD pipeline:
|
|
|
|
```bash
|
|
git tag v1.0.0
|
|
git push origin v1.0.0
|
|
```
|
|
|
|
GitHub Actions builds the signed APK and creates a release automatically.
|
|
|
|
## License
|
|
|
|
Private — for personal/family use.
|