Skip to content

Latest commit

 

History

History
64 lines (46 loc) · 3.65 KB

requirements.md

File metadata and controls

64 lines (46 loc) · 3.65 KB

Техническое задание

Подробное тз по этапам работы

Первый этап

Написать приложение с одним экраном на котором будет скролящийся список гифок из раздела популярные с сайта giphy. Реализовать динамическую загрузку спика, а так же все необходимые состояния загрузки/ошибки итд. При возникновении ошибок у пользователя должна быть возможность повторить выполнение действия завершившегося с ошибкой.

  • При первичной ошибке загрузке списка должно быть сообщение по центру экрана и кнопка повторить

  • При ошибке загрузки конкретной гифки вместо нее должна отображаться кнопка повторить загрузку

  • Во время загрузки гифки должен быть прогресс бар (на данном этапе достаточно просто крутилки)

  • Если пользователь долистал до конца списка до загрузки следующей его части внизу списка должна отображаться крутилка

  • При ошибки догрузки списка внизу списка должна быть кнопка повторить загрузку

  • Приложение должно корректно реагировать на поворот экрана

  • Код должен быть написан "по клину"

  • Должно быть разбиение на три основных пакета

    • Ui
    • Domain
    • Data/Repository/Api/Services (вообще по клину он Data но можно разбить на секолько по желанию)
  • Приложение должно использвать dagger2 для предоставления зависимостей

  • Необходимо заранее заложить использование подходов и библиотек: Single activity application && google navigation components

  • На Domain слой нужно написать юнит тесты

  • На ViewModel нужно написать юнит тесты

Опционально

Реализовать искусственное замедление сетевого взаимодействия, а так же возможность завершать ошибкой случайные закпросы.

Желательно это сделать максимально обобщенно, что бы не засорять код дебаг вставками, в идеале вся логика искуственного замедления должна быть только в debug

Второй этап

// TODO

Библиотеки

Обязательные к использованию библиотеки и подходы

  • Kotlin
  • Coroutines
  • MVVM (Google viewModel without LiveData)
  • Dagger2
  • Google Navigation Component
  • Ktor OR Retrofit
  • Kotlin serialization
  • Room

Запрещенные к использыванию библиотеки

  • Compose
  • Giphy sdk
  • Glide
  • Gson
  • LiveData

Прочие библиотеки

Так же можно на свое усмотрение использовать любые дополнительные библиотеки (ну кроме запрещенных конеш)