Personal takeaways from building and monetizing an iPhone app as a side project


About Prestmo, an unofficial PRESTO card app for iPhone

In December 2017, my friend Nasim and I were wondering if we should build a mobile app as a solution to a problem we and many others in Toronto had: a convenient way to manage PRESTO card usage from your phone.

If you’re wondering what I’m talking about here, PRESTO is an electronic payment system used on participating public transit systems, specifically in Toronto.

There were great unofficial options in the Android world but there was nothing free on the App Store.

That’s why we started to work on Prestmo, an unofficial (and strongly branded as to avoid confusion) iPhone app for PRESTO that we first released as a 100% free app in February 2018.

We knew the project would be short-lived by nature since the goal would be that it gets replaced by an official app at some point.

In the meantime:

  • We went from an MVP to a monetized app
  • The app has been downloaded ~80k times
  • The app received ~600 ratings for an average rating of 4.3/5
  • The app has been a solid #4 for a relatively long time in the Navigation category on the Canadian App Store

Prestmo screenshots
Screenshots from the App Store

Building an MVP and getting feedback early

We knew that there was a gap in the market for this niche but we didn’t know how big the demand was and that’s why we wanted to test the market as quickly as possible.

At the end of the day, all the time we’d invest building an MVP could be potentially wasted and that’s why it was very important to be pragmatic by accepting some forms of tech debt and resisting premature optimizations.

It took us about two months working on the app only during weekends to finally get an MVP out, first as a 100% free app. As a technical note, using Expo and having no servers at all helped a lot.

The app allowed checking balance for just a single transit card and a single account and displaying recent transaction history associated with the card.

Quite quickly after the launch, we added an in-app feedback form and started logging some events to have metrics to watch.

In our case, we were surprised and pleased by the amount of feedback we received, being higher than we’d anticipated and mainly positive. Ultimately, the app reached #4 in the Navigation category on the App Store.

Top chartsGood review
On the left, the Navigation category top charts in May. On the right, a review from the App Store

Personal takeaway #1: Accepting tech-debt and building minimal features are keys for launching early. If I had to do it again, I think I’d try to get an MVP out even sooner by cutting more scope.

Personal takeaway #2: I really like the idea of identifying multiple gaps in the market, building MVPs to test the market, getting feedback and deciding what to work on then.

Accepting criticism can be hard

That said, not everything was positive. We were receiving feedback but a significant number of them were negative and were mainly about elements out of our control, such as updating the balance data quicker.

Bad review 2Bad review 1
Negative App Store reviews

I think this definitely had an impact on our motivation and for a few months, negative messages and reviews encouraged us to work on different projects that could be more appreciated. It’s easy to feel discouraged during those moments, especially when you didn’t earn a single dollar for the work you did.

However, I think it was a mistake, we should have been more pragmatic and we should have made explicit decisions based on data, not implicit ones based on feelings.

Personal takeaway #1: It’s hard to get a 100% approval rate of what one is doing but it should not be a blocker.

Personal takeaway #2: Depending on goals and opportunities, the decision of iterating or not on a product can/should be pragmatic -- having a single happy customer may be enough to give a project a go.

Using data to make decisions and generating revenue

After a few months, our user base grew and at one point during the summer we reached 1k downloads a day (which is not massive but interesting enough for a side project) and it’s only at this point that we decided to iterate on the app by building more features behind in-app purchases.

Thanks to the feedback we received, we were able to seize opportunities and decide what to build based on complexity, feasibility, and demand. Surprisingly, the most requested features were not what we’d originally anticipated.

In our case, a monthly subscription to unlock new features and including ads made sense, so we went with it and obviously, we inevitably received feedback from users who did not appreciate our paid-model.

But I now wonder whether we should have monetized the app earlier. Keeping the app ad-free for months probably helped to grow our user base but given the nature of the project was short-lived, perhaps it wasn’t the right bet.

Personal takeaway: Deciding when to monetize can be tricky but determining if users are ready to pay for the product is absolutely essential if the goal is to make money.


This project was implicitly a limited time opportunity and it may reach the end of its life soon since PRESTO will be releasing an official app that will make ours obsolete. And I’m actually excited about this, the fact that a city like Toronto did not have this yet was an anomaly.

On a personal note, I think side projects increase creativity and it helps to get the big picture and to focus on building products instead of code. It was an awesome experience.