Overview
I built Balmy or Brisk originally to get to grips with Swift and creating apps for iOS. Unfortunately, at the time, I succombed to not being able to update to the latest MacOS and lost out on newer XCodes before abandoning.
Later on, I revisted the idea but switching to a web app instead.
The idea is simple: tap a button, share your location, and get back a verdict like "Balmy", "Brisk" "Juuust Right", or "Starry Night Sky" — complete with a custom illustration and animated background.
Key Features
- One-tap weather verdict — no scrolling through forecasts, just a single descriptive word.
- Custom condition logic that factors in temperature, humidity, wind speed, time of day, and sky conditions to produce results like "Balmy", "Brisk", "Foggy", "Snowing", or "Starry Night Sky".
- Native iOS app with SwiftUI, SpriteKit particle effects for snow and rain and Lottie animations.
- Custom-designed condition logos and branding.
How It Works
The backend is a Flask API. The frontend sends the user's coordinates to the Balmy server, which then requsts the weather for the user's position from OpenWeatherMap and runs the code to produce the correct condition by running through a decision tree.
The condition logic was the core design challenge. Early versions were a mess of nested if-statements that didn't handle edge cases well. I eventually settled on grouping weather descriptions into sets (clear skies, cloudy skies, snow conditions, thunder conditions, fog conditions) and running through them in priority order: nighttime checks first, then specific weather events, then temperature-and-humidity bands for clear/cloudy daytime weather. This made it much easier to work with and extend where needed.
The iOS version went through several Xcode project iterations. The final version uses SwiftUI with a MVVM-ish structure. I played around with SpriteKit particle systems for snow and rain effects as well as Lottie JSON animations for things like animating a sun designed in After Effects.
The whole thing was a personal project built for fun - a reason to tie together API design, weather data and animation work across web and native iOS.