Skip to content

lzaytseva/FlightFinder

Repository files navigation

Тестовое задание для Effective Mobile

Суть задания

Разработать фронтенд приложения для поиска авиабилетов

Используемые технологии и инструменты

  • Kotlin
  • Kotlin coroutines
  • Koin
  • ViewBinding
  • RecyclerView, DiffUtil
  • Clean Architecture (MVVM)
  • Single Activity
  • Multi-module

Функционал приложения

Основной функционал реализован для сценария поиска, для остальных элементов меню реализованы заглушки.

Поиск - первый вход

  • Предложения билетов в другие города на концерты (хардкод)
  • Сохранение последнего места отправления (сохранется в shared prefs)
  • При нажатии на поле отправления открывается модальное окно

Поиск - модальное окно

  • Отображаются подсказки (хардкор) по разным типам билетов: на выходные, куда угодно, горящие билеты.
  • Список популярных мест, при клике название города подставляется в поле назначения
  • При клике на кнопку поиска на клавиатуре (в ТЗ не было указания по какой механике должен осуществляться поиск, только то, что после заполнения поля, дебаунс для текущей логики показался неподходящим) осуществляется "поиск" и переход на след экран

Поиск - детали путешествия

  • Можно выбрать дату отправления / возвращения
  • Предложения билетов от разных авиакомпаний с расписанием (хардкод)
  • По кнопке "посмотреть все билеты" открывается след экран

Все билеты

  • Информация о маршруте, количестве пассажиров (хардкод) и классе (хардкод)
  • Список билетов с информации о времени в пути, отправлении, прибытии, аэропортах

Пример использования

FlightFinder.mp4

Инструкция по установке

Скачать apk в релизах:

Get it on GitHub

Или: Скачать код, открыть в студии и запустить на устройстве/эмуляторе

Комментарии к ТЗ

  • В изначальном макете не использовался курсив и в ТЗ на скринах тоже обычный текст. Макет был в какой-то момент обновлен и некоторые текстовые элементы изменились. Я придерживалась изначального макекта (несмотря на пункт в тз, что должно быть полное соответствие макету), т.к. мне показалось, что единый стиль выглядит лучше чем микс обычного текста и курсива.
  • adapter delegates не нашла где применить, т.к. все списки из одинаковых по типу элементов

Что хотелось, но не успелось

  • Окончательный рефакторинг и вынос всех размеров на макетах в ресурсы, выделение используемого в нескольких местах кода в одно место
  • Осмысленная обработка ошибок (на данный момент списки, которые не удалось загрузить, просто не отображаются)
  • Добавить состояние загрузки, т.к. не все списки моментально подгружаются.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages