- Zane Helton
Every now and again I start a project that really speaks to me. It brings me joy to work day in and day out to complete it. This is a post about the process of building and launching Piano Trainer– my most successful solo project to-date!
Most of my side-projects are a side-effect of learning new technologies. I found Tauri a while back and it branded itself as a lightweight framework for building cross-platform apps. This was certainly something I wanted to try, especially because I could use my existing React knowledge to build the UI.
I already had this idea for a tool that teaches scales, chords, and the circle of fifths so that I could stop Googling “E melodic minor scale piano” and “circle of fifths.” The biggest requirement for me was that it had to connect with my MIDI keyboards so that I could interactively practice. If it could do that, I’d be happy.
For about a month, I dedicated my time to the development of Piano Trainer. I was building it purely for my own satisfaction but I suspected others would find it useful. As the first week went by, the UI was looking better than I had hoped. By the second week, the functionality was mostly in-place thanks to some incredible open source libraries. The third week was mostly bug fixes & polish.
After about 20 days of continuous coding, the app was nearly complete. I was already having fun “bug testing” and I was excited to see that it ran on macOS, Windows, and Linux with no extra work. Not to mention the app size is tiny (16.1 MB on macOS.) Thanks Tauri!
During the fourth week, I knew that I wanted to promote Piano Trainer to get some feedback. My marketing strategy is the same as many other indie developers: Post in relevant subreddits, launch on ProductHunt, and create a “Show HN:” post on HackerNews.
What I’ve learned from past projects is that you only get one shot for a launch campaign. I did some “competitor analysis” of recent solo launches to see what worked and what didn’t. The most common trend I noticed among successful launches was simple and eye-catching presentation.
If the average person can read the title and understand what it is, that’s +5. If you can provide a thumbnail (or logo) that further reinforces that understanding, that’s another +5. It seems obvious, but it’s quite easy to create confusing titles and ugly thumbnails.
As a result of this competitor analysis, I renamed my project from “Scale Trainer” to “Piano Trainer” and created some really simple graphics in Figma to give people quick visual cues of what the app will do.
My favorite graphic is the one I created for the GitHub banner. This banner is optional and I’ve never created one before, but I’m so glad I did. It causes the project to take up much more space and the colors are bright enough to draw attention to it. I even photoshopped the app to look simpler than it really is to improve the signal-to-noise ratio. I believe the banner made a large impact on how much attention the repository received on GitHub.
Another first for me was posting Piano Trainer on itch.io. I noticed that people were posting “Software Tools” and they had a “Music” category as well. The cherry on top was that they have a great system for “donationware.” People can donate the amount I recommend, they can donate more or less, or they can skip the donation altogether to download it for free!
I spent another two days setting up the itch.io page. I made the page colors match the app’s colors. I added screenshots, wrote a description, and even recorded a video of the tool in-action. I did all of this with the aim to make Piano Trainer more approachable without having to download it.
After all of that, I made my HackerNews post (making sure that my title was worded well.) I made 2 different posts about 7 hours apart to reach different timezones. The second post caught lots of traction and as a result brought people to the first post as well! This meant that I made it to the front page of HN 2 times (🤭) one ranking #6, the other ranking #11 at their peak. This on its own was enough for me to call Piano Trainer a success! I’m a frequent HN visitor and making it to the front page was quite exhilarating.
I posted to ProductHunt around the same time. I do not use ProductHunt nearly as often but I know it can be useful for getting those first few users. I deployed the same strategy of
- Simple title
- Simple thumbnail
and would you look at that? We made it to #3 of the day! The top 3 is rather coveted as there are many products that launch here every single day. I engaged with every comment (upvote + response) in hopes that it would drive more engagement. It certainly seemed to work and once again– in my opinion was a success.
Lastly, I posted around in some subreddits. Posting on Reddit was more difficult than I anticipated because it’s not common for people to promote their software in /r/piano for example. I had to figure out the best way to engage per-sub. For some subreddits, I made a full post, for others, I just left a comment if someone was asking how to practice their scales. I definitely broke some rules, but I made corrections if anyone called me out and I made it clear that this was a free and open source tool.
A couple days later and my posts were old news. I wanted to see how Piano Trainer was ranking on Google– in the beginning it was near page 7…
After a few weeks I decided to search Twitter for “Piano Trainer” when I saw this:
My stomach dropped in the best way possible. The GitHub Twitter account made a tweet about Piano Trainer! I will cherish that tweet for years to come and I do not care if you think the joke is corny! To me it is perfectly perfect.
This tweet, along with the HN and ProductHunt posts, continued to improve my SEO ranking. As of today, I’m the 2nd result on Google for “Piano Trainer” and I’m very pleased with that. It provides a baseline of traffic that I can build on.
Strategies I Forgot to Mention
- Ask your friends to upvote your project, it makes a huge difference for new posts in my experience.
- I also asked the Tauri Discord to upvote my posts– what an amazing community they’ve got.
- Do not mention your product is in “Beta.” It won’t help.
- Write about your project. I keep a Developer Log on itch.io to describe any updates. It really made me think about what I was doing and it helped me formulate future plans.
- Allow people to translate your project! Quickly after the launch, someone recommended that I add an i18n library to Piano Trainer. I did and people have already translated it into 5 additional languages! This certainly expanded the reach of Piano Trainer.
How Much Did You Make?
In the interest of transparency, I wanted to share how much this project made after all of that. In total, this side-project made $160.00 in gross revenue after 1 year. The recommended donation is set to $3.00 and the average dono was $4.62 at the time of writing this. That surprised me!
I think with additional promotion, the project would regain relevance. Maybe I'll do that at some point.
I like to do new things and currently I do not have the bandwidth to work on new features. The haters will say Piano Trainer is dead, but that is far from true. When I have free time, Piano Trainer always pops into my head and there are certainly improvements to be made. Stay tuned!