Skip to content

Dimaulta/NFTmarketplace

Repository files navigation

Видеодемонстрация работы приложения -

Ссылка: https://drive.google.com/file/d/1IBjIGRfFkwz_rOA3tB96Bl7H07clcvw9/view?usp=sharing

Архитектура приложения

  • SwiftUI
  • MVVM

Декомпозиция эпика "Профиль"

1 спринт

  • Создание трех экранов, добавление NavigationStack для их взаимодействия - план — 2 часа, факт — 2 часа
  • Верстка ячейки для экрана “Мои NFT” - план — 4 часа, факт — 2 часа
  • Верстка ячейки для экрана “Избранные NFT” - план — 4 часа, факт — 2 часа
  • Верстка экрана профиля - план — 5 часов, факт — 8 часов

2 спринт

  • Верстка экрана “Мои NFT” - план — 2 дня, факт — 2 дня
  • Верстка экрана “Избранные NFT” - план — 2 дня, факт — 2 дня
  • Добавление сетевого слоя для экрана профиля - план — 2 дня, факт — 2 дня

3 спринт

  • Добавление сетевого слоя для экрана ”Мои NFT” - план — 2 дня, факт — 2 дня
  • Добавление сетевого слоя для экрана “Избранные NFT” - план — 2 дня, факт — 2 дня

Декомпозиция эпика "Каталог"

1 спринт

  • Верстка ячейки главного экрана каталога - 2 ч.
  • Верстка табличного представления главного экрана с использованием готовых ячеек - 2 ч.
  • Реализация логики сетевых запросов на экране каталога с отображением лоадера - 4 ч.
  • Реализация пагинации запроса экрана каталога - 2 ч.

2 спринт

  • Реализация навигации между экранами - 3 ч.
  • Реализация алерта сортировки на экране каталога - 30 минут.
  • Реализация логики сортировки на экране каталога - 1 ч.
  • Верстка ячейки NFT товара на экране коллекции NFT - 4 ч.
  • Верстка экрана коллекции NFT - 3 ч

3 спринт

  • Реализация логики сетевых запросов на экране коллекции NFT с отображением лоадера - 3 ч.
  • Реализация пагинации запроса экрана коллекции NFT - 1 ч.
  • Реализация открытия WEbView с автором коллекции на экране коллекции NFT - 1 ч.
  • Реализация логики добавления/удаления в избранное NFT товара на экране коллекции NFT - 1 ч.
  • Реализация логики добавления/удаления в корзину NFT товара на экране коллекции NFT - 1 ч.

Декомпозиция эпика "Корзина"

Часть 1-3

  1. Модели данных и сервисы

    • Расширить модель Nft (name, rating, price)
    • Создать модели Currency, BasketItem, enum SortOption
    • Реализовать BasketStorage и BasketService
    • Реализовать PaymentService для обработки оплаты (est: 1 час; fact: 4 часа)
  2. Основной экран корзины

    • Создать BasketViewModel на MVVM
    • Сверстать BasketView с таблицей NFT (изображение, название, рейтинг, цена, кнопка удаления)
    • Сверстать нижнюю панель где количество NFT, сумма, кнопка "К оплате"
    • Реализовать состояния: загрузка, пустая корзина (est: 2 часа; fact: 4 часа)
  3. Интеграция и базовая функциональность

    • Интегрировать сервисы в ServicesAssembly
    • Подключить загрузку данных корзины
    • Настроить навигацию на экран оплаты (est: 3 часа; fact: 5 часов)

Часть 2-3

  1. Удаление NFT

    • Сверстать попап подтверждения удаления с изображением NFT и кнопками Удалить и Вернуться
    • Реализовать логику удаления в BasketService и обновление UI (est: 1 час; fact: 2 часа)
  2. Функционал сортировки

    • Сверстать попап сортировки по цене, по рейтингу, по названию
    • Реализовать методы сортировки в BasketViewModel
    • Сохранять выбранную сортировку через сторедж ну или UserDefaults
    • Добавить кнопку сортировки в верхнюю часть экрана (est: 2 часа; fact: 3 часа)
  3. Экран выбора валюты

    • Создать PaymentViewModel
    • Сверстать PaymentView с коллекцией валют LazyVGrid
    • Реализовать выбор валюты с визуальным выделением
    • Сверстать ссылку на пользовательское соглашение https://yandex.ru/legal/practicum_termsofuse и кнопку Оплатить
    • Создать модель PaymentRequest и интегрировать с PaymentService (est: 2 часа; fact: 3 часа)

Часть 3-3

  1. Вебвьюшка для пользовательского соглашения

    • Создать WebView компонент WKWebView + UIViewRepresentable
    • Реализовать экран TermsOfServiceView с загрузкой URL соглашения
    • Настроить навигацию по ссылке (est: 4 часа; fact: 6 часов)
  2. Обработка состояний оплаты

    • Сверстать экран успешной оплаты PaymentSuccessView с изображением и поздравлением
    • Сверстать попап ошибки оплаты с кнопками Повторить и Отмена
    • Реализовать логику обработки успеха (очистка корзины,навигация)
    • Реализовать логику обработки ошибки (повтор запроса, отмена) (est: 4 часа; fact: 6 часов)

About

Дипломный проект Яндекс Практикум в рамках курса iOS разработчик расширенный (25-26 спринты)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors