It’s not much for some parts of the world. But I’m well enough from this that I even took the time to build a small calendar app (https://lowtechguys.com/grila) from which all the funds will go to my brother’s college costs so he can stop working 12h/day jobs.
Before this I tried creating paid web services but none took off. I realized I actually don’t use any indie web product after 8 years of professional coding. I’m only using web products from big companies like Google, fly.io, Amazon etc.
Desktop apps on the other hand, most that I use and love are made by single developers.
With the ascent of Apple Silicon, and the ease of SwiftUI, this has the potential of bringing a modest revenue while also being more fulfilling than a corporate job.
In case you’re curious how the code looks for something like that, here’s a small open-source app that I built in a single (long) day, which has proven to be useful enough that people want to pay for it: https://github.com/alin23/Clop
I would love to read some blog with more details about your experience.
As a long time backend and full stack developer my brain is stucked in web services. Which works Well as employee but when it comes to have your own product you are playing against Google,AWS,meta and so on.
I worked as a web dev for 5 years first, and those skills transferred well into the marketing and API part of the apps.
For example my Lunar app even has a CLI that is implemented as client-server and the app also provides an API for controlling displays remotely or through a Raspberry Pi server. That would have been very hard had I not known how to write an API.
The good thing is that usually you just keep growing from this. Now it’s making $1k per month, mostly because of sharing it with the world and implementing recurrent annoyances shared by users.
It’s important to have a way for users to contact you. I love Formspark.io for that, just slap a contact form on the app website and emails will start coming.
Thanks for following up. One q: I suck at building landing pages. Do you have any tips here? I have some ok-ish copy already distinct from the App Store page, but I hate finagling HTML.
In my experience, knowing CSS is 90% of making a pretty and informative page. HTML is mostly just h1 for title, h2 for subtitle, div for groups and p for copy text.
I don’t like writing neither HTML nor CSS so my websites are written in Plim with Tailwind classes for styling.
section#hero.min-w-[100vw].flex-center.flex-col.relative.pb-20
img.w-28.h-28.md:w-32.md:h-32.filter.drop-shadow-2xl src="/static/img/clop-icon.png"
h1.mb-6.text-4xl.text-zinc-600 Clop
h5.text-gray-500.m-0.p-0 Clipboard optimizer for images
h5.text-gray-500.m-0.p-0.-mt-1 Copy large, paste small, send fast
You can see how most of the text is just Tailwind classes which are basically CSS one liners.
It’s not easy to understand nor pretty to read, but it makes for super fast iteration time, especially because of the responsive breakpoints (e.g. .flex-col.md:flex-row for a vertical layout on mobile and horizontal on desktop)
Thanks! I'll give it another shot; by the time I get around to working on marketing web stuff in my day (after work + parenting) I am pretty tired so I never give it a fair shot. Will check out carrd.io.
> Before this I tried creating paid web services but none took off. I realized I actually don’t use any indie web product after 8 years of professional coding. I’m only using web products from big companies like Google, fly.io, Amazon etc.
What kind of paid web services did you try, if you don’t mind me asking? I’m thinking about going this route myself, but I hear you - I’ve also pretty much bought exclusively from the big guys.
Any other learnings from the web service route you could share? Like what tech stack / platform did you use? How did you try to market your service? Can you see other reason (than not being big / trustworthy enough) why it didn’t work?
My most ambitious web project was https://noiseblend.com which is a web app for discovering music on Spotify.
It’s a next.js + React slow and memory hungry mess [1] which could have been static HTML with some JS for the dynamic bits.
Experience taught me to keep it simple nowadays, but I had to go through the Noiseblend mistakes first.
The stack is Python with Sanic for the backend, Postgres for db and Redis for cache.
That’s what remained after removing all the unnecessary services I implemented because I thought they were paramount: high availability, data locality, time series databases, performance monitoring, alerts etc. Forget about those until you start making money on the product.
The biggest disadvantage a web service has over a desktop app is that you have to keep it up. No matter what, you have a server to manage and make sure it keeps responding. That worry doesn’t exist on offline desktop apps.
The other is finding the market for it. Noiseblend didn’t have a market, and it being dependent on Spotify didn’t allow me to ask for money unless I did something more. That’s another problem, avoid creating functionality that depends heavily on big companies.
I thought about “pivoting” and turning it into a playlist building tool for DJs. I added filtering songs by key and mode (e.g. A minor) and asked a few people if they would use such a thing. Turns out that they use a semi-offline desktop app [2] that already does that and is much faster and powerful.
Oh well, at least now I have a way to find songs to improvise on with my Kaval and guitar.
From my observations, people are reluctant on paying for websites. I guess they don’t feel as “owned” as a desktop app.
For whatever reason, the hero video at https://lunar.fyi/ makes Safari use 100% of all cores, Webkit.GPU goes nuts, WindowServer unresponsive… works fine on Chrome however. Monterey 12.5.1, iMac 5K, 27"
I think that might be because Safari uses the HEVC version of the video. I'm also seeing 25% usage on an M1 Max MacBook, which is more than I expected.
Firefox and Chrome don't have noticeable CPU usage. They only support the H264 encoded video.
I might have to reencode the video and optimize for hardware decoding. Default ffmpeg options were not enough apparently.
Safari is the only browser that can activate the HDR subsystem on these Display P3 screens, and by doing that it taxes the GPU more when playing back video.
This is interesting, along with the discussion it started below. Thanks! Im a windows and linux (and andorid)user so I'm not to in tune with the mac world
How did you find paying users( or just users? i see you have free trials and free tiers) Does the app store offer that much discoverability?
For the first 3 years, Lunar was my only app, and it was completely free and not on the App Store. I just had a one page website with the app UI screenshot and a download link.
Since the app was free, I didn't seek out users too much. I just shared it on the usual channels of the time and forgot about it: ProductHunt, HN, Lobsters, Reddit
It became popular by itself because it solves a real need that people have and after picking up a bit of steam, it gets recommended a lot.
That generated a large peak in downloads, and people started recommending it again. Blog posts on technical challenges I solved while developing the apps also help a lot but they're high effort and I need 2-3 months to accumulate enough research and knowledge for them.
Before Mac, I was both a Windows and Linux power user. I never saw someone buy a thing on Linux, not that it doesn't happen, but it's a rare occurence so I don't think there's much business there.
On Windows however, people buy software all the time.
Find the Windows inconvenience that annoys you the most, build something to fix it and share it with the world for free. If a handful of people find it useful, chances are there might be tens of thousands more like that who would even pay for you to work and fix more related annoyances that they have.
I have no idea in what state Windows UI programming is nowadays though, it wasn't pleasant last time I tried it 5 years ago. But even system tray utilities with minimal UI can be very useful.
Love lunar! I have my shortcuts/hotkeys configured and it's a breeze to switch between super dim, medium brightness, and full-on-hyper-bright-it's-time-to-crank-some-work-out brightness. Thanks for this great app.
Thanks for Lunar, I have been using it b/c the native apple software wouldn't let me adjust light on my external monitor properly.
Also, I love the secret, extra brightness levels it allows on the main screen, especially when I am outside. Do you know if there is any risk of damage to the brightness by using it at the higher settings?
I once had software that me increase the volume of my macbook speakers and one day I was working and vibing to the song and pushed the volume all the way up... and blew a speaker out...
How do you market your apps, and how much time and money do you spend marketing and advertising them?
If conventional wisdom is to be believed, it seems like the difference between building an okay app and a great app doesn't matter that much, because success depends on investing the vast majority of the effort into marketing. That's a big deterrent for me — I'm much more interested in building awesome things than hawking them.
I spend very little time advertising them. Maybe 3 times a week I get an email with a relevant keyword mentioned on HN or Reddit, and in 2 of those cases I spend a few minutes writing a concise comment.
About 3 times a year I do promos on Twitter to get more followers and spread the word a bit more through retweets.
And then I have the blog posts I write, which do take a lot of time, but they are mostly for sharing knowledge, not for advertising. Although they do help get some eyes on the apps as well.
> If conventional wisdom is to be believed, it seems like the difference between building an okay app and a great app doesn't matter that much
I'd say the difference matters a lot. Since being in these circles, I notice how low quality apps (or just apps where the author didn't give them much thought after launch) don't get recommended as much if at all, and bad rep is spread on them which deters people from even trying them.
I'm more inclined towards the "a good product sells itself" line. It definitely doesn't sell itself if people don't know about it, but you have a much higher chance to get picked up by vocal people and groups and recommended around if your app is high quality and makes a good impression. Even more so if you hear what people have to say after trying your app and try to improve the app for a few months after the launch.
Hey, Thanks for Lunar. There are other free alternatives but Lunar's Pro makes it easy for me to have the external monitor have some sane sync with my primary display.
Lunar looks like it's quite extensive. (And the website looks great!) How much work have you put into it, over what period, if you don't mind me asking?
I’d say I had a year of full time work (on and off in 3 years of time) until I had Lunar 3 which was the most stable until Apple Silicon arrived: https://github.com/alin23/lunar/tree/lunar3
I had accumulated about $5k in donations over those years which allowed me to quit my job, do 6 months of full time work in 3 months of time, and launch Lunar 4 with support for Apple Silicon: https://alinpanaitiu.com/blog/journey-to-ddc-on-m1-macs/
After that, the hard work started because now I had paying users asking for a stable app that was very Hardware dependent on a completely new macOS architecture. 9 more months of full time work followed.
Right now it’s finally quiet. I do about a bug fix and small feature release per month and I have plenty of time to work on my other apps.
I see you sell apps directly and from the AppStore. What do you think about mac AppStore? The word in the street is that it's not growing and users aren't using it and developers are hating it because it lacks [INSERT FEATURE]. Is that right?
I love the App Store product and what it offers, what I don’t like is the bureaucracy that grew around it.
Because Lunar uses lots of private and reverse engineered APIs, it isn’t allowed on the App Store, so I had to replicate a lot of the distribution myself:
- payments and refunds
- license activation
- anti cracking measures
- automatic (and rolling) updates
- making a website for the app
- SEO (the App Store is quite good at this)
- error reporting and crash data collection
- anonymous analytics
- making sure I’m not mishandling any user data
I mostly opt for the App Store nowadays because it saves me the hassle for all of the above, but it comes with a number of pains and disadvantages:
- no trial mode for one-time purchase apps
- the sandbox is very limiting: no private APIs, no full disk access, no Accessibility Permissions etc.
- the review process is more annoying than helpful
- the user ratings can hurt the business a lot when the product is harder to understand and users leave an angry review because they didn’t read the description before buying the app
For the trial thing I have my own solution where I publish a trial-only build on my website and a link to buying on the App Store when the trial ends.
The sandbox, well I found workarounds for most of my needs [1] but I still skip building some ideas because I know they would never be approved.
The reviews are as annoying as ever [2], I even got my name in a Wired article [3] because of that. They can be very discouraging.
- in-app purchases come with more disadvantages than a one-time purchase (harder to implement, more UI and explaining needed, restoring purchases is a confusing thing)
- I don't want ads in my products
- there's not much functionality to limit, since the apps are very focused on a single thing
- App Store reviewers don't approve apps that limit functionality too much
The App Store way of doing this is with an additional $0 in-app purchase named "7-day Trial", but I tried it and it creates an incredibly confusing experience for users.
I usually open source free apps, that I don't think I'll ever be able to sell because "who else could have the same problem as me?"
If it turns out that people have a need and want to pay for Pro features, I try my best to keep the source available for the free part of the app, and only encrypt the code that constitutes the paid features.
That happened with Lunar, and it seems to start happening with Clop as well.
I have no idea if it did impact my profits at all, but it did help other people to start competing with me. The only competitors to Lunar (MonitorControl and DisplayBuddy) started by using Lunar's code [1] for controlling monitors on Apple Silicon [2], as Lunar was the first app to get that feature.
Competition is still good though, as long as it's not break-neck competition. I learned how to make Lunar simpler in terms of menubar UI from MonitorControl, and got some ideas on how to implement Custom Presets from testing DisplayBuddy.
I’m notified when keywords related to “human wants thing, my app can do thing” appear on HN, Reddit and Lobsters.
If I can then contribute with information to that discussion, I’ll also leave a link to my app.
Don’t just self plug, people (myself included) appreciate more detailed information on how they can solve their own personal problem, instead of being thrown into “here’s an app, figure it out”
Thanks! I only learn by building small ideas and looking into the Apple documentation through Dash (https://kapeli.com/dash) and searching "how to do X" on Google. So I can't recommend material from first-hand experience.
On a first glance it seems to cover a lot of stuff I use regularly in SwiftUI, but also some videos are quite long. It depends if you like learning by watching, or by doing.
building for app-stores is also kinda niche sorta these days. most businesses want to be on the web mainly with a presence the app stores. i make about $10k each month with Red Goose [1] with focus on the app stores.
That's a really good product for businesses, yes. They need a web presence as most are just stores and catalogs. A mobile app is a good complement to that.
What I'm building and noticing on other macOS developers are system utilities, that have no web equivalent. Things like window managers, app switchers, clipboard history, hardware controllers etc.
It's a smaller niche, but closer to the users. It makes a dev feel like less of a cog in a big system, and more of a craftsman giving people a way to solve their frustrations.
By the way, do you think noiseblend.com would fit into Red Goose? I tried both Ionic and Cordova but there were two big disadvantages to them:
- way too much work to pack a Webpack+Next.js+React frontend into an app (and I didn't want to sell it, so not much incentive to put in that work)
- both were still using older WebViews on iOS instead of the newer WKWebView and the memory requirements of Noiseblend triggered iOS OOM killing the app
I'm curious if you're using a newer (or simply stabler) packing technology.
Red Goose uses a Swift WKWebView wrapper for iOS (fairly latest) and Kotlin for Android. It’s stable enough but also just a step behind the bleeding edge.
I like to keep all my app specific developer controls (UX/UI, functionality etc.) in my web-app and put in only very specific native modules that an appstore forces me to use.
NoiseBlend should be an easy conversion from what I can see prima-facie.
Lunar, my best selling app, is outside the App Store. But I had to do 2 to 4 months more work to replicate what App Store is doing. See my more detailed comment here: https://news.ycombinator.com/item?id=33621601
Sharing the link on the appropriate platforms is my best working version of marketing. Word of mouth takes over after this. See my comment here: https://news.ycombinator.com/item?id=33621814
I tried paid ads on all major platforms, but unless you have money to sink in, you’ll mostly just lose money and annoy a few people.
wow, zoom hider! just yesterday i was in a zoom saying i wish i had something that could keep the damn floating controls hidden when i hit escape, and there it is. fantastic
I escaped my stressful corporate job 1 year ago and I’ve been living comfortably since then from app revenue only.
I’m making between $3.5k and $9k per month with https://lunar.fyi/ and the smaller apps I create at https://lowtechguys.com/
It’s not much for some parts of the world. But I’m well enough from this that I even took the time to build a small calendar app (https://lowtechguys.com/grila) from which all the funds will go to my brother’s college costs so he can stop working 12h/day jobs.
Before this I tried creating paid web services but none took off. I realized I actually don’t use any indie web product after 8 years of professional coding. I’m only using web products from big companies like Google, fly.io, Amazon etc.
Desktop apps on the other hand, most that I use and love are made by single developers.
With the ascent of Apple Silicon, and the ease of SwiftUI, this has the potential of bringing a modest revenue while also being more fulfilling than a corporate job.
In case you’re curious how the code looks for something like that, here’s a small open-source app that I built in a single (long) day, which has proven to be useful enough that people want to pay for it: https://github.com/alin23/Clop