Weekly Indie Log #16

Weekly Indie Log #16

Topics: $2k in one day, home screen widget rewrite and finding fulfillment

Check out my apps: HabitKit, WinDiary and Liftbear

As usual, let's start this log with the weekly celebration of small and big wins: This week I had a really big win. My apps (mainly HabitKit) managed to generate over $2,000 revenue on a single day. Keep in mind, that I'm talking about total revenue here, so things like the Apple/Google 15% cut and sales/income tax has to be subtracted from it. Still, this is absolutely crazy and I can't express how grateful I am for this surge of new users and sales.

I'm 100% sure that this is an effect of seasonality though. The total revenue and especially my MRR will probably go down by a lot in February/March. Lots of people make new years' resolutions and start new habits in January, but fail to be consistent and ultimately churn again. Nevertheless, I hope that HabitKit helps people stick to their new habits and improve their lives.

You see in the screenshot below, that the revenue on Google Play is higher than the revenue on the App Store. Sure, there is also some randomness in these numbers, but it's safe to say that my Android revenue is slowly overtaking my iOS revenue. I get much more downloads and therefore sales on Android because I rank higher for certain keywords (especially for habit tracker on the US store).

Image

HabitKit Widget Rewrite

Because I still have to work on my regular job, I didn't have much time for progress on the big HabitKit widget rewrite. As I already wrote last week, I'm currently rebuilding the home screen widgets of the app to a more native approach. Previously, I just generated screenshots of the grid that should be displayed in the widgets in the Flutter code, read that screenshots from the disk in the widget and displayed it.

As you may have guessed, that's a big problem when you want to introduce interactivity to the widgets because there is no way to detect if the user tapped on the correct part of the screenshot. It also felt very hacky and I'm positive that this will be a huge win for the app in terms of user experience.

Here is what I managed to do this week: I focused on reactivity and hooked the button event handler to the repository code of my Flutter app. Now, when touching the button (completion indicator) it calls my Flutter code, adds a completion to the database and then automatically updates itself to reflect the new state. I imported my color scheme to SwiftUI and managed to display all relevant icons like the check and the plus icon.

I also implemented the segemented circle for habits which allow multiple completions per day. It was a little bit difficult for a complete SwiftUI noob like me, but with the help of ChatGPT and some math, I managed to get it into an acceptable state.

Next up: Implement the consistency graph and finally fill those squares 💪

Image

Finding Fulfillment

This week I read a great article by Jason Cohen (definitely make sure to check out his complete blog, so many great articles there!) and the section from the screenshot below really resonated with me: That's exactly why I feel so happy working on my own products. Being in control of everything and working creatively. I'm really happy that I was finally able to quit my regular job and completely focus on my app business next month. I'm sure it will be a great booster for my mood and improve my lifestyle heavily!

Image

That's it for this week, see you in the next one 👋

Did you find this article valuable?

Support Sebastian Röhl by becoming a sponsor. Any amount is appreciated!