Skip to content

botwy/CoffeeStore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

iCoffee

Требования

Xcode 12

Установка и запуск

  1. Нужно склонировать репозиторий: git clone
  2. Установить SwiftPM зависимости
  3. Запустив приложение (схема iCoffee), нажать на иконку корзины и зарегистрироваться. Без регистрации доступен просмотр товаров, но не доступно добавление в корзину и оформление заказа.
  4. Для установки виджета нужно запустить схему iCoffeeWidgetExtension

Описание функционала

Приложение является клиент-серверным. Доступен функционал регистрации аккаунта по email и паролю, аутентификации, верификации email, восстановления пароля, дополнение учетных данных, выход. Кофе сгруппировано по категориям, список товаров строится на основе данных с сервера. В детальной карточке товара можно почитать описание и положить в корзину. Также можно просмотреть корзину, удалить из нее товар, оформить заказ и выбрать способ оплаты. Приложение адаптировано для темной и светлой темы.

Аутентификация, пинкод и TouchId

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

Widget extension

Для установки виджета нужно запустить схему iCoffeeWidgetExtension. На виджете выводится информация о текущей акции с изображением товара. Данные получаются из Cloud Firestore. При клике на виджет осуществляется переход в основное приложение.

Архитектура

MVVM

Описание реализации

Клиент-серверная синхронизация данных реализована посредством облачных сервисов Firebase: Authentication и Cloud Firestore. Данные кешируются на устройстве средствами библиотеки Firebase. Реализована обработка ошибок, в случае неуспешной аутентификации и других сетевых ошибок, а также вывод аллертов. Для упорядочения работы с асинхронными вызовами Firebase, читаемости и снижением количества completion-ов, некоторые функции Firebase обернуты в Combine Future, а также используется библиотека готовых combine оберток - CombineFirebase. Чтобы упростить маппинг данных используется Codable и библиотека CodableFirebase.

Технологический стэк и библиотеки

  1. SwiftUI
  2. Combine (для биндинга view models со View)
  3. LocalAuthentication (для работы с TouchId)
  4. KeychainAccess (для сохранения пинкода и пароля в связке ключей)
  5. Firebase
  6. CodableFirebase
  7. CombineFirebase (обертка над Firebase для работы с Firebase в реактивном стиле)
  8. Для работы с аутентификацией/регистрацией использованы промисы на основе нативного Combine Future

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages