GitHunt

Expense Manager Android

Get it on Google Play

Expense Manager

A beautifully crafted, open-source expense tracking app built entirely with Kotlin & Jetpack Compose.

API 21+ Build Kotlin Compose License


About

Expense Manager is a fully functional Android app for personal finance tracking. It follows modern Android design and development best practices, making it both a useful daily-driver and a reference project for developers looking to learn production-grade Compose architecture.

๐Ÿšง Work in progress โ€” actively maintained and accepting contributions.


Screenshots

Home Screen Analysis Screen Transaction Screen Category Chart Screen
Transaction Create Account Create Budget Create Dark Theme

Features

Core Functionality

  • Multi-account management โ€” create and organise transactions across Checking, Savings, Cash, Credit Card, and custom accounts
  • Budget tracking โ€” set monthly budgets with flexible customisation options and track spending against your targets
  • Transaction management โ€” log income, expenses, and transfers between accounts with category tagging, notes, and timestamps
  • CSV export โ€” export your transaction data for use in spreadsheets or other tools (PDF export coming soon)
  • Multi-currency support โ€” switch display currencies in the UI (full conversion support is planned)

Analytics & Insights

  • Trend analysis โ€” visualise your spending patterns across daily, weekly, and monthly timeframes
  • Category breakdown โ€” interactive pie chart showing where your money goes, grouped by category
  • Income vs. Expense summaries โ€” at-a-glance totals with colour-coded indicators

Redesigned Transaction List Screen

The transaction list has been rebuilt from the ground up with a focus on usability and polish:

  • Income / Expense summary cards โ€” gradient-backed cards at the top showing period totals with glowing accent indicators
  • Account filter pills โ€” horizontally scrollable chips for quick filtering by account
  • Type filter tabs โ€” segmented control (All / Expense / Income) with animated selection and count badges
  • Collapsible search โ€” tap-to-reveal search bar with clear button for fast transaction lookup
  • Date-grouped layout โ€” transactions grouped by date with daily net totals in each header
  • Swipe-to-reveal actions โ€” gesture-driven Edit and Delete actions on each row (spring-animated, no external library)
  • Staggered entrance animations โ€” header, cards, and groups animate in sequentially on load
  • Empty state โ€” friendly messaging when filters return no results
  • Floating Action Button โ€” quick-access button for adding new transactions

Improved Transaction Item Component

Each transaction row has been refined for better visual hierarchy and interaction:

  • Rounded icon container โ€” 44dp badge with category-tinted background and subtle border
  • Colour-coded amount prefix โ€” + for income (green), โˆ’ for expenses (red) for instant scanning
  • Transfer arrow indicator โ€” clear โ†“ flow between From โ†’ To accounts on transfer transactions
  • Notes preview โ€” single-line muted note text beneath the subtitle
  • Swipe actions โ€” integrated Edit / Delete reveal with spring physics animation
  • Smooth content transitions โ€” animateContentSize() for expanding/collapsing notes
  • Backward-compatible API โ€” all new callbacks (onEdit, onDelete, onClick) default to null, so existing call sites remain unchanged

Theming

  • Full Material 3 design system with dynamic color support
  • Complete Dark Theme implementation

Architecture & Tech Stack

Expense Manager is structured as a multi-module project following clean architecture principles.

Layer Libraries / Tools
UI Jetpack Compose, Material 3
Navigation Compose Navigation
State management ViewModel, Kotlin Flow, Coroutines
Persistence Room, DataStore
Background work WorkManager
Dependency injection Koin
Code style Spotless
Language 100% Kotlin

Getting Started

Prerequisites

  • Android Studio Hedgehog (2023.1.1) or later
  • JDK 17+
  • Android SDK with minimum API 21

Build & Run

# Clone the repository
git clone https://github.com/nkuppan/expensemanager.git
cd expensemanager

# Build the debug variant
./gradlew assembleDebug

# Install on a connected device
./gradlew installDebug

Project Structure

expensemanager/
โ”œโ”€โ”€ app/                    # Application module (entry point)
โ”œโ”€โ”€ core/
โ”‚   โ”œโ”€โ”€ common/             # Shared utilities, colour resources, extensions
โ”‚   โ”œโ”€โ”€ data/               # Repository implementations, data sources
โ”‚   โ”œโ”€โ”€ database/           # Room database, DAOs, entities
โ”‚   โ”œโ”€โ”€ datastore/          # DataStore preferences
โ”‚   โ””โ”€โ”€ model/              # Domain models
โ”œโ”€โ”€ feature/
โ”‚   โ”œโ”€โ”€ transaction/        # Transaction list, create/edit, item components
โ”‚   โ”œโ”€โ”€ account/            # Account management
โ”‚   โ”œโ”€โ”€ budget/             # Budget tracking
โ”‚   โ”œโ”€โ”€ analysis/           # Charts and analytics
โ”‚   โ””โ”€โ”€ category/           # Category management
โ””โ”€โ”€ docs/                   # Documentation and screenshots

Contributing

Contributions are welcome and encouraged! Whether it's a bug fix, new feature, or documentation improvement โ€” every PR helps.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please feel free to file an issue for bugs, suggestions, or feature requests.


Roadmap

  • PDF export for transaction reports
  • Full multi-currency conversion with live exchange rates
  • Recurring transactions (auto-generated on schedule)
  • Biometric app lock
  • Widget for home screen balance overview
  • Cloud sync/backup

License

Expense Manager is distributed under the terms of the Apache License (Version 2.0). See the LICENSE file for details.

Copyright 2023 Naveen Kumar Kuppan

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0
nkuppan/expensemanager | GitHunt