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