Мобильное приложение, разработанное в ходе проектной смены «Технологии разработки мобильных приложений» Университета «Сириус» совместно с «Тинькофф Банк.»
Приложение реализовано на базе Model-View-ViewModel паттерна. Основные слои приложения: data (cache & network layer), service layer, view (activity + xml), viewmodel (interaction between view and service layer).
В работе используются:
- Kotlin
- Coroutines для асинхронных запросов, чтобы предотвратить фризы UI, и избежать нагромождений из коллбэков. Все корутины привязаны к жизненному циклу ViewModel (запускаются с viewModelScope).
- Retrofit2 для доступа к API (методы API вызываются как suspend функции; для сериализации и десериализации в JSON используется kotlinx.serialization, которая генерирует код в compile-time для обхода сериализуемых объектов)
- SQLite в качестве базы данных для хранения локального кэша со списком операций и категорий
- Room в качестве ORM фреймворка
- "Mini-DI" (класс-контейнер, в котором инициализируются все зависимости, создаются viewmodel)
- Возможность добавления операции в оффлайн с последующей синхронизацией с сервером
- Поддержка нескольких кошельков
- Кастомные сообщения об ошибках (toasts)
- Умная синхронизация данных с серверов
- Прикрутить полноценный DI Framework
- Тестирование