Skip to main content
Breeze uses strongly-typed Swift structs and enums to represent air quality, pollen, climate data, and user preferences. All models conform to 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