Данный проект является домашним заданием, посвященным миграции с MVVM на MVI (Model-View-Intent).
Проект представляет собой приложение для отображения криптовалют с возможностью добавления монет в избранное. Текущая реализация использует архитектуру MVVM с ViewModel и StateFlow.
- ViewModel:
CoinListViewModel,FavoriteViewModelуправляют состоянием экранов - State:
CoinsScreenState,FavoriteCoinsScreenStateописывают состояние UI - Use Cases: Бизнес-логика вынесена в отдельные use case классы
- Repository Pattern: Доступ к данным через репозитории
Необходимо мигрировать существующую MVVM архитектуру на MVI паттерн, сохранив текущую функциональность приложения.
Можно выбрать любой из следующих подходов для MVI:
- MVIKotlin - Kotlin Multiplatform MVI framework
- OrbitMVI - Simple MVI for Android & Multiplatform
- Circuit - A Compose-driven architecture for Kotlin and Android apps
- Redux-Kotlin - Redux implementation for Kotlin
- Собственная реализация MVI - Создание MVI архитектуры без внешних библиотек
- ✅ Выделение Intent'ов для всех пользовательских действий
- ✅ Единое immutable состояние для каждого экрана
- ✅ Однонаправленный поток данных (Unidirectional Data Flow)
- ✅ Отсутствие мутабельного состояния в UI слое
- ✅ Сохранение всей текущей функциональности