Weekly Indie Log #19
Topics: Blog development, growing expenses and a productive programming week.
This was the first full week of full-time indie hacking for me. I have to say, that it still feels pretty odd to be "free". I will probably need a couple of weeks to get used to it and find my old pace again.
Let's start with a meta topic this week: I recently checked the statistics page for this blog (which I get automatically, thanks to Hashnode). It really surprised me that it had over 10k visits and over 4k unique visitors in the last 90 days. I wouldn't have expected to see big numbers like this and I'm pretty happy about this result. Another cool milestone: Over 100 people subscribed to the newsletter and get this issue right into their email inbox.
I get many questions about whether I want to monetise this blog sooner or later. For now I'm content with the current state of the blog and do it just for the fun of it. The writing of the weekly indie log holds me accountable and I think that writing in general is a pretty great hobby to have. I even plan to write more articles (outside the weekly indie log series) in the upcoming months.
Growing revenue means growing expenses
If you kept up with the news around me lately, you know that January was a great month for app business. I grew my revenue to over $33,000. That's awesome and I'm still super happy and surprised about this huge number. But here is a little "downside" to that story: I have to pay more for the subscription to my Payment Provider RevenueCat. They base the pricing on monthly tracked revenue and I'm on a (legacy) plan which costs me $8 for every $1k in generated revenue (over the course of the last 28 days).
Someone asked if I have plan to write the payments and purchases handling by myself to save money in the future. In my opinion, that actually sounds pretty stressful and time-consuming. I'm really happy to pay for the reliable services and SDKs of the RevenueCat team, so I have more time to focus on developing new features for my apps.
This week I finally finished the iOS part of the big HabitKit home screen widget rewrite. Here is what I did this week:
Added responsiveness so that the widgets look great on different iOS devices. Now it doesn't matter whether you run it on an iPhone SE or an iPhone 15 Pro Max. The widgets should always look good... if I did everything correct!
Added an empty state: When the user tries to configure a habit in the current version without having created a habit previously, the widget would just crash... I added a proper empty state, nudging the user to create a habit first. I even implemented the navigation to the "Create a new habit" view when the user clicks on the empty widget.
Added the paywall: Home screen widgets are only available for Pro users. I had to recreate this functionality with SwiftUI.
I implemented the small widget type: This task was done pretty quickly, because I was able to reuse almost all SwiftUI views I wrote for the medium widget.
The next step is to brush up my Kotlin and Android knowledge and start the implementation of the Android home screen widgets. This will be super hard because I no almost nothing about it and always (almost) have to cry when I upgraded my Flutter version and then need to fight the Android development toolchain.
The (Android-focused) todo list for next week will look something like that:
Upgrade project dependencies and Gradle version
Find out how to import custom fonts and FontAwesome into Android projects
Build the header component and make the completion button interactive
Find out how to implement the consistency grid
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!