Forecast — приложение прогноза погоды для iOS, разработанное на Swift и UIKit.
Приложение отображает текущую погоду, почасовой прогноз на 48 часов, прогноз на 14 дней и подробные погодные показатели. Архитектура проекта построена на MVP, используется современная асинхронная модель async/await и покрытие бизнес-логики модульными тестами.
- Текущая погода — отображение актуальных погодных условий в режиме реального времени.
- Почасовой прогноз — прогноз погоды на ближайшие 48 часов.
- Прогноз на 14 дней — долгосрочный прогноз с ежедневными данными.
- Определение местоположения — автоматическое получение погоды для текущей геолокации пользователя.
- Pull to Refresh — ручное обновление данных с помощью жеста обновления.
- Обработка ошибок — возможность повторить запрос при возникновении ошибки сети.
- Программная верстка — интерфейс полностью реализован на UIKit с использованием Auto Layout без Storyboard.
- Compositional Layout — современная организация коллекций с помощью
UICollectionViewCompositionalLayout.
- Swift + UIKit (программная верстка)
- MVP (Model–View–Presenter)
- Swift Concurrency (async/await)
- CoreLocation — работа с геолокацией
- URLSession — выполнение сетевых запросов
- Dependency Injection — внедрение зависимостей через Factory
- XCTest — модульное тестирование
Проект разделен на несколько независимых слоев:
- Presentation — экраны приложения и презентеры.
- Services — сетевой слой, сервис геолокации и другие сервисы.
- Models — модели данных.
- Mapper — преобразование моделей API в модели, используемые интерфейсом.
- UI Components — переиспользуемые компоненты пользовательского интерфейса.
Проект имеет модульную структуру и использует внедрение зависимостей через паттерн Factory, что упрощает тестирование, поддержку и дальнейшее развитие приложения.
git clone https://github.com/rfhfv/Forecast.git
cd Forecast
open Forecast.xcodeproj