ДЗ
Проект.
**Функциональность**
1. Вы можете выбрать тему приложения самостоятельно, это может быть клон Кинопоиска, трекер курса валют, todo-лист и т.п.
2. Ограничений по темам нет, но есть обязательные требования по функциональности:
3. В приложении должно быть минимум 3-4 экрана.
4. Добавьте в приложение сетевое взаимодействие. Вы можете использовать открытые API, например, из этого списка: Public APIs, использовать BaaS-сервисы или реализовать собственный бэкенд.
5. Большое внимание уделите дизайну приложения — он должен быть консистентным и аккуратным.
**Архитектура и стек технологий**
1. Проект должен быть реализован по Single Activity Application паттерну, то есть в приложении должна использоваться только одна активити, а остальные экраны реализуются через фрагменты или Compose.
2. Навигацию можно организовать с использованием библиотеки Navigation Component или другой популярной библиотеки.
3. Для презентационного слоя используйте архитектуру MVVM/MVI. Если будете использовать MVI, можете сделать самописный вариант или взять популярную библиотеку (при использовании сторонней библиотеки согласуйте это предварительно с руководителем курса).
4. Сделайте разбивку на слои. Слоистая или Чистая архитектура — выбирайте сами.
5. Желательно использовать Jetpack Compose, а не фрагменты, но это не обязательно.
6. Приложение должно быть многомодульным — декомпозируйте фичи по модулям.
7. Обязательно используйте DI для организации архитектуры. Желательно Dagger2 или Hilt; можно использовать Koin, если будете делать KMP-проект.
8. Для асинхронных операций используйте Kotlin Coroutines.
9. Для сетевого взаимодействия используйте Retrofit/Ktor. Для сериализации/десериализации JSON — Gson, Moshi или Kotlin Serialization.
10. Вы можете сделать проект с поддержкой KMP. Это будет плюсом, но не обязательно.
11. Покройте unit тестами 5 классов. Обязательно должна быть покрыта ViewModel (или её аналог, если используете MVI). Напишите UI тесты для одного пользовательского сценария.
12. Подключите к проекту статический анализатор Detekt.
**Презентация**
- В репозиторий проекта добавьте описание приложения: что оно делает, какая используется архитектура (можно нарисовать схему) и добавьте скриншоты.