Aether is a next-generation weather client that prioritizes aesthetics, privacy, and performance. Built entirely in Swift 6 and SwiftUI, it delivers a futuristic "Jules Verne" inspired interface while maintaining robust architectural principles.
Aether's design is its core feature. Here's a look at the futuristic interface.
- Language: Swift 6
- UI Framework: SwiftUI
- Persistence: SwiftData (
@Model-driven architecture) - Concurrency: Swift Concurrency (Async/Await, Actors)
- Networking: Native
URLSession - Minimum Target: macOS 14.0
Aether is built on the philosophy that weather data should be free and private.
- No API Keys: We utilize Open-Meteo, an open-source weather API that requires no authentication keys. This makes the project easy to fork and run without setup.
- Two-Step Fetch Process: Since Open-Meteo's weather endpoint requires coordinates, we implemented a robust Geocoding → Weather pipeline:
- User searches for a city → App queries the Geocoding API to get
(lat, lon). - App uses these coordinates to fetch precise weather data. This resolves the common issue of premium-tier restrictions found in other weather APIs.
- User searches for a city → App queries the Geocoding API to get
To reduce network load and improve responsiveness, Aether implements a custom in-memory caching system using Swift Actors.
- Thread Safety: The
WeatherCacheactor ensures thread-safe access to cached data in a concurrent environment. - Dual-Level Caching:
- Geocoding Results: Cached by city name to prevent redundant lookups for the same location.
- Weather Data: Cached by coordinate key
(lat, lon)with a 30-minute validity period. - Result: Instant load times for frequently accessed locations and reduced API strain.
We leveraged Apple's latest persistence framework, SwiftData, to manage user favorites.
- The
CityModel: Defined as a@Modelclass, allowing seamless binding to SwiftUI views. - Feature Set: Supports adding, removing, and reordering locations, with persistent storage of metadata like country codes and coordinates.
The visual identity is centralized in JulesTheme.swift, ensuring consistency across the app.
- Glassmorphism: A custom implementation using
UltraThinMaterialcombined with subtle gradients and borders to create a "liquid glass" effect. - Color Palette: A curated set of deep space purples (
#1d0245) and neon accents (Cyan#22d3ee, Purple#a855f7) to evoke a sci-fi atmosphere. - Typography: Monospaced fonts are used throughout to reinforce the "terminal/dashboard" aesthetic.
-
Clone the Repository
git clone https://github.com/your-username/Aether.git cd Aether -
Open in Xcode
- Double-click
Aether.xcodeproj. - Ensure you are using Xcode 15+.
- Double-click
-
Build & Run
- Select your target (My Mac).
- Press
Cmd + Rto run. - Note: No
.envfile or API keys are required!
Created by Arboy Magomba.



