SkyForecast
A mobile weather app whose interface changes with the conditions it is reporting.
- Role
- Software Engineer
- Status
- shipped
Problem
A forecast is only useful if it reads at a glance. SkyForecast pulls live conditions for a location and moves the interface with them, so the screen looks like the weather it is describing before you have read a number off it.
Architecture
Read this diagram as text
- React Native app mounts React Navigation
- React Native app reads Device location
- React Native app fetches Weather API
- Weather API drives Dynamic theming
Engineering decisions
The stack, reasoning not written up yet:
React Native · Expo · NativeWind · React Navigation · Weather API
The hard part
A theme that changes with the weather changes while someone is looking at it. Conditions arrive from the API in categories that do not map onto anything visual — light rain and drizzle should not produce two different screens — so the app reduces them to a small set of visual states and transitions between those rather than re-theming on every field that moves. Location is the other half: a device that cannot get a fix, or is refused permission, still has to show something, so the last known location is kept and labelled as such instead of the screen going blank.
Result
Location-based current conditions and multi-day forecasts, with temperature, humidity and wind detail, weather animations, and a theme that changes with the conditions being shown.
Live and source
No public deployment — this one is not hosted anywhere a visitor can open. Happy to walk through it.
