← All roasts
DS-005·iOS app · 2026·750g

Wayknown

A Hong Kong transit app that keeps the few stops you actually use — bus, green minibus, MTR, and Light Rail — and has the next departures on screen before you ask. On the Home Screen, the Lock Screen, and the Apple Watch, in English or Traditional Chinese.

Role
Solo · design + build
Year
2026
Category
App
Weight
750g
Price
House blend

Roast
4/5
Notes
Glanceable · Bilingual · No sign-in
Stack
SwiftUI · WidgetKit · App Intents · watchOS · MapKit · Cloudflare Workers

Pulled on 2026 · Best by: always
Get it on the App Store ↗

The origin

Hong Kong publishes live arrival times for every bus, green minibus, and train, yet most transit apps still make you search for your stop every morning. I wanted the reverse: an app that already knows the handful of stops you use and shows their next departures the moment you look. So the app is built around groups — the stops that share a starting point, like home or the office — and it opens on the group nearest to you. One starting point can hold a group per destination, and the morning list and the evening list swap by themselves.

The Nearby screen: a Home group with bus, minibus, MTR, and Light Rail rows, each counting down to its next departure
One group, four networks — bus, minibus, MTR, and Light Rail in the same list.

The pull

Behind that one list sit separate open-data feeds for each operator — KMB, Citybus, New Lantao Bus, the green minibus, the MTR, and Light Rail — each with its own IDs and quirks. The app folds them into one row type, so a minibus stop and a train platform share the same list and the same widget. When the network drops, it keeps the last times it received and shows them as clock times with the moment they were read, so an old number never passes for a live one. Tap a row for the stop's next times, the route on a map, and every stop along the way.

A saved stop: the next bus arriving now, then in 15 and 30 minutes, above a map of the route and the stops along it
Tap a saved stop — its next times, the route on a map, and every stop along the way.

Adding a stop had to work with one thumb. The route keypad disables every key that can't lead to a real route number, so you can't type one that doesn't exist. Or skip the number: Find a route takes a destination, checks thousands of stops off the main thread, and lists the direct buses and minibuses that stop within a 500 m walk of both ends, widening to 800 m when none do — each with the walks, the stop count, and the next departure. The route list itself is rebuilt every week by a Cloudflare Worker, so new routes arrive between App Store releases, and the Worker refuses to publish a list in which any operator has lost more than a fifth of its routes.

Find a route from the current location to Tsuen Wan: seven direct routes, each with walking distances, stop counts, and departure times
Find a route — the direct buses and minibuses between two places, with the walk at each end.

Most days you never open it. Small, medium, and large widgets show the nearest group, with arrows to flip between groups that share a start, because a widget can't read a swipe. Lock Screen widgets and an Apple Watch app carry the same groups. Every screen and every stop name comes in English or Traditional Chinese, or follows the phone. And there's nothing to sign in to: no account, no analytics, no ads, and saved stops stay on your devices. Even the route-list server keeps no request logs, because a log line could hold an IP address.

The Home Screen widget with three live rows beside the Apple Watch app showing the same group
The widget and the Apple Watch show the same group — no app to open.

What came out

Live on the App Store · bus, green minibus, MTR, and Light Rail · 1,700+ routes · widgets + Apple Watch · no account, no analytics