Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
NotificationsYou must be signed in to change notification settings

Yandex-Practicum/iOS-FakeNFT-StarterProject-Public

Repository files navigation

Ссылки

Дизайн Figma

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

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

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

  • Просмотр коллекций NFT;
  • Просмотр и покупка NFT (имитируется);
  • Просмотр рейтинга пользователей.

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

  • Приложение демонстрирует каталог NFT, структурированных в виде коллекций.
  • Пользователь может просматривать информацию о каталоге коллекций, выбранной коллекции и отдельном NFT.
  • Пользователь может добавлять понравившиеся NFT в избранное.
  • Пользователь может управлять корзиной: добавлять/удалять товары и имитировать оплату.
  • Пользователь может просматривать рейтинг пользователей и их профили.
  • Пользователь имеет доступ к личному профилю с информацией о своих NFT и избранных коллекциях.

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

  • Локализация;
  • Тёмная тема;
  • Интеграция с Яндекс Метрикой;
  • Экран авторизации;
  • Экран онбординга;
  • Алерт с предложением оценить приложение;
  • Обработка сетевых ошибок;
  • Кастомный экран загрузки (launch screen);
  • Поиск по коллекциям/таблицам.

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

Каталог

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

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

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

  • Содержит:
    • Обложку и название коллекции;
    • Описание коллекции;
    • Имя автора (ссылка на сайт вWKWebView);
    • Коллекцию NFT (UICollectionView).
  • Каждая ячейка NFT включает:
    • Изображение;
    • Название;
    • Рейтинг;
    • Стоимость (в ETH);
    • Кнопку добавления в избранное (иконка сердца);
    • Кнопку добавления в корзину (отображает крестик при наличии NFT в корзине).
  • Нажатие на ячейку открывает экран NFT (реализуется наставником).

Корзина

Экран заказа

  • Таблица (UITableView) с NFT в корзине. Для каждого NFT указано:
    • Изображение;
    • Название;
    • Рейтинг;
    • Цена;
    • Кнопка удаления.
  • При удалении отображается экран подтверждения:
    • Изображение NFT;
    • Текст подтверждения;
    • Кнопки «Удалить»/«Отмена».
  • Кнопка сортировки в верхней части экрана.
  • Панель внизу: общее количество NFT, сумма, кнопка оплаты.
  • Индикатор загрузки отображается во время загрузки данных.
  • Нажатие на кнопку оплаты открывает экран выбора валюты.

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

  • Коллекция (UICollectionView) с валютами. Для каждой валюты:
    • Логотип;
    • Полное и сокращённое название.
  • Ссылка на пользовательское соглашение (открывается в веб-вьюWKWebView).
  • Кнопка оплаты отправляет запрос:
    • При успехе — подтверждение;
    • При ошибке — всплывающее окно с кнопками «Повторить»/«Отмена».

Профиль

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

  • Содержит:
    • Фото пользователя;
    • Имя и описание;
    • Таблицу (UITableView) с пунктами:
      • «Мои NFT» (переход к списку NFT);
      • «Избранные NFT» (переход к избранным);
      • «Сайт пользователя» (открывается в веб-вью).
  • Кнопка редактирования профиля (изменение имени, описания, фото, сайта).

Экран «Мои NFT»

  • Таблица (UITableView) с NFT пользователя. Каждая ячейка содержит:
    • Иконку NFT;
    • Название;
    • Автора;
    • Цену (в ETH).
  • Кнопка сортировки. При отсутствии NFT — сообщение.

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

  • Коллекция (UICollectionView) с NFT из избранного. Каждая ячейка содержит:
    • Иконку;
    • Кнопку удаления из избранного (иконка сердца);
    • Название;
    • Рейтинг;
    • Цену (в ETH).
  • При отсутствии избранных NFT — сообщение.

Статистика

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

  • Таблица (UITableView) с пользователями. Для каждого указано:
    • Место в рейтинге;
    • Аватар;
    • Имя;
    • Количество NFT.
  • Кнопка сортировки. Нажатие на ячейку открывает профиль пользователя.

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

  • Содержит:
    • Фото и имя;
    • Описание;
    • Кнопку перехода на сайт;
    • Возможность просмотра коллекций пользователя.

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

  • Коллекция (UICollectionView) с NFT. Каждая ячейка содержит:
    • Иконку;
    • Кнопку избранного;
    • Название;
    • Рейтинг;
    • Цену (в ETH);
    • Кнопку корзины.

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

Доступна на экранах: «Каталог», «Корзина», «Мои NFT», «Статистика».Настройки сохраняются локально черезUserDefaults и восстанавливаются после перезапуска.

Значения по умолчанию:

  • Каталог — по количеству NFT;
  • Корзина — по названию;
  • Мои NFT — по рейтингу;
  • Статистика — по рейтингу.

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

1. Проект

  • Минимальная версия iOS: 17.0 и выше;
  • Работоспособность: проект компилируется без ошибок и запускается в симуляторе.

2. Архитектура

  • Фреймворк для верстки: UIKit;
  • Архитектурный паттерн: Выбрать между MVC/MVP/MVVM

2.1 Общее

  • Компоненты архитектуры и ответственность между ними чётко разделены: то, что должно бытьPresenter, не названоView.
  • Данные обрабатываются черезstruct илиclass с соблюдением принципов инкапсуляции.
  • Классы названы правильно. Компоненты архитектуры связаны корректно.

2.2 Сеть

  • Реализована обработка задач с использованиемGCD и подходящимQoS
  • Реализовано правильное использование многопоточности, чтобы избежатьrace conditions иdeadlocks черезDispatchQueue
  • ИспользуетсяURLSession для сетевых запросов.

3. Многопоточность

  • Запрещено: Swift Concurrency (async/await,actor);
  • Обязательно: обновление UI только из главного потокаMain Thread.
  • Используется: GCD (DispatchQueue,DispatchGroup);

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors6


[8]ページ先頭

©2009-2025 Movatter.jp