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