Анонс проекта. Кулинарная книга.
Без дедлайна
Анаонс проекта.
На протяжении оставшейся части курса мы будем разрабатывать одно приложение, постоянно его улучшая и дополняя.
Что за приложение?
Книга рецептов. Приложение для поиска рецептов блюд по названиям, ингридиентам и регионам с детальным выводом рецепта приготовления. В приложении будет работа с публичным API и офлайн доступом по кешу.
API для получения данных(free version): https://www.themealdb.com/api.php
Формат выполнения и сдачи
Вся работа выполняется в Android Studio. Нужно завести свой репозиторий на github (название не важно) в котором будет находиться ваша дз, где каждое задание должно соответстовать своей ветке
Пример:
Урок 8 Задание 1 -> practice_8/task_1
Урок 8 Задание 2 -> practice_8/task_2
Урок 10 Задание 4 -> practice_10/task_4
и так далее по аналогии.
Нужно сверстать основные экраны приложения. В качестве шаблона предоставляется открытый проект в фигме. Четко следовать дизайну не обязательно, но структуру следует соблюдать.
Дизайн приложение в фигме: https://www.figma.com/community/file/1211080114890916604
Главная страница
На главой странице должен выводиться список из 3-5 рандомных блюд с отображением названия, изображения. Оставшееся наполнение на собственное усмотрение
Страница рецепта
На странице деталей рецепта должна выводиться основная информация о рецепте:
1. Ссылка на главную фотографию
2. Название
3. Категория
4. Список ингридиентов с количеством
5. Теги
6. Инструкция по приготовлению
7. Страна происхождения (опционально)
8. Ccылка на youtube (опционально)
Странице поиска
На странице поиска осуществляется поиск, неудевительно.
Поиск может осуществляться:
- названию
- ингридиентам
- стране
Должна быть возможность осуществлять поиск как по одному критерию, так и по комбинации.
При навигации между страницами нужно реализовать анимации переходов при помощи встроенного api.
Технические условия и стек:
jetpack compose
jetpack navigation 2 / 3
kotlinx coroutines
Для хранения данных на экране стоит использовать stateless подход, когда данные получаются и хранятся в ViewModel. Под каждый экран нужно создать свою. Для хранения состояния и передачи его на ui стоит использовать MutableStateFlow и StateFlow соответственно, а затем использовать внутри compose
val state by viewModel.state.collectAsStateWithLifecycle()На данный момент все данные стоит замокать - объявить локально в списках и переменных в отдельном месте, все фото скачать и разместить локально в проекте.