Skip to content
Projects / A93-01

Doubleknot

Your most distracting apps stay locked until you've walked your steps — and on a team, nobody unlocks until everybody has.

Part no.
A93-01
Status
beta
Platform
iOS
Year
2026
Stack
SwiftSwiftUIScreen Time APIHealthKitVaporPostgresRailway
6,000Default daily step goal
€1.99Per month · or €10/year
185Commits, May → Sep 2026
10kUsers the backend was reviewed for
01 — The problem

Screen-time limits are easy to dismiss with one tap, and step goals are easy to ignore. Each one fails on its own because there's nothing at stake.

02 — The case for it

Make the walk the price of entry. Locking the apps people actually care about turns a vague health goal into a daily trade they can't wriggle out of. Team mode adds social pressure, which is what makes habit apps stick. Monthly "rescues" let one bad day pass without sinking the team. A low subscription price fits the impulse "I should use my phone less" moment.

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

Subscription: €1.99 a month or €10 a year, after a 7-day free trial.

  1. Installs in year one (assumption)10,000
  2. ×Trial → paid4%
  3. =Paying subscribers400
  4. ×Blended price (60% annual, 40% monthly)€15.50/yr
  5. −Apple’s cut (Small Business Programme)15%
  6. =Revenue per subscriber≈ €13/yr
  7. =Year-one revenue≈ €5,300
Running costs
Backend on Railway
≈ €20/mo
Apple Developer Program
€99/yr
Push notifications (APNs)
€0
Break-even
≈ 26 subscribers
At 10× / 100×

The backend only stores step counts and team state, so one small Postgres instance covers 100k users. Cost per user stays near zero. The hard part is getting people to install it, and that’s what team invites are for: every paying user brings in their friends.

Verdict

Profitable at tiny numbers. It will succeed or fail on distribution, not on infrastructure.

04 — How it works
Diagram · From blocked to unlocked without opening the app
  1. 01Pick appsFamilyControls picker. Chosen apps get a custom Screen Time shield.
  2. 02Count stepsCMPedometer plus HealthKit, including Apple Watch and Garmin data.
  3. 03Wake in backgroundSignificant-location-change wakes cover the time HealthKit can’t be read while the phone is locked.
  4. 04Check the teamVapor API on Postgres works out whether everyone has hit their goal.
  5. 05UnlockShields lift across the team and APNs tells everyone.
06 — Engineering highlights
01

Beating background limits

HealthKit background delivery is limited to roughly hourly, and it can’t be read while the phone is locked. CMPedometer plus location-change wakes unlock your apps the moment you hit the goal, without opening Doubleknot.

02

Two codebases

The iOS app and the Vapor backend are both Swift, so models and logic are shared between them. XcodeGen and fastlane handle builds and TestFlight.

03

Reviewed before launch

A written security and scale review targeted 10,000 users before any public beta, alongside a beta launch plan and a fix list.

04

Prototyped in HTML first

The daily loop, the dual-ring home screen, shield screens and widgets were each mocked as clickable HTML prototypes before any Swift was written.