Skip to content

shub39/FinTrace

Repository files navigation

FinTrace

A Mutual Fund Tracker, Part of Groww Intern Assignment

Features

  • 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

Screenshots

1 2 3
4 5 6

Architecture

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
Loading
  • 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).

Libraries Used

  • UI & Design:

  • 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.

Build Instructions

Prerequisites

  • Android Studio Ladybug or newer.
  • JDK 17 or higher.

Steps to Build

  1. Clone the repository:
    git clone https://github.com/shub39/FinTrace.git
  2. Open the project in Android Studio.
  3. Sync Project with Gradle Files to download all dependencies.
  4. Build the APK:
    • Go to Build > Build Bundle(s) / APK(s) > Build APK(s).
    • Alternatively, run the following command in the terminal:
      ./gradlew assembleDebug
  5. Run the app:
    • Select your device/emulator and click the Run button in Android Studio.
    • Or use the command:
      ./gradlew installDebug

About

[Assignment] A Mutual Fund Tracker, Part of Groww Intern Assignment

Resources

Stars

Watchers

Forks

Contributors

Languages