Skip to content
Back to projects
  • Product Design
  • Mobile
  • Front-End

Wheely Weather

Forecast data turned into a ride verdict, optimal hourly windows, and kit recommendations. Built with Expo for iOS, Android, and web.

Role
Solo designer and developer
Year
2026
Status
iOS, Android, and web from one Expo codebase.
Wheely Weather showing a green ‘CLEAR FOR RIDING’ ideal-conditions verdict for Portland.

Overview

Wheely Weather answers one core question before a ride: is it worth going right now? Conversations with recreational and commuter cyclists highlighted three weather signals that mattered most: dew point, feels-like temperature, and wind speed. Among these, dew point was the most critical indicator riders missed in standard weather apps.

How It Works

I designed the app around a clear verdict scored by the weakest weather signal. The app assigns a rating from Great to Bad and explicitly names the limiting factor whenever conditions drop. Raw weather numbers remain visible for riders who want to inspect the details. When conditions are poor, the hourly forecast highlights the next favorable riding window, while the same data powers personalized kit suggestions.

Wheely Weather hour-by-hour ride-quality chart with a POOR sticker, Today’s kit guidance, and The numbers cards showing raw weather signals.
The hour-by-hour chart reads as a window, not a forecast: ride quality by hour, a Now marker, and kit guidance below.

System Design

The screen layout matches the sequence of questions a rider actually asks: can I go, why did it get that rating, and what should I wear? A shared TypeScript scoring domain in src/domain/ powers the ride-quality logic across every platform, while theme-aware components render the same tree on iOS, Android, and web.

Built With

The app is built from a single Expo Router and React Native codebase targeting iOS, Android, and web. The web version is live on Cloudflare Workers at wheelyweather.app. Open-Meteo provides forecast data by default, with Apple WeatherKit integrated on iOS through a custom native module. The project is backed by strict TypeScript, Vitest unit tests, Playwright end-to-end tests, and GitHub Actions CI.

Let’s build something useful.

Start a conversation