A minimalist, private, and offline-first personal expense tracker built with Jetpack Compose.
Financy is crafted to bring tranquility and clarity to daily financial tracking. Rather than overwhelming you with endless forms and aggressive notifications, Financy delivers a calming, intuitive interface that makes logging expenses and income effortless.
Everything stays on your device — 100% offline, zero trackers, and no account required.
-
⚡ Effortless Transaction Logging
- Switch smoothly between Money Out (expenses) and Money In (income).
- Quick amount keypad entry with currency formatting (INR ₹).
- Pre-curated, visually distinct expense and income categories with icons.
- Optional memo notes for context.
-
🌙 4:00 AM Financial Day Rule
- Financy understands real human habits: late-night expenses logged after midnight (before 4:00 AM) are intuitively counted as part of the previous night's financial day.
-
📊 Monthly Overview & Analytics
- Expenditure Donut Chart: Interactive category-wise spending breakdown with percentage share.
- Daily Money Spend: Live summary of today's total outflow and inflow.
- Money In vs. Money Out: Capacity bar comparing monthly earnings against expenditures, displaying your healthy buffer percentage.
- Month Navigation: Easily step through past or future months to inspect historical records.
-
📝 Recent Activity & Management
- Chronological transaction feed for the selected month.
- Tap any record to view details, edit amount/date/category/note, or delete entries.
-
🔒 100% Offline & Private
- Backed by Android's Room SQLite database.
- Your financial data never leaves your device.
- UI Framework: Modern declarative UI using Jetpack Compose & Material 3.
- Architecture: MVVM (Model-View-ViewModel) with Unidirectional Data Flow (UDF).
- Asynchronous & Reactive: Kotlin Coroutines & StateFlow.
- Persistence: Room Database (SQLite) with Type Converters.
- Language: 100% Kotlin.
- Design Language: Custom calm aesthetic tokens (emerald/mint green palette, glassmorphic surfaces, rounded squircles).
Financy/
├── app/
│ ├── src/
│ │ ├── main/
│ │ │ ├── java/com/financy/
│ │ │ │ ├── data/
│ │ │ │ │ ├── local/database/ # Room Database & Type Converters
│ │ │ │ │ └── repository/ # RecordRepository
│ │ │ │ ├── domain/
│ │ │ │ │ ├── model/ # Record & TransactionType models
│ │ │ │ │ └── util/ # DateUtils & CurrencyFormatter
│ │ │ │ ├── ui/
│ │ │ │ │ ├── addrecord/ # Add Record / Expense Screen & ViewModel
│ │ │ │ │ ├── components/ # Top bar, Charts, Keypad, Nav bar
│ │ │ │ │ ├── theme/ # Compose Theme, Color palette, Typography
│ │ │ │ │ └── visualization/ # Monthly Overview Screen & ViewModel
│ │ │ │ └── MainActivity.kt # App Entry Point & Tab Controller
│ │ │ └── res/
│ │ │ ├── drawable/ # Logo & Vector Assets
│ │ │ ├── mipmap-*/ # Adaptive Launcher Icons
│ │ │ └── values/ # Strings, Colors, Themes
│ │ └── test/ # Unit Tests
│ └── build.gradle.kts
├── gradle/
└── README.md
- Android Studio: Hedgehog | 2023.1.1 or newer (Ladybug / Iguana recommended)
- JDK: Java 17 or Java 21
- Android SDK: Minimum SDK 26 (Android 8.0), Target SDK 34/35
-
Clone the repository:
git clone https://github.com/artistic-programmer/Financy.git cd Financy -
Open the project in Android Studio.
-
Let Gradle sync and download dependencies.
-
Run on an emulator or physical device:
./gradlew assembleDebug
Or click Run 'app' in Android Studio.
Execute the unit test suite with:
./gradlew testDebugUnitTestThis project is licensed under the MIT License — see the LICENSE file for details.
