A Mutual Fund Tracker, Part of Groww Intern Assignment
- Explore Screen with popular categories
- Watchlist for user created Watchlist folders
- Product Analysis Screen for each fund analyzing NAV history with a graph
- View All Screen Paged list of all Funds available
- Search Screen Users can search Funds by typing
![]() |
![]() |
![]() |
|---|---|---|
![]() |
![]() |
![]() |
This project follows the MVI (Model-View-Intent) architectural pattern combined with Clean Architecture principles to ensure a scalable, maintainable, and testable codebase.
graph TD
subgraph Presentation_Layer
UI[Compose UI]
VM[ViewModel]
State[State]
end
subgraph Domain_Layer
Repo_Interface[Repository Interface]
Models[Domain Models]
end
subgraph Data_Layer
Repo_Impl[Repository Implementation]
Local[Room Database]
Remote[Ktor Network Client]
end
UI -->|Intent| VM
VM -->|Updates| State
State -->|Renders| UI
VM -->|Calls| Repo_Interface
Repo_Impl --> Repo_Interface
Repo_Impl --> Local
Repo_Impl --> Remote
- Presentation Layer: Built with Jetpack Compose and Navigation 3. ViewModels manage the state using Kotlin Flows and expose it to the UI.
- Domain Layer: Contains the core business logic, domain models, and repository interfaces. It is independent of any other layer.
- Data Layer: Responsible for data sourcing from the Room database (local) and Ktor-based API (remote).
-
UI & Design:
- Jetpack Compose - Modern toolkit for building native UI.
- Material 3 - Latest version of Google's open-source design system.
- MaterialKolor - Dynamic Material 3 color schemes.
- Compose Charts - For fund performance visualization.
-
Dependency Injection:
- Koin - Pragmatic lightweight dependency injection framework.
-
Networking & Data:
- Ktor - Asynchronous client for HTTP requests.
- Room - SQLite object mapping library for local caching.
- Kotlinx Serialization - Kotlin multiplatform / multi-format serialization.
- Paging 3 - For efficient loading of large fund lists.
- Android Studio Ladybug or newer.
- JDK 17 or higher.
- Clone the repository:
git clone https://github.com/shub39/FinTrace.git
- Open the project in Android Studio.
- Sync Project with Gradle Files to download all dependencies.
- Build the APK:
- Go to
Build > Build Bundle(s) / APK(s) > Build APK(s). - Alternatively, run the following command in the terminal:
./gradlew assembleDebug
- Go to
- Run the app:
- Select your device/emulator and click the Run button in Android Studio.
- Or use the command:
./gradlew installDebug





