A beautiful, feature-rich weather application built with SwiftUI for iOS 17+. Features real-time weather data, interactive charts, location services, favorites management, and widgets.
| Feature | Description |
|---|---|
| π Real-time Weather | Current conditions, hourly & 14-day forecasts via Open-Meteo API |
| π Location Services | GPS detection and global city search |
| β Favorites | Save unlimited locations with SwiftData persistence |
| π Interactive Charts | Temperature & precipitation graphs with touch interaction |
| π Notifications | Severe weather alerts, daily forecasts, rain warnings |
| π± Widgets | Home screen (S/M/L) and lock screen widgets |
| π¨ Glass UI | Modern glass morphism design with weather animations |
- macOS: Ventura 14.0+
- Xcode: 15.0+
- iOS: 17.0+
- Swift: 5.9+
# Clone the repository
git clone https://github.com/and3rn3t/weather-app.git
cd weather-app
# Open in Xcode
open weather.xcodeproj- Select your target device/simulator
- Press
Cmd+Rto build and run - Grant location permission when prompted
weather/
βββ Sources/
β βββ App/ # App entry point
β βββ Views/ # SwiftUI views
β βββ Models/ # Data models (Codable)
β βββ Services/ # API integration
β βββ Managers/ # State managers (@Observable)
β βββ Utilities/ # Visual effects & helpers
βββ Assets.xcassets/ # App icons & colors
βββ Documentation/ # Feature documentation
βββ Info.plist # App configuration
βββ weather.entitlements # App capabilities
This project includes custom instructions for AI coding assistants:
| Assistant | Instructions File | Purpose |
|---|---|---|
| GitHub Copilot | .github/copilot-instructions.md | Code generation, patterns, standards |
| Claude | .claude/CLAUDE.md | Architecture, troubleshooting, context |
These files help AI assistants understand the project's architecture, coding patterns, and conventions for more accurate suggestions.
| Document | Description |
|---|---|
| QUICK_START.md | Getting started, build commands |
| FEATURES.md | Complete feature documentation |
| BUILD_CONFIGURATION.md | Xcode settings, schemes, diagnostics |
| CONTRIBUTING.md | Contribution guidelines |
| Document | Description |
|---|---|
| CHANGELOG.md | Version history |
| AI_DEVELOPMENT_GUIDE.md | AI assistant instructions |
| APP_STORE_GUIDE.md | App Store metadata |
- SwiftUI - Declarative UI framework
- SwiftData - Persistent storage
- Swift Charts - Data visualization
- WidgetKit - Home & lock screen widgets
- CoreLocation - GPS and location services
- MapKit - Location search
- MVVM - Model-View-ViewModel architecture
- @Observable - Modern reactive state management
- async/await - Swift concurrency
- Environment injection - Dependency management
<key>NSLocationWhenInUseUsageDescription</key>
<string>We need your location to show weather for your area</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>We need your location to show weather and send alerts</string>Run tests in Xcode with Cmd+U or use the Makefile:
# Run all tests
make test
# Run tests with code coverage
make test-coverage
# Run with test plan (parallel, sanitizers)
make test-plan
# Run performance tests only
make test-performance- Unit tests:
weatherTests/ - UI tests:
weatherUITests/ - Test plan:
weather.xcodeproj/xcshareddata/TestPlans/WeatherTestPlan.xctestplan
The project includes a Makefile for common development tasks:
# Build
make build # Debug build
make build-release # Release build
make clean # Clean DerivedData
# Testing
make test # Run all tests
make test-coverage # Tests with coverage
make test-plan # Use test plan
make test-performance # Performance tests only
# Code Quality
make lint # Run SwiftLint
make format # Format with swift-format
make analyze # Static analysis
# Release
make archive # Create archive
make export-ipa # Export for App Store
# Analysis
make analyze-build-times # Find slow compilation
make analyze-size # App bundle size analysis
make profile # Build for Instruments
# Setup
make setup-tools # Install build tools
make install-hooks # Install git hooksThe app includes several performance optimizations:
- Cached URLSession: Network requests use a shared session with 10MB memory / 50MB disk cache
- Static Formatters: Number and date formatters are cached to avoid repeated allocations
- Request Debouncing: API calls are debounced to prevent excessive requests
- Deferred Initialization: Non-critical init (Siri shortcuts) is deferred after first frame
See BUILD_CONFIGURATION.md for details.
All documentation is consolidated in the docs directory at the repository root:
User Documentation:
- Multi-Platform Guide - iOS + Android development
- Privacy Policy - Privacy information
- Support - Support resources
Developer Documentation:
- Quick Start - Getting started guide
- Features - Complete feature list
- Build Configuration - Xcode settings & diagnostics
- AI Development Guide - AI-assisted development
- App Store Guide - Publishing guide
- Changelog - Version history
AI Configuration:
- AI Development Guide - Complete guide for AI coding assistants
- Shell Integration - Advanced development automation
For complete architecture documentation, see ARCHITECTURE.md.
We welcome contributions! Please read our Contributing Guide for:
- Development environment setup
- Code style guidelines
- Pull request process
- Testing requirements
MIT License - See LICENSE for details
- Weather data provided by Open-Meteo (free, no API key required)
- Icons from SF Symbols