Skip to content

Serfodi/VK_interview

Repository files navigation

Тестовое задание для ВК

API Unsplash

Описание

Состоит из экрана коллекции с возможностью поиска фото.

Видое с демонстрацией приложения Google drive

Экран поиска

  1. Отображает строку ввода поискового запроса
  2. Сохраняет историю поиска (до пяти последних запросов)
  3. В момент начала ввода отображаются элементы-подсказки с ранее введенными значениями. По мере ввода символов подсказки фильтруются по вхождению без учета регистра.
  4. Поисковый запрос выполняется по завершении ввода при помощи элементов управления клавиатуры
  5. В каждом элементе поисковой выдачи отображено превью-изображение и описание.
  6. Возможность выбирать контента по цвету.
  7. Реализована паггинация поиска.
  8. Работа Offline, запоминает последний запрос поиска и возможностью его удалять.

Нефункциональные функции

  1. Каждый экран поддерживает отображение трёх состояний:
    • Отображение контента
    • Состояние загрузки
    • Состояние отсутствия контента
  2. Локализация на два языка
    • Русский
    • Английский
  3. Поддержка темный темы
  4. Поддержка Voice Over
  5. iOS 16 и выше
  6. Бизнес часть покрыта тестами

Технологии

API - Unsplash API

  • Swift 5
  • UIkit
  • URLSession
  • Async/await
  • URLCache
  • Realm
  • Combine

Архитектура: Чистая архитектура

UIKit потому что мне легче его оптимизировать и я лучше его понимаю. Особенно когда нужно сделать производительную коллекцию.

Realm для меня новая технология (странненькая, с нюансом) не firebase конечно), но в целом понравилась (не успел нормально ее изучить). Я не использовал SwiftData потому что она доступна с iOS 17. Пощадите мой iPhone 8 c iOS 16(((

Combine для меня тоже еще не совсем обкатаная технология. Только пробою с ней работать. Хотя я видел связку Realm+Combine, выглядит интересно, но требует время для понимания.

И нормально замерить fps можно с помощью Xcode instrument Core Animation FPS. Моя реализация хромает(

P.S. Футажи помог записать друг. Я использовал TestFlight для распространения.

P.S. Не обращайте внимание на gitflow) и комиты) оно страшненькие.

About

Тестовое задание VK

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages