Skip to content

AndrewkaW/practicum-android-diploma

 
 

Repository files navigation

Приложение "Агрегатор вакансий"

Проект представляет собой небольшое приложение для поиска работы, использующее API сервиса HeadHunter. Работа является дипломным проектом Яндекс.Практикума по курсу "Android-разработчик".

Приложение предоставляет следующую функциональность:

  • Поиск вакансий;
  • Указание фильтров для поиска;
  • Просмотр деталей отдельной вакансии;
  • И добавление вакансий в список "Избранного".

Ниже представлен список особенностей различных экранов приложения.

Общие требования

  • Приложение должно поддерживать устройства, начиная с Android 8.0 (minSdkVersion = 26);
  • Приложение поддерживает только портретную ориентацию (portrait), при перевороте экрана ориентация не меняется;
  • Приложение поддерживает темную тему.

Главный экран - экран поиска вакансий

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

Особенности экрана

  • Поиск происходит по всей доступной базе вакансий без учета региона, отрасли компании и уровня зарплаты и валюты.
  • При вводе нового текста в поле ввода мы осуществляем новый поиск с debounce в 2000 миллисекунд.
  • В отдельном элементе списка отображается картинка логотипа компании, которую нужно дополнительно загрузить. В процессе загрузки картинки и в случае ошибки загрузки этой картинки показывается плейсхолдер. Также плейсхолдер отображается, если информации о картинке нет.
  • В зависимости от пришедших с сервера данных информация о вакансии может отображаться несколькими способами:
    • "От XX";
    • "До XX";
    • "От XX до XX";
    • "Зарплата не указана".
  • Если в вакансии указана зарплата, то числа отображаются с разбиением на разряды (то есть 1 000 000, 12 345 678).
  • Зарплата в вакансии может быть указана в разной валюте, не только в рублях. Вот полный список возможных валют:
    • Российский рубль (RUR / RUB)
    • Белорусский рубль (BYR)
    • Доллар (USD)
    • Евро (EUR)
    • Казахстанский тенге (KZT)
    • Украинская гривна (UAH)
    • Азербайджанский манат (AZN)
    • Узбекский сум (UZS)
    • Грузинский лари (GEL)
    • Киргизский сом (KGT)
  • (*) В целях экономии трафика пользователей загрузка результатов поиска происходит постранично (paging) по 20 элементов за раз. Запрос на следующую страницу происходит, когда пользователь доскроллил до последнего доступного элемента списка.

Фильтрация - набор экранов фильтров поиска

Используя настройки фильтра, пользователь может уточнить некоторые параметры поиска, который осуществляется на экране "Поиск". Фильтр позволяет указать:

  • Место работы - регион, населенный пункт, указанный в вакансии как рабочая локация.
  • Отрасль - сфера деятельности организации, разместившей вакансию.
  • Уровень зарплаты - уровень ЗП, соответствующий указанному в вакансии.
  • Возможность скрывать вакансии, для которых не указана ЗП.

Особенности экранов

  • Параметры фильтра не являются обязательными - пользователь может уточнить любой параметр из предложенных, а может не указывать ничего.
  • Настройки параметров фильтра сохранятся даже после закрытия приложения.
  • Поиск по отраслям компании ведется сразу по всем элементам дерева отраслей, без разделения на категории по уровням вложенности.
  • Экраны фильтрации отображаются поверх нижней навигации.
  • Если у пользователя выбрана страна поиска вакансий, то список регионов на экране выбора региона поиска ограничивается регионами указанной страны.
  • Если пользователь выбрал город до выбора страны, то страна подставляется автоматически.
  • Кнопка "Сбросить" появляется, если пользователь указал хотя бы одно значение фильтров.
  • Кнопка "Применить" появляется, если пользователь указал фильтр, отличающийся от предыдущего. Нажатие на кнопку "Применить" приводит к сохранению выбранных настроек фильтра и применению фильтра для всех последующих запросов на поиск вакансий до изменения фильтра.
  • Все настройки фильтра сохраняются автоматически сразу после изменения.

Экран просмотра деталей вакансии

Нажав на элемент списка найденных вакансий (а так же в списке закладок и похожих вакансий), пользователь попадает на экран с подробным описанием вакансии. Помимо уровня ЗП, требуемого опыта и графика работы пользователь может на этом экране увидеть:

  • Информацию о работодателе;
  • Подробное описание вакансии;
  • Перечень требуемых ключевых навыков;
  • Контактную информацию.

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

Особенности экрана

  • Любая часть описания деталей вакансии опциональна, отображение зависит от данных, которые пришли с сервера.
  • Подробное описание вакансии приходит в HTML-формате.
  • При нажатии на элемент списка похожих вакансий открывается новый экран деталей вакансий, который связан с предыдущим (на предыдущий экран можно вернуться, нажав кнопку "Back").
  • Отображение указанной зарплаты и валюты происходит аналогично выдаче поиска вакансий.
  • При нажатии на указанный адрес электронной почты открывается диалог с предложением написать email на этот адрес.
  • При нажатии на указанный номер телефона приложение открывает приложение для звонка, в котором уже отображен номер телефона.
  • Отображение списка похожих вакансий происходит аналогично отображению списка вакансий на экране поиска.
  • Экраны деталей вакансии отображаются поверх нижней навигации.

Экран избранных вакансий

Пользователь может добавлять вакансии в "Избранное", чтобы иметь возможность быстро вернуться к заинтересовавшему его предложению. Добавить вакансию в "избранное" (или удалить из "избранного") можно на экране "Вакансия". На экране списка избранных вакансий пользователь может удалить вакансию из закладок. Все вакансии, добавленные в закладки, можно увидеть на отдельном экране в приложении.

Особенности экрана

  • Вакансии, добавленные в "избранное", можно просматривать без подключения к интернету. Если нет интернета, вместо логотипа компании отображается плейсхолдер и нет перехода в список похожих вакансий.
  • Если пользователь добавляет вакансию в закладки, она сразу появится на экране списка закладок.

Экран информации о команде разработчиков

На экране отображается статический список людей, участвовавших в разработке приложения.

Основной стек

kotlin, sharedpreferences, recyclerview, mvvm, intent, fragment, glide, retrofit2, bottomnavigationview, constraint-layout, androidsdk, livedata, koin, room-database, singleactivity, jetpack-navigation-component, corutine-flow.