I’ve published my first mobile app and you should, too
The making of Twelve O’clock App
I’ve had “Publish a mobile app” as an empty checkbox in my 101 life goals list for years. I didn’t feel like working on it until last year during the transition between my 2 jobs. An idea came to my mind and accidentally became a journey of making my first mobile app. I enjoyed the process very much and the best part is, my users seem to enjoy using it too. And some paid.
Hi everyone, my name is Hieu. I’m a watch lover, a UX design enthusiast and a software engineer (yep, in that order) who’s been 10+ years in this industry. I’m going to share the making of my most successful app Twelve O’clock (That was a joke because I have only one so far). Besides the intention to brag about it, I want to inspire the engineer folks out there who are having some never-finished projects or some great work that they’re probably too shy to share with the world. Well hey, you’re just a few steps away from making the world a better place.
I’m gonna tell the story behind the app and my takeaways from the making of it. You are about to know why I started this app, how did I do it, how long did it take, how did I get the best out of the constructive feedback as well as the negative ones, what to expect and what not, what I’ve learned from the journey, what I could have done better.
Enough for the intro. Let’s go back in time a little bit to 2021…
Chapter 1: The Making
Why This App?
As mentioned earlier, I consider myself a watch lover. My watch collection has evolved from a Casio F-91W to a few mechanical watches (including both hand winding and automatic) in the last 20 years. And I do care about how accurate my watches are. Like, an obsession. Mechanical watches are not extremely accurate compared to the quartz ones, they keep time within a certain tolerance. (smartwatch owners, please spare me. I also have a Garmin Fenix, FYI)
I started to track the accuracy of the watch I wore (and I rotate them quite often to give each of them some decent wrist time). At first, I didn’t really track but roughly observe the difference in seconds between my watch and my iMac’s clock every day. When the numbers go pretty stable I can tell, for example, “this Hamilton Jazzmaster runs slow -4 seconds per day”. Things got messier when I bought more watches and I had to find a more convenient way to do this task.
The idea of using Google Sheets was so lame to me that it wasn’t going to happen. The apps I found on App Store were nowhere close to what I expected for such kind of app: simple UI, easy to use, and actually usable. Some apps even require registering with my email which I think is completely unnecessary and a no-go for me. I felt the urge to create another app for my own use, to my own standard. But was there a large audience out there that also has the problem I’m having?
Searching on Google “Tudor Black Bay 58 accuracy” (or any automatic watch model) gave me quite a few results. I was convinced that horology enthusiasts around the world share the passion of tracking their watch accuracy. Some just love tracking it, the others act on it (bring it to service to improve the accuracy, or adjust it by themselves). You can find such kind of thread on watchuseek.com, or tagheuerforums.com.
I found an opportunity to create an app that solves not only my problem but also the community that I’m a part of.
My Expectations
This step is very important and it’s not easy. I tried to keep my expectations low enough to keep myself grounded and at the same time it should not be too humble that it’ll kill my motivation to create something great and meaningful. This is the list of the expectations sorted by how crazy and ambitious they are:
- First and foremost, the app is for my own use: I do need an easy-to-use app with great UX that works the way I want. If the market does not accept it, I have to be the only one who finds it valuable that solves my problem.
- The app revenue should cover its own marketplace’s cost: Apple Developer Membership ($99 USD/year) plus Google Play Store membership ($25 USD - one-time fee). Basicly $99 USD/year. I want my app to feed itself so that I don’t have to spend my pocket money every year to pay for the membership fee. This has potential, but again it should not put too much pressure on my shoulder.
- The app should pay off my effort: this is a reasonable expectation. I work for myself and I deserve to be paid like any developer I’d hire. To do that, it’s required to log my time and I’ll talk about it shortly in “Always keep track of your time”.
- The app should reach $1,000,000 in revenue: It’s not silly if you think about it. Imagine you make an app or a service that’s so good and so cheap that 1,000,000 users are willing to pay $1 each. This concept has come across me a long time ago when I stepped into the startup world and searched for a strategy to make money. Of course, easier said than done. If it’s that easy, I’m surrounded by millionaires now.
Wireframing and Prototyping
I like hand-drawing the wireframes. That’s my habit to physically get started on a project without any distraction from the computer and other digital devices. Here’s why:
- It’s fast. Nothing can get in your train of thought. The drawing simply flows from your imagination and connects to each other in a natural way I don’t know how to describe. It just matches the way my brain works.
- You can do it anywhere: on the bus, on the train, in the bathroom.
- There’s no Undo button, which is great because sometimes you might find the throwaway idea was the best one.
- It only contains the main elements of the app UI that help communicate about the skeleton of what you’re going to build.
Designing My Own Images and Graphics
Design time is exciting time. I think everyone should learn to design. You’ll find yourself starting to speak the same language with the designers in your team, understand (a part of) their perspective and the difficulties they’re facing. At the end of the day, you’ll work better as a team player.
Thanks to my part-time job as a Photoshop-er during my college, I have no trouble with design work. Although there are ready-to-use and free online services that allow me to quickly generate the mockup images for this purpose (placeit.net, theapplaunchpad.com, preview.app, screenshots.pro,…) I’m too picky and I’d like to have full control to customize my design for future use. It takes much more time and effort to finish such kind of task obviously, but I had a chance to get familiar with Figma.
Photoshop is great but Figma is awesome! The more I use Figma, the more I like it. It’s such a great tool to design, prototype and collaborate. I’m using it for all of my mockups, banners and UI design. I couldn’t recommend it enough.
Figma Tips
Figma is super easy to get started with. You can visit Figma’s Youtube channel or learn from the hands-on tutorial right inside the app.
Choosing Ionic React
If you want to move fast toward your goals, choose the tools you’re most familiar with. Set aside the desire to learn new tools for later. That was what I had in my mind when I chose Ionic React as the framework to build my app. I’ve created dozens of Ionic templates for more than 5 years and built a mini business out of it at TakeThatDesign but yet never had an actual app for my own.
Ionic Framework and its ecosystem have everything I need to build a cross-platform mobile app that can run on iOS and Android with the same source code. Did I forget to mention that Ionic apps can be also deployed as a web app or a desktop app the same way Slack is doing? This is definitely the way to go for early-stage startups to quickly ship their products to the market.
Besides Ionic, there are a few other options including React Native, Flutter and a lot of articles that compare the pros and cons of each framework. At the end of the day, they are just the tools to get your job done. Choose the right one.
Release Early. Update Fast
My app can be either successful or nobody cares about it. I never know until I get it validated by the market and I have to do it early. There’s no way around it. As soon as I saw the key features of the app working on my phone, I wrapped it up and shipped it. I deliberately chose App Store as my first launchpad and delayed the Google Play Store release by 1 month.
I noticed that recently App Store reviews and approves app submissions very fast and typically it takes only about 48 hours. That is impressive!
The next step was simple. I used my app every day to keep track of my watch collection as if I’m the most demanding user I’ve known. When I saw a bug, I added it to the backlog or even jumped right into the code and fixed it as soon as I could. At this stage of the app, I submited the updates frequently and sometimes 2–3 versions in a week.
Pricing Model
Freemium. $1 USD In-app purchase.
I recalled my own experience when I first tried Dropbox and Evernote ten years ago. I was able to use the core features before deciding to pay and only pay when I think it was worth it. That’s how software should be sold.
I replicated the same experience with my app. Users can, without paying upfront, get inside the app, use it and decide if it’s helpful and make their life easier.
And why is it $1 USD? Go back to the concept of having 1 million users I mentioned earlier.
And 🥁…My First Sale $$$
They say “Sh!t is getting real”.
I got my first sale for the iOS app after 3 days of publishing it!
Zero marketing cost. To be honest, I didn’t have time to think about marketing strategy and also, I thought nobody was going to purchase it in the first month.
It was only $1 in sales but it marked an important milestone in my career: my mobile app sells. I felt on top of the world and could not stop myself from sharing the news around with my friends. Time went by so fast that one day I realized the number of paid users had reached 1,000! And the app is doing so much better than I expected.
Reaching the first 1,000 users is the most difficult. The next 1,000s is a bit less difficult. Keep shipping value and users will come to you. That kept me going.
Building a Community
Users want to be heard, and you need to listen to them sincerely. Building a community is the next thing I’m looking into. At this scale, I chose to do the simplest thing: register a Twitter account as the main channel to get feedback, post announcements and updates, and interact with my users. I do have Facebook Messenger Plugin on the landing page but most of the time the messages slipped out of my attention. Meta’s Business Suite app didn’t do a good job.
I didn’t know how big my community was until the recent major update v2.0.0 (including major upgrades for React, Ionic and other dependencies). A few hours after the release, the Twitter account received tens of mentions and DMs regarding some bugs and UX changes that confused users. I didn’t have any idea that my tiny app had such an impact. That took me by surprise and at the same time motivated me. At that exact moment, I knew the app had created something bigger than myself. There are people around the globe using my product and I’m responsible to take care of their experience.
Shameless Promotion
This was funny. I didn’t want to spend money on ads. I hate ads myself. Then I came up with a few ways of advertising my app that I didn’t think I could ever think of. I stopped doing it these days btw.
I was a disguised watch reviewer and I wrote a few posts on Reddit and one of the biggest forums for watch lovers Watchuseek. At first glance, those posts looked like any other watch reviews, except for the part where I deliberately included the app download link at the end. Not long after that, the admin on Watchuseek found out and gave me the notice to remove the referral links. I instead generated a few screenshots that contain the accuracy data and the download link and hoped someone would ask about the app I used or follow the link in the images. I guess I didn’t break the rules 🤷🏻♂️
The posts are still there today:
Activity Data is Your Assistant
Keeping track of the app usage is very important and it helps you understand your users’ habits and put your attention on the things that really matter.
While I decided not to ask for emails or registration to completely respect the user’s ultimate privacy, activity tracking is still a must to understand how the app is doing, what to focus on and what to improve. All activity data is anonymous. In the first release I didn’t really pay attention to this aspect and I ended up having a hard time figuring out what features users were using the most and what not. Now with the help of Mixpanel I can see my app alive in real time and whether people are (anonymously) using the new features I’ve just dropped. How cool is that!
User Feedback
You know you made an impact when you get some feedback. That keeps you connected with what you’re doing and encourages you to take follow-up actions.
Because the communication channels have been established, sooner or later, user feedback will come to you. They can be the comments and ratings on the marketplace you published your app. They can come as a mention on Twitter, a message in your DM or a cold email in your inbox. But one thing for sure: they are not all roses.
Good news: I have a framework to receive user feedback in a healthy and positive way.
- Firstly, I should feel grateful when someone spends their time giving a rating or writing down their comments. The worst thing is that nobody cares and they just stop using your product quietly.
- Secondly, I see the positive feedback as my motivation, and the negative ones as opportunities to improve my app and bring it closer to the number one on the market.
- Thirdly, users are always right from their point of view. Try to put on their shoes, understand their problems and clarify them if needed. Don’t be afraid. I ever needed to reply back and forth to a user’s comments (with a 3-star rating) on App Store until I gained back the 5-star. Sincerely show that you’re there to help. That makes the difference.
What’s next
I’ll keep observing, fixing bugs and adding new features. I have a few cool ideas when using the app daily. Sometimes new ideas come from users’ feedback and I’m so thankful for that. They exchange messages with me and some even send me pseudo code to explain their idea!
I was thinking of introducing a subscription model in which users can have some advanced features they’ve asked for. In return, I can use that new revenue stream to pay for the cost of 3rd-party services, for example: storing all checkpoint data on the server so people can have their watch collection synchronized between their devices and on the web. This is one of the most requested features so far. Or I can even bring a mini social network to the app where people can brag about their watch collection and share their journey to this hobby. (Now that I realized it sounds exactly like a Subreddit).
Twelve O’clock App has been launched for more than a year and I’m happy to share that the annual developer membership will be secured for years to come. I’ll take this chance to create more apps. Stay tuned!
Chapter 2: Takeaways
I’ve learned a bunch of things when working on this app and these are 5 of them.
Good UX Saves Money and Time
I’ve learned from a UX Design course on Udemy and at some point in my career I witnessed the power of good UX (and the opposite). The idea is that the user experience should be well taken care of on a level that:
- A user knows exactly how to interact with a product to accomplish their task without the creator sitting next to them and giving guidance.
- Rarely makes mistakes unintentionally.
- And even if they do, they should be able to recover by themselves with the minimum losses, and eventually accomplish their task.
There are so many companies out there investing a lot of money in user acquisition and customer support but support tickets keep coming in and piling up over time. The bigger the user base is, the more likely the CS team is overloaded and the vicious cycle keeps on going. Meanwhile UX should have been invested more in the early stage and it’s quite underrated even in the long run.
Twelve O’clock is a small app with a few simple features but I don’t expect to repeatedly reply to emails and messages with the questions like “How to use? Why is it like this and that? Where’s the button? etc”. So I tried my best to make sure the app is dead easy to use:
- An intro slideshow with a step-by-step guide is a must-have: it seemed to work. And even if users tend to skip most of the time, users are able to find it again easily.
- Less is more: only one primary button on each screen. Only the most meaningful info should be displayed. And it’s based on user preferences.
- What is what: tips and notes should show up where users need them the most.
- “I’ve seen this behavior in other apps”: maintain the right balance of external and internal consistency when it comes to UI/UX design patterns.
- Test and test and test: as mentioned earlier, I use my app every day as if I’m the toughest user I’ve ever known.
In this case, good UX decisions definitely saved me a lot of time and helped me acquire new users.
Always keep track of your time
And be your own Project Manager.
I have a habit of keeping track of the hours I spend on my side projects using Trello. On top of it, I’ve been using this Chrome Extension called Scrum for Trello for years to display the time spent on each card and each list. You can definitely use any tool of your choice to achieve the same thing. It doesn’t have to be too strict (don’t be so hard on yourself) but in general you should know roughly how much time you’ve worked on a Trello card.
I also forced myself to break down a big task into smaller pieces and do it properly as if those tasks can be assigned to an outsourced team. This really helped me focus on a certain area of the app at a time and make me feel more productive. Whenever I finish a card on Trello it feels great immediately because I’m getting closer and closer to my big goal. Yes, that the The Psychology Of The To-Do List.
Now, here’s just a scenario that might give you a different perspective on why you should track your time: Imagine tomorrow someone knocks on your door and they are interested in acquiring your app. How do you calculate your work’s valuation? And since you’re nowhere close to a successful SaaS company, your best bet is the amount of time you’ve spent on it.
Here’s another benefit: you’re effortlessly building up the skill of doing project planning and giving an estimate to the tasks. Outsourcing the project or doing it by yourself, now it’s up to you.
Tips
#1 Forget what time you started to work? Sometimes I do, too. I got a solution for this. I usually refer to the timestamp of the very first screenshot I took during the session (I take a lot of screenshots), or check my browser history for the very first link I opened.
#2 Try Notion besides Trello. I already put it on my to-do list on Trello.
The MVP Mindset
MVP stands for Minimum Viable Product aka “it’s ugly it’s messy but it just works”. Don’t think too much and too big that your own idea scares you. Keep it simple and focus on the functionalities first, that’s the key. Be grounded and put your users on a high priority. They are the emotional creatures who interact with your app’s interface trying to accomplish a task and move on with their life. Don’t waste their time (and yours), go straight to the point and solve their problem with as little distraction as possible.
I created the first MVP of my app with just 2 screens: log the checkpoints and view the calculated accuracy. The additional elements of the interface and other fancy, creative stuff were slowly added long after I was satisfied with how I use the app for the sole reason it was born: to track watch accuracy.
It was struggling to fight with my inner self, a perfectionist-wannabe trying to polish the app from every angle before the “big” launch. Please don’t fall for that trap. When you feel ready, it’s already too late. Well, not for this scale of a product but you got the idea.
You Can NEVER Satisfy Everyone
Never expect to have all 5-star ratings. It’s not going to happen even to the best apps on the marketplace. Get ready to receive some unpleasant comments on your app. It’s unarguably not easy to deal with such kind of feedback but you need to look back at your core values and know what really matters. Users might use the app in an unexpected way, or you might have designed it in a way that it confused them. Look at the bright side of it: someone used your app and spent their time commenting.
Never expect to fulfill all feature requests from users, including from yourself. That’s an expensive expectation. Instead, treat each request or suggestion as an item in your product backlog. Treat them equally. It’s very important to know how to prioritize and decide what changes make the biggest impact and be the most meaningful addition to the product. You’ll need the analytics data, or sometimes just listen to your heart.
There are some exceptions that you’d need to respond with a little bit of your personality instead of a commercial fake smile. Speak up against bad users and their silly comments if you feel confident enough about your products and services. Well… do it at your own risk. This is not an advice though.
You Always Have Time To Create Cool Stuff
I used to wonder how I can spare 50 hours to finish a side project while I have a full-time job. Then one day I realized that I simply don’t have to think of it as 50 hours straight. Make it 30 minutes per night, then it’ll be roughly 3 months. Easy.
The next challenge is procrastination, our old friend. To start something is easy. To finish it is hard. Life has too many distractions in front of you. How do I fight this syndrome:
- Set a fixed schedule: make it a habit. You might have come across the concept of “atomic habit”. Block a short amount of time every day, or twice a week and force yourself to sit down and work on your project.
- Warm-up: you don’t need to eat that frog instead you should start with some simple and comfortable task. Changing text color or fixing some typos could be a good candidate.
- Build up the flow: as soon as you start working on something, you slowly get in the zone that once you’re in it, you’ll find the motivation to continue to work on it. Be careful, it’s addictive sometimes. Remember to stand up or take a walk every hour, and stay hydrated.
And that’s the end of my story. Happy crafting!
Download the app
Honestly, this app may not be for you if you’re not into mechanical watches but I leave the links here anyway:
App Store
Google Play Store
https://play.google.com/store/apps/details?id=com.takethatdesign.twelveappofficial
Have an idea to exchange? Here’s my LinkedIn profile.