Привет! Мой проект - это приложение интернет-магазин для продажи зоотоваров.
В этом приложение ты можешь:
- Создать учетную запись, чтобы в дальнейшем ничего не потерять
- Просматривать товары из ассортимента магазина
- Добавлять товары в корзину и в избранное, чтобы не потерять и иметь быстрый доступ
- Добавлять и просматривать отзывы к товару (можно и анонимно)
- После успешной привязки банковской карты можно совершать покупки, оплачивая товары в корзине
- При необходимости можно изменить данные профиля и выйти
- В ближайшем будущем будут доступны функция удаления профиля, поддержка ночной темы, расширение ассортимента
Для чего я решил создать это приложение? Я очень люблю животных и всегда хочется, чтобы людям можно было в два клика заказать товары для своих любимцев в удобном формате. Да и у многих магазинов отсутствует свое приложение. Поэтому я решил создать простое, понятное и легкое приложение.
- Использовать шаблон проектирования 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-тестами весь функционал приложения
Все экраны отличаются своей простотой и дружелюбностью.
- Каталог товаров - начальный экран при запуска и после успешной авторизации/регистрации
- Корзина - в ней все товары, которые ты бы хотел купить в дальнейшем
- Профиль - экран с данными твоего профиля, на котором, при необходимости, их можно изменить
- Экран авторизации - отображается после выхода из профиля или при первой установки приложения
- Экран регистрации - после ввода необходимой информаии и прохождения валидатора происходит переход на главный экран
- При некорректном изменении данных профиля, неудачной регистрации или вводе неверных данных авторизации анимированно появится ошибка
- При измении пароля на экране "Профиль" будет анимировано показано опциональное поле повтора пароля
Темы еще не добавлены
Поддерживаются системные темы, при переходе системы в темный режим, приложение перестраивает цветовую палитру.
Если ты хочешь сделать вклад в этот проект, я всегда рад принять твой merge request.
Если тебе нужно связаться со мной или получить помощь по проекту, то не стесняйся - пиши на почту и в телеграм