Skip to content

Latest commit

 

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

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

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages