Expense Tracker is a personal finance application for Android, designed to help users manage their expenses efficiently. It draws inspiration from the popular Money Manager EX (MMEX) project but offers a modernized approach to expense tracking on the Android platform. Leveraging modern Android development practices, Expense Tracker utilizes Jetpack Compose for UI development and Room for database management. Our aim is to provide feature parity with Money Manager EX while delivering a more intuitive and user-friendly experience.
Expense Tracker offers the following features:
- 🔀 Split Transactions: Categorize a single transaction into multiple categories and amounts. Compliant with the MMEX
SPLITTRANSACTIONS_V1table schema, complete with dynamic forms that validate that split item amounts sum up to the transaction total in real-time. - 📊 Interactive Reports Builder: Custom animated SVG-like canvas Pie and Donut charts, combined with Cartesian bar/line charts using Vico. Build, run, and save custom SQL reports via an inline SQLite raw query editor. Includes default reports auto-populated on first startup (e.g. Subscriptions, Summary of Accounts, Category Breakdown).
- 🔍 Transaction Search & Multi-Field Filters: Easily search transactions by payee, notes, category name, or transaction code using a search bar at the top of the transaction list.
- 💱 Multi-Currency Transfers & Conversion Rates: Cross-currency transfers auto-detect mismatched account currencies and prompt for conversion rates or target deposit amounts.
- ⚖️ Account Reconciliation Wizard: Reconcile your transactions against monthly bank statements. Prompt for Ending Balance, select cleared items, and trace the variance down to exactly zero before saving.
- 📸 Receipt Attachment & Photo Capture: Attach photos of invoices or documents to any transaction. Files are copied securely into local internal app storage and indexed polymorphically using the MMEX
ATTACHMENT_V1table structure. - 🏦 Account Management: Create and manage multiple accounts to organize your cash, checkings, savings, assets, and liabilities.
- Automatic Currency Updates: Fetches currency exchange rates from the European Union InfoEuro system for monthly updates.
- UI Layer: Jetpack Compose (Material 3) with M3 Adaptive Navigation Suite supporting both tablet layouts and mobile layouts.
- Database: Room Database with migration versioning supporting Money Manager EX (MMEX) desktop schema layouts.
- Background Tasks: AndroidX WorkManager running background exchange rate syncs.
Expense Tracker contains a comprehensive unit testing suite verifying ViewModels, repositories, formatting utilities, and data layers:
To execute unit tests:
./gradlew testTo run tests and compile an HTML/XML code coverage report:
./gradlew test jacocoTestReportThe resulting code coverage reports will be compiled at:
app/build/reports/jacoco/jacocoTestReport/html/index.html
Expense Tracker follows semantic versioning.
- Tag releases: Auto-generated by our GitHub actions CI/CD pipeline whenever version changes are committed and pushed to the
masterbranch. - Rebuilds from source: To manually compile a release APK locally, execute:
./gradlew assembleRelease
Contributions are welcome! Please review the guidelines outlined in the CONTRIBUTING.md file before contributing.
Expense Tracker is licensed under the MIT License. See the LICENSE.md file for details.