Skip to content

mayer1a/GBShop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MEOWLS

cover


Для чего?

Привет! Мой проект - это приложение интернет-магазин для продажи зоотоваров.

В этом приложение ты можешь:

  • Создать учетную запись, чтобы в дальнейшем ничего не потерять
  • Просматривать товары из ассортимента магазина
  • Добавлять товары в корзину и в избранное, чтобы не потерять и иметь быстрый доступ
  • Добавлять и просматривать отзывы к товару (можно и анонимно)
  • После успешной привязки банковской карты можно совершать покупки, оплачивая товары в корзине
  • При необходимости можно изменить данные профиля и выйти
  • В ближайшем будущем будут доступны функция удаления профиля, поддержка ночной темы, расширение ассортимента

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


Требования к проекту

  • Использовать шаблон проектирования MVP+Coordinator(Router)
  • Применить следующие паттерны:
    • Singleton
    • Abstract Factory
    • Flyweight
    • Builder
  • Реализовать основной координатор, для флоу авторизации/регистрации
  • Реализовать навигационный (таббар) координатор для флоу таббара со своими координаторами
  • Реализовать сборщик модулей и инъекцию зависимостей
  • Использовать вёрстку кодом
  • Применить такие коллекции как UITableView/UICollectionView
  • Реализовать кастомный переиспользуемый степпер
  • Реализовать анимации перехода большого заголовка в малый
  • Использовать UITabBarController/UINavigationController для навигации в приложении посредством координатора
  • Использовать UserDefaults для хранения профиля пользователя
  • Реализовать хранение данных каталога, товаров в Realm
  • Реализовать валидатор данных, чтобы снизить нагрузку на сервер
  • Использовать сеть, RESTful API
  • Использовать Decodable для дженерик-сериализатора
  • Реализовать собственные CRUD обёртки над UserDefaults и Realm
  • Использовать многопоточность (DispatchGroup)
  • Использовать протоколы и замыкания для взаимодействия между классами
  • Реализовать использование двух типов ячеек для коллекции товаров (каталог - левая и правая)
  • Использовать typealias
  • Вынести все общие константы в отдельный файл
  • Реализовать сервис загрузки изображений
  • Реализовать кастомный роутер запросов, используя абстрактную фабрику
  • Реализовать парсер ошибок
  • Использовать Alamofire для сетевых запросов
  • Использовать Fastlane для CI
  • Реализовать модели хранения Realm, модели запросов и модели ответов, а также сущности приложения
  • Реализовать сложные экраны с помощью компонентов дочерних контроллеров
  • Реализовать обёртку над Firebase Analytics/Crashlytics для отправки аналитики и крэшлитики
  • Реализовать фабрики для моделей и ячеек
  • Реализовать наблюдатель для клавиатуры как сервис для смещения элементов на скроллвью
  • Сделать кастомные анимации пути UIView для показа сообщения об ошибке
  • Реализовать анимации перехода большого заголовка в малый
  • Реализовать возможность смены/выхода из учетной записи
  • Определить минимальную поддерживаемую версию OS: iOS 15.0
  • Использовать пакетные менеджер CocoaPods
  • Покрыть Unit-тестами основной функционал приложения
  • Покрыть UI-тестами экраны приложения
  • Реализовать cобственный сервер с данными для приложения
  • Использовать KeyChain при помощи SwiftKeychainWrapper для хранения токена, информации владельца аккаунта после авторизации
  • Реализовать кастомный поиск по товарам
  • Реализовать поддержку светлой и темной системных тем
  • Реализовать тёмную тему приложения
  • Реализовать экран избранного и добавления товаров в избранное
  • Добавить цветовую схему в виде паттерна Flyweight
  • Добавить иконку приложения
  • Покрыть Unit-тестами весь функционал приложения

Концепт

Концепт

Все экраны отличаются своей простотой и дружелюбностью.

  • Каталог товаров - начальный экран при запуска и после успешной авторизации/регистрации
  • Корзина - в ней все товары, которые ты бы хотел купить в дальнейшем
  • Профиль - экран с данными твоего профиля, на котором, при необходимости, их можно изменить
  • Экран авторизации - отображается после выхода из профиля или при первой установки приложения
  • Экран регистрации - после ввода необходимой информаии и прохождения валидатора происходит переход на главный экран
  • При некорректном изменении данных профиля, неудачной регистрации или вводе неверных данных авторизации анимированно появится ошибка
  • При измении пароля на экране "Профиль" будет анимировано показано опциональное поле повтора пароля

Поддержка системных тем

Темы еще не добавлены

Поддерживаются системные темы, при переходе системы в темный режим, приложение перестраивает цветовую палитру.

Анимации

GIFs

Поддержка и вклад

Если ты хочешь сделать вклад в этот проект, я всегда рад принять твой merge request.

Помощь

Если тебе нужно связаться со мной или получить помощь по проекту, то не стесняйся - пиши на почту и в телеграм