A modern Kotlin-based Android app for personal finance management.
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.
- ๐ธ 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.
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
- 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
- Room โ Local database for users and transactions
- DataStore โ Lightweight persistence for user preferences
- Repository Pattern โ Single source of truth connecting API and database
- Frankfurter.dev API โ Real-time currency exchange rates
- 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
- Material Design 3 โ Modern and consistent Android design system
- Jetpack Compose โ Modern declarative UI toolkit for building responsive layouts.
- Clone the repository
git clone https://github.com/M-Stasiak/CashFlow_MobileApp.git cd CashFlow_MobileApp - Open the project in Android Studio (latest version).
- Sync Gradle to download all dependencies.
- Run the app on an emulator or a physical device (Android 7.0+).
- (Optional) Ensure you have internet access for currency rate fetching via the Frankfurter API.
- Frankfurter API โ Used to fetch live currency exchange rates.
Example endpoint:https://api.frankfurter.dev/v1/latest?from=USD&to=EUR
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) |
+--------------------+ +-------------------+
- 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.
| Login Screen | Dashboard | Receipt Scanner |
|---|---|---|
![]() |
![]() |
![]() |
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.


