Skip to content
Projects / A93-06

Runner Bean

A run tracker you pay for once. No account, no subscription, and nothing leaves your phone.

Part no.
A93-06
Status
working
Platform
iOS
Year
2026
Stack
SwiftSwiftUISwiftDataSwift ChartsCoreLocationHealthKitLive Activities
0Third-party dependencies
0Accounts or servers
10sCrash-safe run journal interval
1×Payment, forever
01 — The problem

Every run tracker wants an account and a monthly fee, even though GPS, splits and charts all run fine on the phone.

02 — The case for it

Subscription fatigue is real. A one-off price for an app that's private by design, with an honest feature set, is a clear pitch in a crowded category.

03 — Back of the napkin
Back of the napkinRough · not a forecast

One-off purchase, ≈ €4.99. No subscription, by design.

  1. Downloads (assumption)10,000
  2. ×Buy the full app20%
  3. =Purchases2,000
  4. ×Price after Apple’s 15%≈ €4.24
  5. =Lifetime revenue≈ €8,500
Running costs
Servers
€0
Apple Developer Program
€99/yr
Maps
Apple MapKit, free
At 10× / 100×

Zero marginal cost: no accounts, no sync, no server. The constraint is App Store discovery, which is hard for paid-upfront apps, so a free download with a one-time unlock is the likely model.

Verdict

A small, honest, profitable app. Don’t expect a big business, but it earns its keep forever.

04 — How it works
Diagram · The GPS engine
  1. 01CoreLocationRaw fixes plus barometric altitude from CMAltimeter.
  2. 02FilterRejects fixes with poor accuracy, impossible speed or jitter, then re-anchors.
  3. 03Auto-pauseDetects stops and backdates the pause so splits stay honest.
  4. 04JournalThe run is saved every 10s and survives a crash or app kill.
  5. 05Store & shareSaved to SwiftData, then to Apple Health or a GPX export.
06 — Engineering highlights
01

Tested with replayed GPS

Recorded GPS scenarios (spike, tunnel, teleport, kill-and-recover) are replayed in tests, so the engine is proven before it ever goes outdoors.

02

Split into packages

RunEngine, Integrations and Design are local Swift packages, so the engine has no UI in it and is easy to test.

03

Designed first

All seven screens were designed as full mockups, then built against real store data.