AlexMargina / practicum-android-diploma

От s77sa
1 stars 2 forks source link

Дипломный проект Яндекс.Практикума по курсу "Android-разработчик"

Проект представляет собой стартовую точку для разработки дипломного проекта Яндекс.Практикума по курсу "Android-разработчик".

Предварительная настройка проекта

Добавление секретного токена для API HeadHunter

Для проброса секретного токена, полученных после регистрации приложения для использования API HeadHunter, создайте в корне проекта файл develop.properties и добавьте туда одно свойство:

hhAccessToken=my_access_token

Вместо my_access_token вставьте полученный после регистрации токен доступа к API HeadHunter. После изменения значения синхронизируйте проект.

Файл develop.properties игнорируется при коммитах в Git, поэтому можно не бояться, что значение токена попадёт в открытый доступ. Значения, записанные в файл develop.properties, будут добавлены в приложение на стадии сборки и попадут в специальный объект, который называется BuildConfig. Подробнее про этот объект можно почитать в документации.

Статический анализ

В проекте настроен базовый статический анализатор - detekt. Он проверит наличие большого количества стандартных ошибок при написании Kotlin-кода.

Конфигурационный файл detekt находится здесь. Описание смысла правил можно найти в официальной документации detekt - например, вот правила группы comments.

Чтобы проверить наличие ошибок detekt в проекте, откройте терминал и выполните команду ./gradlew detektAll. После выполнения в выводе терминала вы увидите список ошибок, если они у вас есть, рядом с каждой ошибкой будет находиться ссылка на кусочек кода, где detekt обнаружил ошибку.

Также в проекте настроена команда, которая исправляет большое количество ошибок форматирования detekt. Чтобы запустить её, откройте терминал и выполните команду ./gradlew detektFormat.

Настройка Github Actions

В дипломном проекте используется сервис Github Actions для настройки CI ( Continuous Integration). Это позволяет автоматизировать базовые проверки качества приложения, такие как компиляция проекта и прогон статического анализатора detekt. Файл конфигурации CI вы можете найти здесь.

На каждый созданный pull request CI-сервер:

Чтобы автоматические проверки могли запускаться на каждый созданный pull request, необходимо сделать несколько дополнительных действий:

Шаг 1 - Активация Github Actions

По умолчанию Github отключает настроенные Github Actions для каждого форка оригинального репозитория. Это сделано для того, чтобы каждый разработчик и разработчица осознанно применяли описанные конфигурации CI (мало ли что настроено в оригинальном репозитории!).

Чтобы активировать Github Actions в форке дипломного проекта, необходимо зайти во вкладку Actions:

Вкладка "Actions"

А затем нажать на зелёную кнопку - так вы даёте своё согласие на запуск описанных в репозитории файлов-конфигураций Github Actions:

Зелёная кнопка согласия

Шаг 2 - Добавление токена API HeadHunter в секреты проекта

Файл develop.properties не хранится в истории коммитов, однако значение токена API HeadHunter необходимо для успешной сборки APK приложения. Чтобы CI-сервер смог получить значение токена, его нужно добавить в секреты репозитория для Github Actions.

Откройте вкладку Settings с главной страницы форка:

Вкладка "Settings"

В левой части экрана найдите раздел Security, в нём есть пункт Secrets and variables (цифра (1) на скриншоте). При нажатии на этот пункт появится выпадающий список, в котором будет элемент списка Actions (цифра (2) на скриншоте).

Security -> Secrets and variables -> Actions

Нажмите на этот элемент списка и в правой части экрана вы увидите блок, который называется Repository secrets:

Пустой Repository secrets

Нажмите на кнопку New repository secret. В появившемся окне в качестве названия секрета укажите GH_HH_ACCESS_TOKEN, а в качестве значения укажите тот же токен, что вы добавляли в файл develop.properties:

Добавление нового секрета

После ввода ключа и значения нажмите кнопку Add secret. Если вы всё сделали правильно, то вы должны увидеть обновлённый блок Repository secrets:

Секрет успешно добавлен

Техническое задание

Дипломный проект представляет собой небольшое приложение для поиска работы, использующее API сервиса HeadHunter. Приложение предоставляет следующую функциональность:

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

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

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

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

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

Несколько особенностей экрана, которые нужно учитывать при реализации:

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

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

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

Несколько особенностей, которые нужно учитывать при реализации:

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

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

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

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

Несколько особенностей экрана, которые нужно учитывать при реализации:

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

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

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

Несколько особенностей экрана, которые нужно учитывать при реализации:

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

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