Mainspring
What I was trying to figure out: whether a task manager could make me feel calmer instead of more accountable. I'd used the powerful ones — the ones with projects and tags and filters and a sense, every morning, that I was already behind. Mainspring was a bet that the opposite design existed: software that holds a little tension for you so you don't have to hold all of it yourself.
Context
The name is the bet. A mainspring is the coiled part of a mechanical watch that stores energy and releases it evenly — it's why the watch doesn't lurch. I wanted an app that did that with intention: wind it once, and it doles your attention out steadily instead of dumping the whole backlog on you at 9am.
Most task apps are databases with a nice front end. They scale infinitely, which means they never tell you that you've taken on too much. That infinity is the problem. A person who builds alone — no manager, no standup, no one to say "drop that" — needs a tool that pushes back, not one that obediently stores every yes.
Approach
I designed it around a hard limit before I designed anything else: the main view shows today, and today holds three things. Not a soft suggestion, not a "focus mode" you toggle. Three. Everything else lives in a backlog you have to deliberately visit, and pulling a fourth thing into today makes you push something out. The friction is the feature.
I built it in SwiftUI because it needed to feel native and quiet on a phone, and because I wanted the constraint of one platform done well over the spread of cross-platform mediocrity. CloudKit handled sync without me running a server or asking anyone to make an account — your tasks live in your own iCloud, which is exactly as much backend as a calm app should have.
The motion language took the longest. Completing a task doesn't celebrate; it relaxes — a small, slow wind-down, like tension leaving the spring. I cut every animation that felt like reward. Reward loops are how you build a habit; I didn't want a habit, I wanted a tool you could put down.
Decisions
Three tasks, enforced. This is the whole product. I lost early testers who wanted to "just see everything," and kept the ones who understood that seeing everything was the thing they were trying to escape. I'd rather have the second group.
No projects, no tags, no priority field. Every organizing feature is a small invitation to spend your day organizing instead of doing. The backlog is a flat list you triage by hand each morning. It's less powerful and far more honest.
A weekly review, not a dashboard. The one concession to history is a quiet Sunday ledger of what got done. No streaks, no charts, no productivity score. You read it, you feel something true, you close it.
Subscription, not one-time. A calm app still costs money to keep alive, and I'd rather charge a fair recurring price than bolt on features forever to justify upgrades. The pricing matches the philosophy: small, steady, no growth theater.
Outcome
Mainspring shipped on the App Store and found a small, loyal audience of exactly the people I built it for — solo founders, freelancers, a surprising number of PhD students. It doesn't top any charts and it never will, because the design actively refuses the mechanics that drive installs. The reviews I value most say some version of "I finally stopped feeling behind." That was the entire goal, stated back to me by strangers.
Financially it's a modest, real business — enough to justify maintaining it, not enough to quit anything. I've made peace with that. A tool that says no to its users is also saying no to its own growth, and I knew that going in.
Lessons
I underestimated how much people needed permission to use a limited tool. The three-task rule read as a gimmick until I wrote a short note explaining why — that the limit was the point, that overflow was the disease, not a missing feature. Adoption changed when the philosophy was visible, not just enforced. Design carries intent, but sometimes you still have to say the quiet part in words.
I'd also reconsider iCloud-only sync. It's beautifully low-maintenance and it locked out every Android user and every person who wanted to glance at their list on a laptop. The calm came partly at the cost of reach. Next time I'd at least leave a door open.
Credits
Solo design and build. Beta wrangled by a patient group from the indie iOS community; the wind-down animation is better because Rauno's writing on interface detail had been rattling around my head for a year.