A comprehensive Android application for managing personal finances. Track income, expenses, budgets, and financial goals with a modern, intuitive interface built using Kotlin and Jetpack Compose.
- Multi-Account Management - Track multiple bank accounts, wallets, and etc.
- Smart Categorization - Organize income and expenses with custom categories
- Transaction Tracking - Record income, expenses, and transfers between accounts
- Budget Management - Set budgets with custom periods and track spending limits
- Financial Reports - Visualize financial data with comprehensive reports
- Notifications - Stay informed about financial activities and budget alerts
- Flexible Settings - Customize calendar type, currency, and financial month start date
- Recurring Budgets - Set up repeating budgets for regular expenses (e.g., loan payments)
- Transfer Management - Move money between your own accounts seamlessly
- Custom Financial Month - Define your own financial month start date
- Multi-Currency Support - Manage finances in different currencies
- Calendar Flexibility - Choose between different calendar types
- Platform: Android (API 24+)
- Language: Kotlin
- UI Framework: Jetpack Compose with Material Design 3
- Architecture: MVVM with Clean Architecture principles
- Dependency Injection: Hilt (Dagger)
- Database: Room (SQLite)
- Async Operations: Kotlin Coroutines & Flow
- Data Storage: DataStore (Preferences)
- Networking: Retrofit, OkHttp, Ktor Client
- Build System: Gradle with Kotlin DSL
app/
├── data/
│ ├── api/ # API services (currency exchange)
│ ├── dao/ # Room DAOs
│ ├── datastore/ # DataStore implementations
│ └── repository/ # Repository implementations
├── di/ # Dependency injection modules
├── model/ # Data models and entities
├── navigation/ # Navigation graph and screen definitions
├── service/ # Background services
├── ui/
│ ├── auth/ # Authentication screens
│ ├── components/ # Reusable UI components
│ └── theme/ # Theme configuration
├── util/ # Utility classes
└── view/ # Feature screens
├── accounts/
├── budgeting/
├── categories/
├── dashboard/
├── notifications/
├── reports/
├── settings/
└── transactions/
- Android Studio Hedgehog or later
- JDK 11 or higher
- Android SDK with API 24+
- Clone this repository
git clone https://github.com/Shabnam-Khaqanpoor/Personal-Finance-Manager-Using-Kotlin-and-Jetpack-Compose.git
- Open the project in Android Studio
- Sync Gradle dependencies
- Build and run the application on your device or emulator
- Launch the app and create your account via the Sign Up screen
- Sign in with your credentials
- After signing in, you will land on the Dashboard
- The navigation drawer provides access to all features:
- Dashboard
- Accounts
- Categories
- Transactions
- Reports
- Notifications
- Settings
- Budgets
Navigate to Accounts and add your financial accounts:
- Bank accounts
- Wallets
- Other
Set up Categories for better organization:
- Expense Categories: Food, Transportation, Entertainment, Utilities, Healthcare, etc.
- Income Categories: Salary, Freelance, Investments, Gifts, etc.
Go to Settings to customize:
- First Day of Financial Month: Choose when your financial month starts
- Calendar Type: Select your preferred calendar system
- Currency: Set your primary currency
Navigate to Budgets to create spending limits:
- Choose an expense category
- Set the budget amount
- Define the time period with start and end dates
- Set number of repeats for recurring budgets (useful for loan payments, subscriptions)
- Navigate to Transactions
- Click on "Add Transaction"
- Fill in the required details:
- Type: Choose between Income, Expense, or Transfer
- Category: Select the appropriate category (not required for transfers)
- Account: Choose the source account
- Destination Account: For transfers, select the destination account
- Amount: Enter the transaction amount
- Date: Select the transaction date
- Note: Add optional notes for reference
- Income: Money coming into your account
- Expense: Money spent from your account
- Transfer: Moving money between your own accounts only (not to external accounts). This feature is designed for internal financial management, allowing you to track money movement between your personal accounts (e.g., from checking to savings, from cash to bank account)
- View financial reports
- Monitor budget performance
- Stay updated on budget limits
Sign Up → Sign In → Dashboard
↓
┌───────────────┴───────────────┐
↓ ↓
Setup Phase Daily Usage
↓ ↓
1. Add Accounts → Add Transactions
2. Create Categories → View Reports
3. Configure Settings → Check Notifications
4. Set Up Budgets → Monitor Budgets
- Start with Setup: Complete the initial configuration (accounts, categories, settings) before adding transactions
- Regular Updates: Record transactions promptly for accurate tracking
- Review Reports: Check your financial reports regularly to understand spending patterns
- Budget Monitoring: Keep an eye on budget notifications to stay within limits
- Categorize Properly: Use appropriate categories for better financial insights
The application includes the following screens:
- Sign Up Screen: User registration with account creation
- Sign In Screen: User authentication and login
- Dashboard: Overview of financial status, recent transactions, and quick statistics
- Accounts Management: View, add, edit, and manage multiple financial accounts
- Categories: Organize and manage income and expense categories
- Transactions: Record and view all financial transactions (income, expense, transfer)
- Reports: Visual analytics and insights into spending patterns and financial trends
- Notifications: Alerts and reminders for budget limits
- Settings: Customize app preferences including calendar type, currency, and financial month start date
- Budgets: Create and monitor spending limits with custom periods and recurring options
- Users: User authentication and profile data
- Accounts: Financial account information
- Categories: Income and expense categories
- Transactions: Financial transactions with type, amount, date, and notes
- Budgets: Budget limits with start/end dates and repeat functionality
- Notifications: System notifications and alerts
- Settings: User preferences and app configuration
- BudgetNotificationService: Background service for monitoring budgets and sending alerts