A lightweight personal finance Android app to track income and expenses, view balances on a dashboard, export data to CSV, and switch between light and dark themes.
| Dashboard | Add transaction | Transaction details |
|---|---|---|
![]() |
![]() |
![]() |
- Dashboard — total balance, income, expense, and recent transactions
- Transactions — add, edit, view details, and swipe-to-delete (with undo)
- Filters — overall, income-only, or expense-only lists
- Categories — bonus, food, salary, transport, utilities, and more
- CSV export — export transactions for backup or spreadsheets
- Dark / light theme — persisted with DataStore
- Share — share the app or individual transactions
- Localization — multiple language resources (e.g. ES, DE, JA, UR, AR)
| Layer | Tools |
|---|---|
| Language | Kotlin |
| UI | XML, View Binding, Data Binding |
| Architecture | MVVM, Repository pattern, Clean Architecture |
| DI | Hilt (Dagger) |
| Database | Room |
| Async | Coroutines, Flow, StateFlow, LiveData |
| Navigation | Jetpack Navigation + Safe Args |
| Preferences | DataStore |
| Other | Lottie, OpenCSV, Gson, Firebase Analytics & Crashlytics, AdMob |
- Android Studio Hedgehog (2023.1.1) or newer recommended
- JDK 17
- Android SDK with API 36 (compile) and build-tools installed
- A device or emulator running API 26+
git clone https://github.com/saadkhalidkhan/Expense-Manager.git
cd Expense-ManagerThis project uses Firebase (google-services.json) and AdMob. For your own fork:
- Create a Firebase project and download
google-services.jsonintoapp/. - Replace AdMob IDs in
app/src/main/res/values/strings.xml(app_id,expense_banner) with your own, or use Google’s test ad units during development.
Do not commit production API keys or private config you do not intend to share.
# Debug APK
./gradlew assembleDebug
# Install on a connected device/emulator
./gradlew installDebugOr open the project in Android Studio and run the app configuration.
./gradlew test
./gradlew connectedAndroidTest # requires a device/emulatorThe project uses Spotless with ktlint:
./gradlew spotlessApply
./gradlew spotlessCheck- Open the app — the dashboard shows balance, income, expense, and recent activity.
- Add a transaction — tap +, enter title, amount, type (income/expense), category, date, and note, then save.
- Filter — use Overall / Income / Expense on the dashboard to narrow the list.
- View or edit — tap a transaction for details; use Edit to update or swipe to delete.
- Export — use the export action to save transactions as CSV (storage permission may apply on older Android versions).
- Theme — toggle dark/light mode from the dashboard toolbar; the choice is remembered.
app/src/main/java/com/droidgeeks/expensemanager/
├── app/ # Application (Hilt)
├── data/local/ # Room entities, DAO, DataStore
├── di/ # Hilt modules
├── repo/ # Repository layer
├── services/exportcsv/ # CSV export
├── utils/ # Extensions, constants, ViewState
└── view/ # Activities, fragments, adapters, ViewModels
| Setting | Location |
|---|---|
| Application ID | com.droidgeeks.expensemanager |
| Version | 1.0 (versionCode 1) in app/build.gradle.kts |
| Min / target SDK | 26 / 36 |
Contributions are welcome. Please read CONTRIBUTING.md and our Code of Conduct before opening an issue or pull request.
- Open an issue to discuss your change.
- Fork the repo and create a branch from
master. - Open a pull request with a clear description and screenshots when UI changes.
This project is licensed under the Apache License 2.0 — see LICENSE.
Copyright 2026 Saad Khan
Saad Khan — GitHub · ranasaad0799@gmail.com
If this project helps you, consider starring the repo.


