A simple and intuitive Android app to track your daily expenses and income. Built with Kotlin and Jetpack components.
- Track Expenses & Income: Easily add, edit, and delete your financial transactions
- Category Management: Organize expenses by categories (Groceries, Entertainment, Travel, etc.)
- Custom Categories: Add your own categories beyond the defaults
- Monthly Overview: View expenses and income by month with easy navigation
- Category Drill-Down: Tap on any category to see all expenses under it
- Balance Summary: See your income, expenses, and balance at a glance
- Data Backup: Export and import your data as JSON files
| Home Screen | Categories | Add Expense |
|---|---|---|
| Add Income | Month Picker |
|---|---|
- Language: Kotlin
- Architecture: MVVM (Model-View-ViewModel)
- Database: Room Persistence Library
- UI Components:
- Material Design Components
- ViewPager2 with TabLayout
- RecyclerView with ListAdapter
- CardView
- Async Operations: Kotlin Coroutines
- Lifecycle: LiveData, ViewModel
app/src/main/java/com/expensetracker/
├── data/
│ ├── AppDatabase.kt # Room database setup
│ ├── Expense.kt # Expense entity
│ ├── ExpenseDao.kt # Expense data access object
│ ├── Income.kt # Income entity
│ ├── IncomeDao.kt # Income data access object
│ ├── Category.kt # Category entity
│ ├── CategoryDao.kt # Category data access object
│ ├── Repository.kt # Data repository
│ └── BackupManager.kt # Import/Export functionality
└── ui/
├── MainActivity.kt # Main activity with tabs
├── MainViewModel.kt # Shared ViewModel
├── ExpenseListFragment.kt # Expenses list tab
├── IncomeListFragment.kt # Income list tab
├── CategoryListFragment.kt # Categories tab
├── CategoryExpensesActivity.kt # Category drill-down
├── ExpenseAdapter.kt # Expense list adapter
├── IncomeAdapter.kt # Income list adapter
├── CategoryAdapter.kt # Category list adapter
└── ViewPagerAdapter.kt # Tab adapter
- Groceries
- Entertainment
- Cab/Ride
- Restaurant
- Travel
- Gifts
- Utilities
- Shopping
- Health
- Other
- Android Studio Arctic Fox or later
- Android SDK 21 or higher
- Kotlin 1.5+
-
Clone the repository:
git clone https://github.com/yourusername/ExpenseTracker.git
-
Open the project in Android Studio
-
Sync Gradle and build the project
-
Run on an emulator or physical device
- Tap the floating action button (+)
- Enter the amount
- Select a category from the dropdown
- Add an optional description
- Select the date
- Tap "Save"
- Navigate to the "Categories" tab
- Tap on any category to see all expenses under it
- Tap on an expense to edit it
- Use the left/right arrows in the header to navigate months
- Tap on the month name to open the month picker
- Tap the settings icon (gear)
- Choose "Export Data" to save to Downloads folder
- Choose "Import Data" to restore from a JSON file
This project is licensed under the MIT License - see the LICENSE file for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request