maxzim121 / iOS-FakeNFT-StarterProject-Public

Дипломный проект Яндекс Практикум: NFT маркетплейс с личным профилем, каталогом, корзиной и статистикой покупок.
0 stars 0 forks source link

ТЗ мобильного приложения FakeNFT

Ссылки

Дизайн Figma Скринкаст экрана Профиля Скринкаст экрана Статистики Скринкаст экрана Каталога

Назначение и цели приложения

Приложение помогает пользователям просматривать и покупать NFT (Non-Fungible Token). Функционал покупки иммитируется с помощью мокового сервера.

Цели приложения:

Краткое описание приложения

Дополнительным (необязательным) функционалом являются:

Функциональные требования

Каталог

Экран каталога

На экране каталога отображается таблица (UITableView), показывающая доступные коллекции NFT. Для каждой коллекции NFT отображается:

Также на экране есть кнопка сортировки, при нажатии на которую пользователю предлагается выбрать один из доступных способов сортировки. Содержимое таблицы упорядочивается согласно выбранному способу.

Пока данные для показа не загружены, должен отображаться индикатор загрузки.

При нажатии на одну из ячеек таблицы пользователь попадает на экран выбранной коллекции NFT.

Экран коллекции NFT

Экран отображает информацию о выбранной коллекции NFT, и содержит:

При нажатии на имя автора коллекции открывается его сайт в вебвью.

Каждая ячейка коллекции содержит:

При нажатии на сердечко производится добавление NFT в избранное / удаление NFT из избранного.

При нажатии на кнопку добавления NFT в корзину / удаления NFT из корзины производится добавление или удаление NFT из заказа (корзины). Изображение кнопки при этом меняется, если NFT добавлено в заказ отображается кнопка с крестиком, если нет - кнопка без крестика.

При нажатии на ячейку открывается экран NFT.

Экран NFT

Экран частично реализуется наставником в ходе life coding. Реализация экрана студентами не требуется.

Корзина

Экран заказа

На экране таблицы отображается таблица (UITableView) со списком добавленных в заказ NFT. Для каждого NFT указаны:

При нажатии на кнопку удаления из корзины показывается экран подтверждения удаления, который содержит:

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

Внизу экрана расположена панель с количеством NFT в заказе, общей ценой и кнопкой оплаты. При нажатии на кнопку оплаты происходит переход на экран выбора валюты.

Пока данные для показа не загружены или обновляются, должен отображаться индикатор загрузки.

Экран выбора валюты

Экран позволяет выбрать валюту для оплаты заказа.

Сверху экрана находится заголовок и кнопка возврата на предыдущий экран. Под ним - коллекция UICollectionCell с доступными способами оплаты. Для каждой валюты указывается:

Внизу находится текст со ссылкой на пользовательское соглашение (ведет на https://yandex.ru/legal/practicum_termsofuse/ , открывается в вебвью).

Под текстом — кнопка оплаты, после нажатия на неё посылается запрос на сервер. Если сервер ответил, что оплата прошла успешно, — показывается экран с информацией об этом и кнопкой возврата в корзину. В случае неуспешной оплаты — соответствующий попап с кнопками повтора запроса и отмены.

Профиль

Экран профиля

Экран показывает информацию о пользователе. Он содержит:

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

Экран Мои NFT

Представляет собой таблицу (UITableView), каждая ячейка которой содержит:

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

В случае отсутствия NFT показывается соответствующая надпись.

Экран Избранные NFT

Содержит коллекцию (UICollectionView) c NFT, добавленными в избранное (лайкнутыми). Каждая ячейка содержит информацию об NFT:

Нажатие на сердечко удаляет NFT из избранного, содержимое коллекции при этом обновляется.

В случае отсутствия избранных NFT показывается соответствующая надпись.

Статистика

Экран рейтинга

Экран отображает список пользователей. Он представляет собой таблицу (UITableView). Для каждого пользователя указываются:

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

При нажатии на одну из ячеек происходит переход на экран информации о пользователе.

Экран информации о пользователе

Экран отображает информацию о пользователе:

Также он содержит кнопку перехода на сайт пользователя (открывается в вебвью) и возможность перехода на экран Коллекции пользователя.

Экран коллекции пользователя

Содержит коллекцию (UICollectionView) c NFT пользователя. Каждая ячейка содержит информацию об NFT:

Сортировка данных

На экранах «Каталог», «Корзина», «Мои NFT», «Статистика» есть настройка сортировки. Выбранный пользователем порядок сортировки должен сохраняться локально на устройстве. После перезапуска приложения восстанавливается предыдущее значение.

Значение сортировки по умолчанию: