/SiriusWallet

Native Android application written in Kotlin to be used as a wallet app to add new and track existing operations, balance, income and outcome

Primary LanguageKotlin

О проекте

Мобильное приложение, разработанное в ходе проектной смены «Технологии разработки мобильных приложений» Университета «Сириус» совместно с «Тинькофф Банк.»

Приложение реализовано на базе Model-View-ViewModel паттерна. Основные слои приложения: data (cache & network layer), service layer, view (activity + xml), viewmodel (interaction between view and service layer).

В работе используются:

  1. Kotlin
  2. Coroutines для асинхронных запросов, чтобы предотвратить фризы UI, и избежать нагромождений из коллбэков. Все корутины привязаны к жизненному циклу ViewModel (запускаются с viewModelScope).
  3. Retrofit2 для доступа к API (методы API вызываются как suspend функции; для сериализации и десериализации в JSON используется kotlinx.serialization, которая генерирует код в compile-time для обхода сериализуемых объектов)
  4. SQLite в качестве базы данных для хранения локального кэша со списком операций и категорий
  5. Room в качестве ORM фреймворка
  6. "Mini-DI" (класс-контейнер, в котором инициализируются все зависимости, создаются viewmodel)

Что еще нужно сделать

  1. Возможность добавления операции в оффлайн с последующей синхронизацией с сервером
  2. Поддержка нескольких кошельков
  3. Кастомные сообщения об ошибках (toasts)
  4. Умная синхронизация данных с серверов
  5. Прикрутить полноценный DI Framework
  6. Тестирование

Демонстрация работы приложения

Демо