Тестовое задание на Android разработку
Тут находится описание тестового задания для кандидатов на Android-разработку в команду KazanExpress.
Задача
Нужно реализовать простое приложение, которое помогает пользователю найти интересующий его коктейль. Работать данное приложение должно с TheCocktailDb API.
Есть три уровня сложности: [Easy] - для претендующих на позицию Junior Android Dev [Medium] - для претендующих на позицию Middle Android Dev [Hard] - для претендующих на позицию Senior Android Dev
Требования к задаче
Ниже будут описаны требования для выполнения задачи к каждому из уровней сложности. Уровни Medium и Hard подразумевают собой выполнение предыдущего уровня сложности.
Easy
На начальном уровне сложности главной задачей приложения будет отрисовка экрана с информацией о коктейле. Для получения рандомного коктейля во время загрузки приложения можно использовать данный GET запрос.
Требования:
У приложения должны быть онбординги, на них можно отобразить любую информацию о приложении;
При запуске приложения на старте показываем индикатор прогресса на время ожидания ответа с сервера (по желанию можно добавить splash screen до экрана загрузки на свой вкус);
На странице коктейля должно быть отображено: фото коктейля, название, id, категория, тип коктейля, тип стакана для сервировки;
Статус бар должен быть прозрачным, а изображение коктейля "лежать" под статус баром;
Картинки коктейлей нужно подгружать асинхронно (на время загрузки показываьб индикатор прогресса);
Также дополнительно должен быть раздел "Ингридиенты", который появляется при скролле страницы товара;
Должна быть кнопка "Добавить в избранное" в виде иконки сердечка. При клике на иконку нужно менять ее состояние (полезная работа не выполняется, просто меняем состояние иконки - например, закрашиваем);
Через Pull-to-Refresh (Swipe-to-Refresh) отображать новый коктейль (повторно запросить рандомный и отрисовать);
Нужно уметь обрабатывать ошибки сети. При возникновении ошибки выводить кнопку Retry, при клике на которую приложение пытается загрузить новый коктейль и отобразить его.
Medium
Нужно реализовать все, что было перечислено в Easy, но помимо этого:
Сделать стартовый экран приложения с поисковой строкой и миниатюрными "карточками" уже посещённых коктейлей;
Позволить пользователю с помощью поисковой строки находить коктейли. В случае, если запрос на поиск по названию коктейля вернул результат, переходить на страницу первого элемента из списка. Если же запрос ничего не вернул - показывать соответствующий toast с информацией;
Добавить на страницу коктейля кнопку "Назад", которая возвращала бы на главный экран.
Hard
Нужно реализовать все, что было перечислено в Medium, но помимо этого:
Сделать навигационное меню с пунктами "Главная", "Категории" и "Избранное";
Функционал главной страницы оставить по аналогии с уровнем сложности Medium;
На странице "Категории" отобразить список категорий коктейлей;
При клике на любой элемент из списка категорий, отображать экран с каталогом миниатюрных "карточек" коктейлей из соответствующей категории;
Все картинки коктейлей на миниатюрах должны асинхронно подгружаться;
Каталог "карточек" должен появиться как только все данные по карточкам подгрузятся. Во время ожидания подгрузки нужно отображать скелетоны карточек;
Со страницы коктейля кнопка "Назад" должна отправлять пользователя на последний активный Activity.
Правила сдачи задания
Нужно будет создать Pull Request с ваши решением в данный репозиторий, а также отправить apk-файл на почту kevin@kazanexpress.ru.
Сроки - Easy и Medium - 7 дней, Hard - 14 дней.
P.S.
Приятный визуал приветствуется. Особое внимание будет уделено чистоте кода.