Smart. Secure. Simple.
Your personal finance companion in the pocket.
SpendWise is a modern, offline-first Android expense tracker built to give users complete control over their financial data. Designed with the latest Material Design 3 guidelines, it offers a seamless and aesthetically pleasing user experience without ensuring any data leaves the device.
Whether you're tracking daily coffee runs, managing monthly bills, or splitting costs with friends, SpendWise makes it effortless.
| Dashboard | Add Expense | Monthly Analysis | Settings |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
- ** Expense Tracking**: Quickly add, edit, and delete daily expenses.
- ** Interactive Dashboard**: Visualize monthly spending with beautiful bar charts and summaries.
- ** Category Management**: Create and manage custom categories with colorful icons.
- ** Smart Filtering**: Filter transaction history by date range or specific categories.
- ** Search & History**: View detailed transaction logs with swipe-to-delete gestures.
- ** Split Expenses**: Easily divide bills among friends or groups and track who owes what.
- ** Savings Goals**: Set financial targets and track your progress visually.
- ** Recurring Transactions**: Automate regular payments like rent or subscriptions.
- ** Secure Login**: Protect your data with a local PIN-based authentication system.
- ** Offline First**: No internet required. Your data stays on your device, always.
- ** Customization**: Native Light Theme support with dynamic colors.
This project adheres to modern Android development best practices.
- Language: Kotlin
- Architecture: MVVM (Model-View-ViewModel)
- UI Framework: XML with Material Components 3
- Asynchronous: Coroutines & Flow
- Dependency Injection: Manual / ViewModelFactory
- Local Database: Room Persistence Library
- Navigation: Jetpack Navigation Component
- Charting: MPAndroidChart
SpendWise follows the MVVM (Model-View-ViewModel) architectural pattern to ensure separation of concerns and testability.
- Model (Data Layer):
- Room Database: The single source of truth for all data.
- Repository: Mediates between the ViewModel and the Database.
- DAO (Data Access Object): Defines database interactions.
- ViewModel:
- Holds UI state and survives configuration changes.
- Exposes data to the View via
LiveData/Flow.
- View (UI Layer):
- Fragments: Observe the ViewModel and update the UI accordingly.
- XML Layouts: Define the visual structure.
com.example.spendwise
├── data # Data layer (Room entities, DAOs, Repo)
│ ├── AppDatabase.kt
│ ├── Expense.kt
│ ├── ExpenseDao.kt
│ ├── ExpenseRepository.kt
│ └── ...
├── ui # UI layer (Fragments, ViewModels, Adapters)
│ ├── fragments # All app screens (Home, AddExpense, History, etc.)
│ ├── viewmodel # Shared ViewModels
│ └── SpendWiseApp.kt # Application class
├── MainActivity.kt # Single Activity container
└── utils # Helper classes and extensions
The app uses a relational database structure powered by Room.
- Expense Entity: Stores transaction amount, date, description, and category ID.
- Category Entity: Stores category names, icons, and colors.
- RecurringExpense: Definitions for automated transaction creation.
- SavingsGoal: Tracks target amounts and current progress.
- SplitGroup / SplitMember: Relational tables for managing shared expenses.
- Material Design 3: Utilizes the latest Android design language for a cohesive look.
- Single Activity Architecture: Uses one
MainActivityhosting multipleFragments. - Responsive: Layouts adapt to different screen sizes and orientations.
- Accessibility: High contrast colors and properly labeled elements.
- Clone the Repository:
git clone https://github.com/chsaad-dev/SpendWise.git
- Open in Android Studio:
- Select
File > Openand choose the project directory. - Let Gradle sync complete.
- Select
- Build the Project:
- Go to
Build > Make Project(Ctrl+F9).
- Go to
- Run on Device/Emulator:
- Connect an Android device via USB or start an emulator.
- Click
Run(Shift+F10).
- Android Studio: Iguana (2023.2.1) or newer recommended.
- Android SDK: API Level 34 (UpsideDownCake).
- Min SDK: API Level 24 (Android 7.0 Nougat).
- JDK: Java 17 or higher.
- Biometric Authentication: Fingerprint unlock for faster access.
- Cloud Backup: Optional Google Drive sync for data redundancy.
- Multi-Currency Support: Real-time currency conversion APIs.
This project is licensed under the LICENSE.
Android Developer
Passionate about building clean, efficient, and user-friendly mobile applications.
GitHub | [LinkedIn](https://linkedin.com/



