skip to content

Flowbar - Menubar app for Markdown Notes

/ 4 min read

Flowbar

I’ve been using Obsidian for a while for notes, todos, rants. I love the simplicity of markdown files. But opening a full app just to check off a todo or jot something down(and hoping I don’t get distracted by something else in the process) felt like too much friction.

I was looking for something more lightweight that can be easily invoked from anywhere without switching context, and would work with my setup on top of the same markdown files. None of them felt right and I didn’t want yet another app I’d abandon in two weeks because it doesn’t sync with how I think and work. I wanted a thin layer on top of what I already had.

So I built it. Flowbar - a native macOS overlay app you can summon with a keyboard shortcut.

Process

I thought it would be quick. I don’t personally know Swift, but models can write Swift, right? I figured I could just describe what I want and ship it.

That’s… sort of what happened. But also not. The code part was mostly solved. What wasn’t solved was everything else.

I started by prototyping the UI on Stitch. Then moved to Claude Code for all the actual product work. Hundreds of commits and I rarely had to touch or think of code. But I still had to be in the loop the entire time in other ways. Ensuring that there is a verification loop, making sure the app felt good, thinking about the right layers to avoid the slop cycle.

Models don’t have taste(yet). The agent would write technically working code but ruin how a transition feels, miss the states for how sidebar should be dismissed, not handle all the different race conditions well, add an inconsistent off brand color, etc. These are the things that make an app feel good, something you would want to use daily than ditching after a fancy demo. And there are hundreds of these details.

A few things helped a lot. I got the agent to add tons of e2e tests to stop things from regressing in stupid ways. Also a bunch of skills that accumulated architecture decisions, design preference, pitfalls to avoid and other reusable instructions the agent could reference to stay consistent across sessions.

I also made it possible for the agent to verify its work which was super useful. It could take screenshots, and check how things look. And it could drive the app using Accessibility APIs, clicking on different things etc. like playwright but for native apps. Initially it was flaky because the accessibility tree was full of opaque labels like “group 4 of UI element 1”. After we renamed all the a11y fields properly though, reliability went way up.

Building the app was only part of it. I also wanted to build a website which looks good, a logo and a product video. The logo came in easy generated by an image model. For the website backdrop, I wanted a cinematic looping video, tried it with Sora and Veo, none of which worked well. I liked Grok’s output, it followed the instructions much better than others. It wasn’t looping cleanly though, so I got the agent to write a script using ffmpeg and SSIM - structural similarity. In simpler words, it compared frames across the video to find the optimal cut points where the start and end match best. That worked, you can see this looping backdrop video on the website.

For the product video, I used Claude Code with Remotion for the video and Gemini for the background AI music. This took a fair bit of back and forth, fixing text flicker on transitions, getting the pacing right, and making sure it didn’t look like a “cringe PowerPoint slide”, as I kept telling the agent.

Building a well-crafted app I’d want to use daily - something with a good UX and the right feel, is still hard. The “hand-coding” part is mostly solved, sure. But there is so much more that goes into making something good, product sense, architecture, design taste, debugging skills. And most importantly - the patience to care about details that no model will give a damn about.

But if you have good taste and judgment, you can build a lot in a short time and at a quality bar that was impossible to hit solo before.

It still feels magical to me that all this is possible. There’s something child-like about watching an agent trying different things, run builds, take screenshots of its own work, and iterate.

Try Flowbar here.