Skip to content

TatyanaYarusova/CurrencyConversionApp

Repository files navigation

CurrencyConversionApp

Приложение для конвертации валют с использованием реактивного подхода.

Функциональности

  • На главном экране преставлены: выпадающий список, для выбора валюты, из которой будет совершена конвертация, полле ввода суммы для конвертации, выпадающий список, для выбора валюты, в которую будет совершена конвертация.
  • При корректном вводе данных после нажатии на кнопку будет открыт второй экран, на котором будет отображение сконвертированной суммы в выбранной валюте. Данные из источника http://api.currencyapi.com/v3/

Реализация

  • Выбрана api http://api.currencyapi.com/v3/, так как есть возможность зарегистрировать профиль без указания платежной карты;
  • Для получения курса выбранной валюты обращение идет к endpoint /latest, так как данное обращение входит в бесплатный тариф использования api. Конвертация происходит на этапе преобразования dto в entity;
  • Для запроса в сеть используется библиотека Retrofit;
  • Запросы в сеть реализованы ассинхронно с помощью Kotlin Coroutines;
  • Проект построен на основе Clean Architecture с использованием паттерна MVVM;
  • Для отслеживания смены состояний экрана во viewModel использована LiveData;
  • На поля ввода добавлена валидация данных;
  • Реализована обработка ошибок (сетевые, серверные). Приложение будет работать при отсутствие Интернета, будет показан Toast;
  • Реализовано внедрение зависимостей с использованием Dagger2;
  • Основная логика покрыта Unit тестами;

Внешний вид

Главный экран

main_page.png

Выпадающий список

drop_menu.png

Валидация

validation.png

Второй экран

conversion_page.png

Используемые библиотеки

  • Material Design: библиотека, для создания красивых UI-элементов, в частности выпадающего списка и поля ввода суммы;
  • Retrofit: библиотека, для запросов в сеть;
  • Gson: библиотека, для конвертации JSON;
  • Coroutines: библиотека, для реализации реактивного подхода, асинхронных запросов в сеть.
  • Dagger 2: библиотека, для внедрения зависимостей;
  • Lifecycle-ViewModel: библиотека, для работы с viewModel;
  • Junit: фреймворк, для тестирования;
  • Mockito: библиотека, для тестирования, создания макетов объектов;
  • Coroutines-Test: библиотека, для тестирования корутин.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages