Skip to content

mametich/WeatherApp

Repository files navigation

Weather App (Compose + Clean Architecture)

Приложение для просмотра текущей погоды и прогноза на несколько дней.

📚 Использованные библиотеки

Основные

  • Jetpack Compose - современный UI-фреймворк для Android
  • ViewModel - хранение и управление UI-состоянием
  • Coroutines/Flow - асинхронные операции и реактивные потоки
  • Retrofit - работа с сетевыми запросами
  • Room - локальное кэширование данных

Дополнительные

  • Hilt - dependency injection
  • Coil - загрузка изображений (погодных иконок)
  • Material 3 - современный дизайн-система

🏗 Архитектурные решения

1. Clean Architecture

Принята многослойная архитектура:

app/

├── ui/ # Presentation Layer (Compose + ViewModel)

├── domain/ # Business Logic (UseCases, Models)

└── data/ # Data Layer (Repository impl, API, DB)

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

  1. Экран погоды города, выбранного по умолчанию:
  • Отображает погоду города по умолчанию.
  • В случае, когда город не выбран отображает список городов (для того чтобы поменять город по умолчанию необходимо нажать на текст города)
  1. Экран списка городов:
  • Отображать список городов (источник данных: хардкод/«in-memory» реализация Room).
  • По клику на город открывать экран с детальной информацией о погоде.
  1. Экран погоды: Отображает:
  • Название города.
  • Текущую температуру, иконку погоды, описание (ясно, облачно и т. д.).
  • Скорость ветра, влажность.
  • Прогноз на 3–5 дней (дата, температура, иконка).
  • Кнопка «Я тут» (сделать городом по умолчанию)
  1. Работа с API:
  • Использовано открытое API погоды (https://www.weatherapi.com).
  • Загружает данные в формате JSON и парсит их (Retrofit + Gson/).
  1. Кэширование данных:
  • Реализовать простой кэш, чтобы при отсутствии интернета показывались последние загруженные данные.
  1. Дополнительно:
  • Pull-to-refresh для обновления данных.
  • Возможность добавлять/удалять города из списка.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages