Back to all cases
Mobile App · iOS & Android

Wayly — explore your world

A map tracker that turns everyday walks into world exploration.

Wayly blends a fitness tracker with a fog-of-war map: you don't just record a run — you uncover territory, plan routes and watch a personal map of the world light up, step by step. I took it from concept to a working app on a real device, solo: product strategy, design system, UI — and the Flutter code that runs it.

Role
Product Designer & AI Design Engineer
Solo — strategy → design → code
Type
Mobile app (iOS + Android)
Timeline
2026 — ongoing
Live
Wayly — explore the world, uncover your territory
01 — Context

The market is split in half — and nobody bridges it.

There are two camps of apps, and they don't talk to each other. Fitness trackers — Strava, Garmin, Nike Run Club — give you precise metrics, pace and social. But the moment a workout ends, the map goes dead: the run is logged, and that's it. Explorer apps — Fog of World, Jagat — have a beautiful map-reveal mechanic but a thin sport layer: no real workouts, no elevation profile, no route planning.

The insight it all started from: people who run and hike want their activity to accumulate into something visible. Not abstract kilometres in a table — a personal map of the world they slowly light up.

Discover your worldWayly — discover your world
The positioning: an app for exploring the world, not just logging kilometres.
02 — Challenge

Constraints I designed around from day one.

Building solo means every constraint is also a design decision.

01

One codebase, two platforms

Solo build → iOS and Android from a single stack. That choice (Flutter) shaped the component model before the first screen existed.

02

Background GPS eats battery

The #1 killer in this product category. It had to be a design constraint, not a bug found after launch.

03

The map must always stay primary

So the whole UI is an overlay on top of the map — never separate pages that replace it.

04

Offline is the real use case

Trails and mountains have no signal. Recording must work with no internet and sync later.

03 — My role

Not "design it, then hand it off."

This isn't a classic designer-to-developer case. The value is precisely that the line between design and implementation is erased — I designed a solution and immediately verified it in code.

The design system wasn't born in a Figma vacuum: it came to life directly as a theme config and a set of Flutter widgets. When the iOS build crashed on launch, I diagnosed and fixed it myself — which means I owned the whole path from "drawn" to "runs on a real device."

Product strategy

Concept, persona hypotheses, a four-phase roadmap and the monetization model.

UX architecture

Screen map, navigation, state machines and edge cases — specified before the UI.

Design system & UI

Tokens, typography, spacing and components — authored as a real Flutter theme, not a static library.

Interface engineering

Building the app in Flutter (Riverpod, Go Router), integrating the map, GPS and the fog layer.

04 — Key decisions

Four calls that defined the product.

Decision 01

Hexagons, not a square grid

The fog of war runs on H3 hexagons at resolution 11 — roughly a 50 m radius per cell. Every GPS point maps to a hex index and marks that cell uncovered.

Hexagons read as more organic than squares, and they scale cleanly from a single street up to a whole country — which matters when the same mechanic has to feel right at both zoom levels.

The map is the product. Everything else is an overlay on top of it.
Fog of warColour your map — the fog-of-war layer
Colour your map — the app tracks your movement and uncovers the fog as you go.
Decision 02

A track that uncovers fog

Route recording is integrated with the fog layer: every point of a tracked route reveals the map around the path. None of the reference apps do this — it fuses navigation and the explorer mechanic into a single loop, so planning a hike and uncovering the world are the same action.

Planned and tracked routesExplore the map and collect prizes
Planned and recorded routes live on one map — and exploring it earns collectibles and points.
Decision 03

The route builder as a state machine

The route mode is the deepest part of the product, so I spec'd it as a standalone UX document — modelled as a state machine, which is a design and an engineering decision at once: Idle → Planning → Calculating → Preview → Navigating.

The user moves through it linearly but can always step back. A bottom sheet with three snap points (30% / 50% / 85%) keeps the map visible at all times and lets a single gesture control how much information is on screen. In trail mode the elevation profile is shown by default, because that's the product's signature scenario.

I specified the unhappy paths up front — no GPS permission, no route found, offline without a downloaded region, signal loss mid-navigation — so they were part of the design rather than a bug discovered in production.

Decision 04

Usage rules, not just a palette

The system is dark-first, map-centric and glassmorphic: panels float over the map as translucent surfaces so the sense of space survives.

But the important part is the constraints. The accent green is used only for GPS tracks and progress — never for CTAs. The reward amber is used only for achievements — never for navigation. Rules like these are what separate a design system from a colour palette, and they resolved most downstream decisions on their own.

Progress — countries and regions exploredProfile — level, XP and awards
Progress and profile — the "% of the world uncovered" stat is the product's core retention hook.
05 — Outcome

From concept to an app running on a real phone.

A working Flutter app — map with the fog layer, GPS tracking, activity recording and summary, route builder, profile and achievements.

A design system authored as code — tokens, spacing and radius scales, button variants and glass components, shipped as a Flutter theme rather than a static library.

A full UX spec for route mode — four phases, edge cases and the elevation profile — written before the UI was built.

An energy-aware GPS architecture — motion detection instead of constant polling, so the app isn't burning the battery while you stand still.

A freemium model that keeps the user's own data free forever, with Pro and lifetime tiers on top — plus the legal package needed for the stores.

Takeaway

Design-as-code collapses the loop.

When the design system is born directly as a theme and widgets, a whole category of handoff losses simply disappears. AI was a lever here, not autopilot — it accelerated architecture, boilerplate and build debugging many times over, but the decisions that define the product (hexagons over squares, a track that uncovers fog, strict colour-usage rules) were human ones. Constraints — battery, offline, "the map is always primary" — cut off dozens of wrong directions before the first mockup existed.