Languages: > 🇬🇧 English | 🇮🇩 Bahasa Indonesia | 🇨🇳 简体中文 | 🇯🇵 日本語
MyWallet is a modern, offline-first personal finance tracker for Android built entirely with Kotlin. It uses a local Room database to keep your data fast, private, and always available, while providing smart financial insights and helpful home-screen widgets.
- 📊 Real-time Dashboard: See your Current Balance, Total Income, and Total Expense, all filterable by time (All Time, This Month, This Year).
- 📈 Visual Charts:
- A Doughnut Chart to see exactly where your money is going.
- A Bar Chart to compare your total Income vs. Expense.
- ✍️ Log Everything: Easily track income and expenses with date, description, amount, and category.
- ⭐ Smart Wishlist:
- Add items you want to save for.
- Get instant affordability checks against your balance.
- See a savings timeline (e.g., "Est. 5 months") based on your habits.
- ✏️ Edit & Delete:
- Tap the settings icon on any transaction to edit or delete it.
- Tap the settings icon on a wishlist item to edit it.
- Mark a wishlist item "complete," and the edit icon cleverly turns into a delete button.
- 🔔 Notifications: Get an instant local notification every time you add a new transaction.
- ⏰ Daily Reminders: Set a custom daily reminder (default 9:00 PM) so you never forget to log your finances.
- 🎨 Theme Settings: Instantly switch between Light, Dark, or System Default themes.
- 🔒 Offline & Private: All data is saved securely to a private, on-device Room database. No account or internet connection required.
- 💰 Stats Widget: Your balance, income, and expense totals at a glance. Updates instantly when you make changes in the app.
- 🛒 Wishlist Widget: A scrollable, interactive list. You can check off your goals directly from your home screen.
- ➕ Quick Add Widget: A simple button that opens a dedicated screen to quickly add a new transaction without opening the full app.
- Language: 100% Kotlin
- Architecture: MVVM (ViewModel, LiveData)
- Database: Room (for local, on-device storage)
- UI: ViewBinding, Android Navigation Component, Material Components
- Concurrency: Kotlin Coroutines
- Async:
AlarmManager&BroadcastReceiver(for daily reminders) - Charts: MPAndroidChart
- Widgets: AppWidgets with
RemoteViews&ListView
This project uses the Gradle wrapper.
- Clone the repository.
- Connect an Android device or start an emulator.
- Run
gradlew installDebugfrom the project's root directory.
- 🎨 Material 3 UI: Migrating the entire app to the modern "Material You" design system.
- 🔔 Push Notifications: Adding Firebase Cloud Messaging (FCM) for important alerts.
- ⚙️ Remote Config: Using Firebase Remote Config to show dynamic in-app modals or messages.
