Ulovo

Case

An iOS app that combines weather, pressure, the Moon and twilight into one bite forecast for a chosen fishing spot.

Role
UX/UI Designer
Team
The only designer
Platform
iOS
Status
In development
Type
Freelance · 2026
In short
Problem
An angler needs one answer: is it worth going today, and when exactly. The data for it is scattered – weather, wind, pressure, the Moon, twilight.
What I did
The only designer: 12 flows and 86 screens and states. No brief and no tests with people – decisions rest on scenarios, iOS constraints and the weather API.
Result
Home answers “go or not, and when” before any scrolling, with none of the first version’s contradictions. The app is in development.
12flows from splash to system states
86screens and states
11 pxminimum text on Home, up from 6–8 px
Ulovo – project screens
Context

The data for it is scattered – weather, wind, pressure, the Moon, twilight. The task: turn it into a forecast that reads in seconds and cover every state of a real app. There was no brief: I gathered requirements along the way with the client and the developer. There were no tests with people either, so decisions rest on scenarios, iOS constraints and the weather API.

Structure

The core is three forecast tabs: Home, Weather, Calendar. Around them – sign-in, the Pro subscription, profile and states that can appear on any screen.

Decisions
Decision 01

Home: the answer first

Why
The first version contradicted itself: an “amazing day” above a storm warning, 100% and “Now 84%” on the ring, different pressure on two screens, 6–8 px labels.
What I did
Two versions. A – the same structure without contradictions and with text from 11 px. B – the decision first: activity → best time → hourly chart → conditions, without the carousel that hid the chart.
Result
Home answers “go or not, and when” before any scrolling.

StatusI handed both versions to the client, who likes the direction.

Three versions of the home screen: the first one, A with a fixed structure, B with the verdict first
First version · A · B – decision first
Decision 02

The fish filter changes the whole forecast

Why
Choosing a fish changes the bite calculation across the app, and “Pike” and “Zander” are Pro-only – that has to be visible before the tap.
What I did
The filter sits at the top of Home instead of a menu. “All fish” is free; paid modes carry a lock and a Pro badge. After purchase the mode turns on immediately; without it, “All fish” stays.
Result
The paywall appears at the moment of value, and each mode has its own chart and peak: pike in the morning and evening, zander at dusk.

StatusApproved direction, project in progress.

Fish filter, Pike and zander paywall, Pike mode with Pro
Fish filter · paywall · “Pike” mode with Pro
Decision 03

The forecast works by the water, offline

Why
The forecast is needed by the water, where there’s often no signal, and people may not allow geolocation.
What I did
Every main screen has loading, offline and error states. Offline shows the last forecast with its update time; without geolocation the spot is chosen by search.
Result
Instead of an empty screen by the water, people see the last forecast and know how fresh it is.

StatusStates exist on every main screen of the mockups.

Home: skeleton, no internet, no location selected
Skeleton · no internet · no location chosen
Decision 04

Swiping between days

Why
The developer suggested switching days with a swipe on Home instead of going to the calendar. But a swipe on its own is invisible: added as is, people won’t guess it exists.
What I did
Two hint options. A – a “1/3” counter next to the location and dots at the bottom. B – a day indicator at the top under the location, like in stories: you see how many days are available and which one you’re on. Past days don’t swipe; 3 days without a subscription, a week with Pro.
Result
The swipe now has a visible hint: the indicator shows there are several days and where you are among them.

StatusThe client chose B, which I recommended too.

Two options for the day-swipe hint on Home
A – counter and dots at the bottom · B – day indicator at the top (chosen)
System

States and system

Settings apply immediately, an expired session returns to sign-in with the e-mail filled in, and a push opens the right screen. UI kit: 4 variable collections, 14 text styles on SF Pro, light theme as a mode switch. Weather backgrounds are tied to OpenWeather codes, so developers don’t have to invent the mapping. For the iOS “Reduce Transparency” setting every glass surface has an opaque fallback colour: a semi-transparent option was dropped because the system can ignore transparency too.

Session expired, splash, notification center
Session expired · splash · notification centre
Outcome
  1. 01

    The hardest part was the hierarchy of indicators: a short overview on Home, a detailed forecast on “Weather”, linked by the chosen spot and day.

  2. 02

    The data shaped much of the interface: the hourly forecast comes in three-hour steps and only five days ahead, the API doesn’t return water temperature – so it was removed, and only the weather icon fits into a calendar cell.

  3. 03

    Next: test with anglers whether the overview is enough to decide when to go, and whether the bite activity reading is clear.

Next
Contact

Write to me

It goes straight to my inbox, and I’ll reply from there.

Testimonials

Leave a testimonial

It appears on the site after I review it.