Codable for seamless API integration.
Air Quality Models
AirQuality
The primary model for air quality data from the Open-Meteo API.Int
required
US Air Quality Index (0-500 scale)
Double
required
Fine particulate matter ≤2.5 micrometers in µg/m³
Double
required
Coarse particulate matter ≤10 micrometers in µg/m³
Double
required
Carbon monoxide concentration in µg/m³
Double
required
Nitrogen dioxide concentration in µg/m³
Double
required
Sulfur dioxide concentration in µg/m³
Double
required
Ground-level ozone concentration in µg/m³
BreezeApp/Models/AirQuality.swift
AQIStatus
Provides human-readable status information based on AQI value.String
required
Status label: “Excellent”, “Good”, “Moderate”, “Unhealthy”, etc.
String
required
Visual emoji representation (✨, 😊, 😷, 🚨, ☠️)
String
required
Friendly description of air quality conditions
String
required
Color theme identifier (e.g., “aqiGood”, “aqiUnhealthy”)
[String]
required
Array of health tips and recommendations
BreezeApp/Models/AirQuality.swift
Pollutant Models
PollutantType
Enum representing individual air pollutants with their properties and thresholds.BreezeApp/Models/Pollutant.swift
PollutantType
Fine Particulate Matter (PM2.5) - particles ≤2.5 micrometers
- Good limit: 12 µg/m³
- Moderate limit: 35.4 µg/m³
- Icon:
wind
PollutantType
Coarse Particulate Matter (PM10) - particles ≤10 micrometers
- Good limit: 54 µg/m³
- Moderate limit: 154 µg/m³
- Icon:
cloud
PollutantType
Nitrogen Dioxide - from vehicle emissions
- Good limit: 53 µg/m³
- Moderate limit: 100 µg/m³
- Icon:
car.fill
PollutantType
Sulfur Dioxide - from fossil fuel combustion
- Good limit: 35 µg/m³
- Moderate limit: 75 µg/m³
- Icon:
building.2.fill
PollutantType
Ground-level Ozone - formed by sunlight and pollutants
- Good limit: 54 µg/m³
- Moderate limit: 70 µg/m³
- Icon:
sun.max.fill
PollutantType
Carbon Monoxide - from incomplete combustion
- Good limit: 4400 µg/m³
- Moderate limit: 9400 µg/m³
- Icon:
flame.fill
PollutantReading
Represents a single pollutant measurement with status calculation.BreezeApp/Models/Pollutant.swift
Pollen Models
PollenItem
Unified model for displaying pollen types and plant-specific data.String
required
Unique identifier (plant code or pollen type code)
String
required
Display name (e.g., “Grass”, “Tree”, “Oak”, “Birch”)
Int
required
Pollen index value (0-5 scale)
String
required
Category description from API (e.g., “Low”, “Moderate”, “High”)
Bool
required
Whether this is a specific plant (true) or general pollen type (false)
String?
URL to plant image (only for plant-specific items)
String?
Botanical family name
String?
Pollination season description
String?
Visual characteristics of the plant
[String]?
Health tips and recommendations
BreezeApp/Models/PollenData.swift
PollenLevel
Enum for pollen severity levels with color mapping.BreezeApp/Models/PollenData.swift
Climate Models
ClimateDataPoint
Historical temperature data for climate trend visualization.UUID
required
Auto-generated unique identifier
Int
required
Year of measurement (e.g., 1980, 1990, 2000, 2010, 2020)
Double
required
Maximum temperature in Celsius
BreezeApp/Models/ClimateData.swift
Location Models
City
Model for city search results and location data.Int
required
Unique city identifier from geocoding API
String
required
City name
String?
Country name
String?
Administrative region (state, province, etc.)
Double
required
Latitude coordinate
Double
required
Longitude coordinate
BreezeApp/Models/City.swift
TopCity
Predefined cities for the ticker display on the landing page.BreezeApp/Models/City.swift
User Preference Models
AppearanceMode
Enum for theme selection (light, dark, system).AppearanceMode
Follow system appearance settings (default)
AppearanceMode
Always use light mode
AppearanceMode
Always use dark mode
BreezeApp/Models/AppearanceMode.swift
API Response Wrappers
AirQualityResponse
GeocodingResponse
PollenResponse
ClimateArchiveResponse
Theme Colors
Breeze defines custom color extensions for consistent theming across the app.Background Colors
Color
Primary app background color (adaptive to light/dark mode)
Color
Card and surface backgrounds with improved contrast
- Dark mode:
UIColor(white: 0.15, alpha: 1.0) - Light mode:
UIColor(white: 0.91, alpha: 1.0)
Color
Search bar background color
- Dark mode:
UIColor(white: 0.2, alpha: 1.0) - Light mode:
UIColor(white: 0.92, alpha: 1.0)
AQI Status Colors
Color
Green color for Good air quality (#34c759)
Color
Orange color for Moderate air quality (#ff9500)
Color
Orange-red for Unhealthy for Sensitive Groups (#ff6b00)
Color
Red color for Unhealthy air quality (#ff3b30)
Color
Purple color for Very Unhealthy (#af52de)
Color
Dark red for Hazardous air quality (#8e0000)
Pollen Level Colors
Color
Green for no pollen (#34c759)
Color
Green for low pollen levels (#34c759)
Color
Orange for moderate pollen levels (#ff9500)
Color
Red for high pollen levels (#ff3b30)
Color
Dark red for extreme pollen levels (#8e0000)
Climate Trend Colors
Color
Gray for neutral temperature change
Color
Green for cooling trends (#34c759)
Color
Orange for warming trends (#ff9500)
Color
Red for significant warming (#ff3b30)
BreezeApp/Extensions/Color+Theme.swift:3-40