Skip to content

M-Stasiak/CashFlow_MobileApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

20 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ’ธ CashFlow MobileApp

A modern Kotlin-based Android app for personal finance management.

Kotlin Android AndroidStudio MVVM License

CashFlow is a modern Android application designed to make personal finance tracking effortless. It combines expense management, receipt scanning, and real-time currency conversion into one seamless experience. Stay on top of your spending habits, keep your transactions organized, and let CashFlow handle the details for you โ€” all with modern Android tools and smooth UX.


๐Ÿ“ฑ Core Features

  • ๐Ÿ’ธ Expense & Income Tracking โ€“ Record, categorize, and manage your daily transactions effortlessly.
  • ๐Ÿ“Š Transaction Overview โ€“ Keep track of your spending and earnings history in one clean interface.
  • ๐Ÿ“ธ Receipt Scanning โ€“ Take a photo of a receipt and automatically extract the amount using text recognition.
  • ๐ŸŒ Live Currency Rates โ€“ Fetch real-time exchange rates from Frankfurter API.
  • ๐Ÿ” User Authentication (Room Database) โ€“ Local login with SHA-256 password hashing.
  • ๐Ÿ’พ Local Storage (Room + DataStore) โ€“ Save users and transactions on-device.
  • โš™๏ธ Smart Sensors (UX Enhancements) โ€“
    • Shake the device to auto logout.
    • Flip the phone upside down to dim the screen.
  • ๐Ÿงญ MVVM + Hilt + Navigation โ€“ Modular, scalable architecture for clean code and maintainability.

๐Ÿง  Tech Stack

Built with modern Android technologies and Jetpack components for performance, scalability, and clean architecture.

  • Kotlin 2.0.21
  • Android Studio Meerkat | 2024.3.1
  • Min SDK 24
  • Target SDK 35

๐Ÿ—๏ธ Architecture & Design

  • Kotlin โ€“ Main programming language
  • MVVM (Modelโ€“Viewโ€“ViewModel) โ€“ Reactive architecture for maintainable UI
  • Hilt (Dagger) โ€“ Dependency injection for modular design
  • Coroutines & Flow โ€“ Asynchronous and reactive data handling
  • Jetpack Navigation โ€“ Type-safe and structured screen navigation

๐Ÿงฉ Data & Persistence

  • Room โ€“ Local database for users and transactions
  • DataStore โ€“ Lightweight persistence for user preferences
  • Repository Pattern โ€“ Single source of truth connecting API and database

๐ŸŒ APIs & Networking

  • Frankfurter.dev API โ€“ Real-time currency exchange rates

๐Ÿ“ท Device & ML Features

  • CameraX โ€“ Built-in camera support for receipt scanning
  • ML Kit Text Recognition โ€“ Extract text and amounts from images
  • Accelerometer Sensors โ€“ Used for shake and flip detection

๐Ÿงฉ UI & UX

  • Material Design 3 โ€“ Modern and consistent Android design system
  • Jetpack Compose โ€“ Modern declarative UI toolkit for building responsive layouts.

๐Ÿš€ Setup & Installation

  1. Clone the repository
    git clone https://github.com/M-Stasiak/CashFlow_MobileApp.git
    cd CashFlow_MobileApp
  2. Open the project in Android Studio (latest version).
  3. Sync Gradle to download all dependencies.
  4. Run the app on an emulator or a physical device (Android 7.0+).
  5. (Optional) Ensure you have internet access for currency rate fetching via the Frankfurter API.

๐ŸŒ API Reference

  • Frankfurter API โ€“ Used to fetch live currency exchange rates.
    Example endpoint:
    https://api.frankfurter.dev/v1/latest?from=USD&to=EUR

๐Ÿงฉ App Architecture Overview

CashFlow follows the MVVM (Modelโ€“Viewโ€“ViewModel) architecture pattern to ensure a clean separation of concerns, scalability, and testability.

           +-------------------------------------+
           |              UI Layer               |
           | (MainActivity + Composable Screens) |
           |    โ†“ observes state via ViewModel   |
           +------------------โ–ฒ------------------+
                              |
                              | StateFlow
                              |
             +----------------โ–ผ----------------+
             |          ViewModel Layer        |
             |  - Handles UI logic             |
             |  - Exposes state to UI          |
             |  - Calls repository functions   |
             +----------------โ–ฒ----------------+
                              |
                              | suspend functions
                              |
             +----------------โ–ผ----------------+
             |          Repository Layer       |
             |  - Combines local + remote data |
             +----------------โ–ฒ----------------+
                              |
             +----------------+----------------+
             |                                 |
   +---------โ–ผ----------+            +---------โ–ผ---------+
   |     Local Data     |            |    Remote Data    |
   | (Room / DataStore) |            | (Frankfurter API) |
   +--------------------+            +-------------------+

๐Ÿ—๏ธ Key Principles

  • Single Source of Truth: Repository abstracts data from Room and network sources.
  • Reactive UI: LiveData or StateFlow updates the UI automatically.
  • Dependency Injection: Hilt provides lifecycle-safe dependencies.
  • Coroutines: Handle asynchronous tasks efficiently.
  • Separation of Concerns: Each layer has a clear responsibility.

๐Ÿ–ผ๏ธ Screenshots

Login Screen Dashboard Receipt Scanner
Login Dashboard Scanner

๐Ÿ“œ License

This project is licensed under the MIT License.

Note: This is an educational project created solely for learning purposes and not intended for commercial use.

About

๐Ÿ’ธ A modern Android app for managing personal finances. Track expenses, scan receipts, check live currency rates, and stay in control of your budget.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages