What I got wrong building Lume Flow alone
Eight months shipping a focus app solo, and I got the hard part backwards. Notes on finding the loop before the features, why “together” isn’t a social feature, and the scope list I’d keep.
I shipped Lume Flow to the App Store as a solo developer. It is a focus app that also does the part most focus apps ignore: the break, and the people you take it with. Focus sessions, quiet rooms you can join, private notes, watching something together, and a set of arcade games for when you need four minutes away from a screen full of work.
That sentence took about eight months and three wrong turns to arrive at. Here are the wrong turns, because they are the useful part.
Mistake 1: I built features before I had a loop
The first version had a timer, a scheduler, statistics, tags, and a weekly report. It was, on paper, a complete productivity app. I used it for four days and stopped.
What was missing was a reason to open it a second time on the same day. A timer is a thing you use once and then forget you own. The features were all real; none of them formed a loop.
The loop that eventually worked is not sophisticated: start a session → hit a wall → take a break the app makes good → start another session. Four steps, and the app only has to be genuinely excellent at one of them. Everything I built before I understood that loop was decoration around an empty middle.
The question I should have asked on day one: what makes someone open this twice in one afternoon? Not twice in one week — twice in one afternoon. If you cannot answer it, you are building features, not a product.
Mistake 2: I thought "together" was a social feature
I planned rooms as a social layer — profiles, friends, presence, the usual scaffolding. Then I watched how people actually used the early build and the social part was almost entirely beside the point.
What people wanted was not company. It was evidence that someone else was also working. Nobody talked. Nobody wanted to talk. They wanted a number in the corner that said four other people are in this room right now, and a shared soundtrack so the silence had a shape.
That is a much smaller feature than a social network, and much better. I deleted profiles, deleted friend requests, and kept a count and a soundtrack. The rooms got more useful the more I removed from them.
Mistake 3: I ignored the empty room problem until launch week
Shared rooms have an obvious failure mode that I somehow planned around instead of for: on launch day, every room is empty. An empty room is worse than no room, because it is a feature visibly not working.
I had no good answer at the time. The one I have now is that a room should be worth entering alone. If the soundtrack is good and the timer is right there and the session starts cleanly, being the first person in the room is fine — and if someone joins twenty minutes later, that is a bonus rather than the whole premise.
I would build it that way from the start next time: single-player first, and every multiplayer feature has to degrade gracefully to one.
What actually worked: treating the break as a real thing
The decision I am happiest with is making the break a first-class object in the app instead of an afterthought between timers.
Most focus apps model a break as the absence of work — five minutes of nothing, and you are on your own to fill it. In practice everybody fills it with their phone, comes back worse, and blames themselves. If the app is going to schedule the break, the app should have an opinion about it.
So the break offers something with an ending: a short arcade run, a video with someone, a two-line note about what you just figured out. All of them finish on their own. None of them opens a thread you carry back to your desk. That is the entire design rule and it did more for how the app feels than any of the productivity features.
The scope list, in hindsight
| Feature | Kept? | Why |
|---|---|---|
| Session timer with a plan | Kept | The spine. Everything hangs off it. |
| Quiet rooms with a headcount | Kept | Cheap to build once the social layer was gone. |
| Short games for breaks | Kept | The reason people open it twice a day. |
| Private thought capture | Kept | Small, and people use it more than I expected. |
| Profiles and friends | Cut | Solved a problem nobody had. |
| Weekly analytics report | Cut | I never once read my own. |
| Tags and categories | Cut | Filing, dressed up as productivity. |
Things that are true about shipping alone
- The last 10% is 40% of the time. Not the features — the App Store listing, the privacy manifest, the screenshots, the support page, the edge case where the timer runs while the phone is locked. Budget for it as real work, because it is.
- You will confuse "I am bored of this" with "this is done". They feel identical from the inside at month six. The only defence I found is writing the finish line down early, while you still like the project.
- Nobody is coming to tell you the idea is wrong. With no team, bad ideas survive for months on politeness alone — your own. Ship something small and let strangers be rude about it instead.
- Your own usage is the only honest metric before launch. If you are not opening it on a normal Tuesday, no amount of enthusiasm from friends means anything.
What I would do differently
Find the loop before writing the second feature. Keep multiplayer degradable to one person. Make the break the product, not the gap. And write down what finished means in month one, when you are still optimistic enough to be honest about it.
Lume Flow is on the App Store now, free, for iPhone, iPad and Apple silicon Macs. If you try it and something feels wrong, I would genuinely rather hear that than a compliment — the about page has the best way to reach me.
Written by Ethan
Product engineer. I build apps I want people to actually find useful, and write about what breaks along the way — focus, arcade games, and the habits that make an ordinary day work.