Приложение для конвертации валют с использованием реактивного подхода.
- На главном экране преставлены: выпадающий список, для выбора валюты, из которой будет совершена конвертация, полле ввода суммы для конвертации, выпадающий список, для выбора валюты, в которую будет совершена конвертация.
- При корректном вводе данных после нажатии на кнопку будет открыт второй экран, на котором будет отображение сконвертированной суммы в выбранной валюте. Данные из источника 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 тестами;
- Material Design: библиотека, для создания красивых UI-элементов, в частности выпадающего списка и поля ввода суммы;
- Retrofit: библиотека, для запросов в сеть;
- Gson: библиотека, для конвертации JSON;
- Coroutines: библиотека, для реализации реактивного подхода, асинхронных запросов в сеть.
- Dagger 2: библиотека, для внедрения зависимостей;
- Lifecycle-ViewModel: библиотека, для работы с viewModel;
- Junit: фреймворк, для тестирования;
- Mockito: библиотека, для тестирования, создания макетов объектов;
- Coroutines-Test: библиотека, для тестирования корутин.