Минималистичное iOS приложение погоды с архитектурой MVP и кастомным UIKit-интерфейсом
| Функция | Описание |
|---|---|
| 🌍 Актуальная погода | Получение текущих погодных данных через API |
| 🕒 Почасовой прогноз | Отображение прогноза на несколько часов вперед |
| 📅 Прогноз на несколько дней | Удобное переключение вкладок |
| 💨 Дополнительные параметры | Ветер, влажность, осадки |
| 🎨 Кастомный UI | Тёмная тема, glassmorphism элементы |
| 🌐 Работа через URLSession | Нативная работа с сетью без сторонних библиотек |
Приложение разработано с использованием архитектурного паттерна MVP (Model-View-Presenter), что обеспечивает четкое разделение ответственности и тестируемость.
graph TD
A[WeatherViewController] <--> B[WeatherPresenter]
B --> C[WeatherData]
B --> D[WeatherService]
B --> F[Cache]
E[WeatherModuleBuilder] --> A
E --> B
- View — отвечает только за отображение данных
- Presenter — содержит бизнес-логику и форматирование данных
- Model — структуры данных API
- Service Layer — работа с сетью через
URLSession
- UI Framework: UIKit
- Архитектура: MVP
- Networking: URLSession
- Парсинг: Codable
- Layout: AutoLayout (programmatic UI)
- Dependency Assembly: Builder pattern
- Assets: Figma Community UI Kits
WeatherApp/
├── 🚀 App/ # Жизненный цикл приложения
│ ├── AppDelegate.swift
│ └── SceneDelegate.swift
├── 🛠️ Core/ # Общие компоненты и утилиты
│ ├── Components/ # Переиспользуемые UI элементы
│ ├── Extensions/ # Расширения стандартных типов
│ └── Factories/ # Фабрики для создания объектов
├── 🌐 Network/ # Сетевой слой
│ └── WeatherService.swift # Запросы к API погоды
├── 🎨 Resources/ # Ресурсы
│ ├── Fonts/ # Кастомные шрифты
│ └── Assets.xcassets # Изображения и иконки
└── 📦 WeatherModule/ # Модуль главного экрана
├── Builder/ # Сборка модуля (DI)
├── Models/ # Модели данных
├── Presenters/ # Бизнес-логика (WeatherPresenter)
└── Views/ # UI слой (ViewController, Cells)
- macOS 13+
- Xcode 15+
- iOS 15+
-
Клонирование репозитория
git clone https://github.com/YourUsername/WeatherApp.git cd WeatherApp -
Настройка API Key
- Получите ключ на сервисе погоды (например, OpenWeatherMap)
- Добавьте его в
WeatherService.swift
-
Запуск
- Откройте
WeatherApp.xcodeproj - Выберите симулятор (например, iPhone 15)
- Нажмите
Cmd + R
- Откройте
Интерфейс приложения основан на бесплатных Figma Community ресурсах:
-
Weather App UI Kit
https://www.figma.com/community/file/1289964365602571637 -
Weather Icons Kit
https://www.figma.com/community/file/1059229179375580154/weather-icons-kit -
Weather Glassmorphism Icons
https://www.figma.com/community/file/1126777451931792118/weather-glassmorphism-icon
Дизайны используются в соответствии с лицензиями Figma Community (Free for personal & commercial use с обязательным указанием авторства при необходимости).
Все права на оригинальные UI-концепты и иконки принадлежат их авторам.
Проект распространяется под лицензией MIT.
⭐ Если проект оказался полезным — поставьте звезду!

