Expense Tracker is an Android application developed using Kotlin, Jetpack Compose, and the MVVM architecture. It allows users to manage their expenses efficiently, with features such as adding expenses, viewing notifications for each expense, and visualizing data using Vico graph.
- Add Expenses: Users can add their expenses by specifying the amount, type, and name.
- Notifications: The app sends notifications whenever a new expense is added and stores these notifications for later viewing.
- View Expenses: Users can view their list of expenses.
- Graphical Representation: Expenses are visualized using Vico graph for better understanding.
- Language: Kotlin
- UI: Jetpack Compose
- Architecture: MVVM (Model-View-ViewModel)
- Database: Room
- Notifications: Android NotificationTracker
- Graphs: Vico graph
- Android Studio Dolphin | 2021.3.1 or later
- Android SDK 28 or higher
- Kotlin 1.9.0 or later
-
Clone the repository:
https://github.com/Rudresh07/ExpenseTracker.git
-
Open the project in Android Studio.
-
Build the project:
- Click on
Build > Rebuild Project
or use the shortcutCtrl+Shift+F9
.
- Click on
-
Run the app:
- Click on
Run > Run 'app'
or use the shortcutShift+F10
.
- Click on
The project follows the MVVM architecture:
- Model: Handles data and business logic (Room database entities and DAOs).
- View: UI components built with Jetpack Compose.
- ViewModel: Manages UI-related data and business logic for the UI.
- Launch the app.
- Create an account or log in using Firebase Authentication.
- Explore recipes fetched from the API.
- Upload your own recipes through the app interface.
- Use the ingredient-based recipe generator powered by Gemini.






Handles the creation and management of notifications. It creates notification channels and sends notifications when a new expense is added.
Manages the notification data. It interacts with the NotificationDao
to fetch and add notifications to the database.
The main activity that displays the list of notifications using Jetpack Compose.
To add a new expense, use the ExpenseViewModel
to insert the expense into the database. This will trigger a notification which is handled by NotificationHandler
.
Notifications are stored in the Room database and displayed in NotificationActivity
using Jetpack Compose. Each notification is shown in a card with a white background and includes a timestamp.
The app uses Vico graph to provide graphical representations of expenses. Ensure you have added the Vico graph dependency in your build.gradle
file.