Skip to content

BiryukAl/MoviesApp

Repository files navigation

Movies App

Do: Бирюков Aлександр

Contact: Telegram, HH.ru

Test task:

Main:

[+] 1. На главном экране необходимо отображать список популярных фильмов.

[+] 2. В каждой карточке фильма на главной странице должны содержаться следующие элементы:

  • 2.1 Наименование фильма.
  • 2.2 Изображение-постер фильма.
  • 2.3 Год выпуска.

[+] 3. При клике на карточку открывается экран с постером фильма, описанием, жанром, страной производства.

[+] 4. Если сеть недоступна или в процессе загрузки произошла ошибка, необходимо предусмотреть уведомление пользователя об этом.

Option:

[-] 1. При смене ориентации устройства, список фильмов занимает только 50% экрана, во второй половине будет отображаться описание фильма.

[+] 2. На главном экране присутствуют разделы «Популярное» и «Избранное». При длительном клике на карточку, фильм помещается в избранное и хранится в базе данных. Карточки фильмов из избранного доступны в оффлайн-режиме.

[+] 3. При просмотре популярных, выделяются фильмы, находящиеся в избранном.

[+] 4. В разделах доступен поиск фильмов по наименованию (в соответствии с выбранным разделом).

[+] 5. Обеспечена общая плавность и стабильность приложения.

[+] 6. Во время длительных загрузок, отображаются шиммеры/прогресс бары.

[-] 7. Ответы от API должны быть закешированы хотя бы на время сессии.

[-] 8. Приложение покрыто UNIT тестами.

Result:

Screeen Popolar Screeen Popolar Dark Screeen Favorite Screeen Details
Photo Photo Photo Photo
Screen Search Screen Not Found Screen Error Network Screen Alert Add Film
Photo Photo Photo Photo

Description:

1) Design:

Figma Design All Version Photo Figma Link

2) Modules:

  • app
    • core
      • db
      • designsystem
      • navigation
      • network
      • utils
      • widget
    • feature
      • details
        • api
        • impl
      • favorites
        • api
        • impl
      • popular
        • api
        • impl
      • search
        • api
        • impl

3) Presentation Layer

  • JetpackCompose
  • MVI
  • Navigation: Voyager
  • Coil

4) DI:

Koin

5) Data:

Cach: Realm Network: Ktor + Kotlin Serialization

7) Dependency versioning via .toml file