InvestFolio is a modern Android application designed to empower users in managing their investment portfolios effectively. Leveraging the Model-View-Intent (MVI) architecture, the app provides a seamless and reactive user experience.
- List Display: Show a list of investments.
- Sorting: Sort investments by value in ascending or descending order.
- Indicators: Display up/down arrows based on whether the current value is greater or less than the principal amount.
- Detail View: View detailed information for a selected investment.
- Error Handling: Manage various JSON response scenarios including empty, malformed, and error responses.
- Kotlin: Programming language used for Android development.
- Jetpack Compose: Modern toolkit for building native Android UI.
- MVI Architecture: Model-View-Intent architecture for state management.
- Hilt: Dependency Injection framework.
- Coroutines: For asynchronous programming.
- Material Design: Design principles for UI/UX.
- Timber: A logging library for efficient debugging.
The app follows the MVI (Model-View-Intent) architecture to manage state and data flow effectively. MVI Architecture Diagram
- InvestmentRepository: Handles data retrieval from JSON files.
- InvestmentMapper: Transforms raw data into usable models.
- InvestmentApp: Main composable function setting up navigation and top bar.
- DataScreen: Displays the list of investments.
- DetailScreen: Shows detailed information for a selected investment.
- HeaderBar: Top bar with dynamic title and navigation actions.
- InvestmentViewModel: Manages user interactions and updates the state.
- User Interaction: The user interacts with the UI (View), triggering actions.
- Intent Handling: These actions are processed by Intent, which updates the ViewModel.
- State Management: The ViewModel processes the actions and retrieves or updates data from the Model.
- Model Updates: The Model handles business logic and data operations.
- UI Update: The ViewModel sends state updates back to the View, reflecting changes in the UI.
investments.json
: Contains a list of investments.investments-empty.json
: Simulates an empty investment list.investments-malformed.json
: Simulates a malformed response.investments-error.json
: Simulates an error response.
-
Clone the Repository:
git clone https://github.com/your-username/investment-portfolio-app.git
-
Open in Android Studio:
- Open the cloned project in Android Studio.
-
Build and Run:
- Ensure you have a device or emulator set up.
- Build and run the project.
Include screenshots of the app to showcase its functionality and design.
investmentfolio.webm
Feature | Screenshot |
---|---|
Home Screen | |
Details Screen |