К списку заданий

Анонс проекта. Кулинарная книга.

Без дедлайна

Анаонс проекта.

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

Что за приложение?

Книга рецептов. Приложение для поиска рецептов блюд по названиям, ингридиентам и регионам с детальным выводом рецепта приготовления. В приложении будет работа с публичным 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()

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

Поступи на курс, чтобы сдавать задания на проверку преподавателям