Skip to content

seyone22/Expense_Tracker

Repository files navigation

Expense Tracker

GitHub License GitHub Issues or Pull Requests GitHub Actions Workflow Status GitHub Actions Workflow Status Codacy Badge

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.


Key Features

Expense Tracker offers the following features:

  • 🔀 Split Transactions: Categorize a single transaction into multiple categories and amounts. Compliant with the MMEX SPLITTRANSACTIONS_V1 table 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_V1 table 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.

Technical Architecture

  • 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.

Testing & Code Coverage

Expense Tracker contains a comprehensive unit testing suite verifying ViewModels, repositories, formatting utilities, and data layers:

Running Tests

To execute unit tests:

./gradlew test

Running Test Coverage (Jacoco)

To run tests and compile an HTML/XML code coverage report:

./gradlew test jacocoTestReport

The resulting code coverage reports will be compiled at: app/build/reports/jacoco/jacocoTestReport/html/index.html


Versioning & Releases

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 master branch.
  • Rebuilds from source: To manually compile a release APK locally, execute:
    ./gradlew assembleRelease

Contributing

Contributions are welcome! Please review the guidelines outlined in the CONTRIBUTING.md file before contributing.

License

Expense Tracker is licensed under the MIT License. See the LICENSE.md file for details.

About

A money management application built with modern android technologies

Topics

Resources

License

Code of conduct

Contributing

Stars

4 stars

Watchers

1 watching

Forks

Contributors

Languages