Skip to content

A weather app built using Clean Architecture and MVP principles

Notifications You must be signed in to change notification settings

Gaket/InnoWeather

Repository files navigation

InnoWeather

Погодное приложение выполненное в качестве демонстрационного применения Clean Architecture.

Реализованы основные требования (mvp) и несколько дополнительных задач.

Приложение построено основываясь на подходе Uncle Bob's Clean Architecture, весь проект состоит из 3 уровней:

1. Данные 
2. Бизнес логика 
3. Презентация 

Последний уровень, в свою очередь, построен на базе паттерна MVP. Возможно, всё это оверинжиниринг для данной задачи, однако это позволило мне лучше понять способы построения приложения с низкой связанностью за счёт чёткого разделения его компонент.

Данные получаются с использованием реактивного программирования. За счёт использования паттерна "Репозиторий" на уровне данных, источник может быть легко изменён на другой.

Для инъекции зависимостей использовался Dagger 2 (в первую очередь, на уровне представления, уровень данных по-прежнему содержит инициализацию классов из-за ограничений по времени написания приложения). Для инъекции элементов интерфейса используется ButterKnife.

Общение с REST API сервиса openweather.com происходит с использованием Retrofit 2.

Приложение содержит некоторые тесты, но покрытие тестами невелико - трейд-офф между качеством и скоростью разработки.

Реализованный функционал

  • Экран со списком сохраненных городов
  • Экран подробной информации о погоде в городе
  • Кэширование данных
  • Список изначальных городов
  • Возможность добавить новый город (Ограничения: на текущей момент в базе только города России)
  • Автоподстоновка названия города в диалоге добавления города
  • Анимация переходов между экранами
  • Поддержка версий Андроида от 4.0.3
  • Адаптация разметки под ландшафтный режим и, частично, под планшеты
  • Удаление городов паттерном "Swipe to dismiss"
  • Показ progress bar во время загрузки данных о погоде
  • Обновление данных по паттерну "Swipe to refresh"

Acknowledgements

Icons designed by Freepic from FlatIcon, license Creative Commons BY 3.0.

About

A weather app built using Clean Architecture and MVP principles

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages