Идея приложения: приложение для обмена сообщениями в различных каналах.
Основные возможности:
- Добавление/удаление каналов.
- Отправка сообщений, в том числе изображений.
- Поиск изображений в сети на основе поискового запроса (для поиска используется API Pixabay).
- Редактирование своего профиля с возможностью добавления аватара из галереи, с камеры, либо посредством поиска изображения в сети.
- Смена темы приложения.
Особенности реализации:
- SOA, presentation слой реализован на Clean Swift и MVP.
- Вёрстка интерфейса выполнена кодом.
- В качесте удалённого хранилища данных использовался Firebase/Firestore.
- Полученные из Firestore данные о каналах и просмотренных сообщениях кешируются локально в Core Data и отображаются без доступа к сети.
- Отображение данных о каналах и сообщениях реализовано посредством
NSFetchedResultsController. - Сетевое взаимодействие с API реализовано нативными средствами.
- Реализовано асинхронное сохраниние и чтение данных там, где это необходимо (с использованием
DispatchQueueиOperationQueue). - Конфиденциальные данные сохраняются в Keychain, настройки проиложения сохраняются в файле.
- Часть бизнес-логики покрыта Unit-тестами, есть один UI-тест.
- Реализованы различные анимации и кастомизированный переход между экранами.
- Реализован GitHub Actions CI.