App idea to MVP in a month: Process, Challenges and Solutions

Jonathan Hillebrand
Jaysquared
Published in
10 min readAug 5, 2019

In this article I take you on my journey from a new app idea to a Minimum Viable Product (MVP) in about a month. The app is called Honua and helps you explore new places by rating photos. Learn about the idea finding process, how the main interface evolved, content creation challenges, individual elements, underlying technology, testing process and an outlook for the future.

Want to follow along with the app? Download the beta version and share your feedback in the comments below or to jonathan@jaysquared.com. Thanks!

Problem & Idea

We live 45 minutes away from the Baltic Sea and earlier this month we decided to go there for a spontaneous day trip the next day. We wanted to see some new places, but a quick web search brought up information that was way to text heavy and unstructured to process in bed the night before. So we ended up in our regular place. We had a great day, but it did not fulfill our desire to explore something new.

Also when we travel, we don’t read a travel guide, but are driven by impulses from various sources like blogs, Instagram or r/Earthporn, many of which are highly visual. A travel guide is limited by the space and the opinion of the author(s). Photos by fellow travelers or locals are much more diverse and you can design your own experience for a new place.

Honua shows photos by private photographers nearby or for a location you want to visit next. You either like or discard a photo and can then find your liked photos on a map or in a bucket list. It automates the process of finding and remembering places you want to visit.

The app solves a problem for myself. That has two main advantages: I am a good first test user and even if there is no broader market for it, I am highly motivated to develop it.

Name

How did I come up with this name? Finding a name for an app is a lengthy process nowadays, as chances are your favorite choices are already taken. While I started the development process with the bland project name Discover Places, I brainstormed a few ideas. I ended up naming it Honua, which means earth in Hawaiian. I might have been influenced by planning a trip to Maui and Big Island while I was developing the app… Hawaii has always been a dream destination of mine as it is for many people all over the world. By choosing a Hawaiian word, I associate the app with the feeling that pops up, when you think of this island paradise. I also designed the app icon with a Hawaiian flower theme.

Honua App Icon

Main Elements

When you open the app, you are immediately greeted with a stack of photos nearby. You can rate as many as you like, before you venture onto the map or bucket list to see where they are located. On the map or list you can further distinguish between liked photos, locations you want to visit and places you already have been to. With a touch of a button you start navigation in the maps app of your choice and you can share the photo with your friends.

Initially I only wanted to include the map view, but most test users suggested a bucket list as well.

Content Creation

It’s crucial for an app like Honua to have quality content. In the long run I would love to build a whole community of photographers, who share their favorite snapshots and locations. But to get the app off the ground I needed an external source of photos. My first idea was Instagram, as it has a lot of amazing photos by regular people from all over the world. One problem though: Instagram does not share their precious content. Fair enough.

Next I checked Flickr, as I worked with their amazing API in the past. And I found some beautiful geotagged photos there. Unfortunately they were hidden between a lot of images of goofy faces and blurry snapshots. I needed to filter these out to end up with the content I can use for the app.

I ended up building a little web interface. I create regions and import all photos from the API for that region, filtered by location, appropriate license and date taken. Then I manually approve or discard all the photos. For Maui for example I went through 9000 photos, of which around 100 were approved for the app. The process works, but it’s quite time consuming. I spent a lot of evenings in front of the TV going through photos.

As the process takes time, the number of regions I can initially include is limited. For the MVP I added regions near me and where my next trips would take me. So it’s useful for me and I can test it under realistic conditions.

To tackle the limited content challenge, I also included a category of photos I call “World’s Best”. It’s a collection of the most awesome places all over the world. When you open the app and there are no locations near you, Honua will automatically present them to you. So no matter where you open the app, you are always greeted with a stack of photos.

Solutions

Specific problems require individual solutions. I highlight how I solved these in my app.

Onboarding

It’s crucial to keep the onboarding process as short a possible to avoid loosing users in the process.

In the first screen I welcome you, explain the name and introduce the main elements of the app. I had not included it initially, but added it after a first family & friends beta test, as I received questions about the purpose of the different screens.

Next is a legal screen to inform you about the terms of use and privacy notice. It’s necessary to cover my ass, so let’s get it over with. You can also enable cloud data in this screen.

As the app is location aware, I also need to ask for your permission. I included a third onboarding screen, as I find it less intrusive than showing the system’s permission dialogue right away. It also has the advantage that you can enable the location within the app later. When you decline the system dialogue, you need to enable location services in the phone settings later.

No photos

You never want to present an empty app to the user without offering alternatives. As I don’t have content for every location, chances are that there are no photos nearby. When that happens I automatically show the “World’s Best” photos. If you already saw them all and there are no other photos to show, I present a no results view. But instead of just informing you about the fact, I show the ten nearest regions. I also record all zero result queries in the backend to gather data on which content to create next.

Info view

The main concept of the app is the division between discovery and display of the locations. After the first beta test I realized that users often want to see the location right away. So I included an info view. It shows a small map, the title and distance to you when you tap the info button under the stack of photos.

No liked photos

Despite the onboarding screen and the app description it might not be clear what the individual screens do and users try clicking around. However the map view and bucket list only show locations you liked before. To make this clear I show a message linking to the discovery screen if there are no liked photos yet. Always guide the user in the right direction.

Photo titles

Initially photos didn’t have titles, as I couldn’t manually name thousands of photos. I utilized the Google Places API to automatically find appropriate titles. For most photos it’s the district or town. It’s not perfect, but better than nothing.

Loading indicators

All remote elements have animated loading indicators in the element itself. It signals you that something is happening and keeps you informed. I prefer individual loading indicators over a central one. The action buttons in the discovery view are disabled while data is loaded.

Error screens

The app relies on an internet connection for new content. Existing content is stored locally and images are cached. I show error messages on a need to show basis. If there is content available, no need to concern you with it. If there is no offline content available or images failed to load, I show a specific message along with a retry button. The decline button is enabled to skip this photo, while the other buttons are still disabled.

Reporting

As content is crowdsourced and there is lots of data, mistakes are inevitable. I enable you to easily report these and gather the correct information. When the title is wrong, you can enter the correct one and when the location is off, the right location can easily be marked on a map. I can then swiftly approve or decline the report in the backend.

Ads

The natural business model for an app like this is advertising. I looked at big ad networks like Admob, MoPub and Facebook. But they don’t offer ads that match the look and feel of the app. I also don’t like the amount of data they gather. For now I just added primitive ads via Firebase. The only targeting I do is by country, but I can show ads that fit the app layout. The first ads will be for my other apps or from affiliate networks.

For now when you “like” an ad it opens the link automatically. I’m not sure if I will keep it that way, as it could possibly irritate users. Let me know what you think about that.

Technology

Honua is developed with React Native and is first released for iOS devices during the beta phase. I have 8 years of experience in native iOS development so I feel most comfortable on this platform. I started using React Native around 2 years ago and like its clever concepts which shorten the development process and the possibility to maintain the same codebase for iOS and Android. I am still not the biggest Javascript fan, but am getting used to it. Typings with flow and automatic code formatting with ESLint help a lot.

In the backend I use Firebase Firestore and Storage. It’s really easy to use and offers generous free quotas. Perfect for introducing a new app to the market. It has its limitations however. Especially the query mechanism leaves a lot to be desired. For example I need photos for geographic boundaries. While Firebase implements a GeoPoint data type, it only filters for latitude, not longitude. I only found out about this on StackOverflow, not in the official documentation. To solve this problem I added a new field to the database, called longitudeInt and perform multiple queries for all longitudes integers I need for the current region. I then filter on the device for the correct longitude.

To login to Firebase, I generate an arbitrary email address and password, which I save to your device’s keychain. That way I avoid the extra friction of a login screen, but still get the same account on every synced device. I can always decide to let the user convert to a real account later.

For the device location I need your permission. If you decline, I fall back to an IP based location API. It delivers an approximate location based on your IP address. It’s accurate enough most of the time, but sometimes it’s off quite a bit. Better than nothing though.

Testing

I uploaded my first test version to iTunes early in the process. I released it for external testers via Apple TestFlight. It’s the first time I used it and it’s a quick process. Initial approval took a day and subsequent updates were approved immediately so far.

My first tester is always my wife. She can be quite impatient and when something does not work as expected right away, she is brutally honest. That’s a quality I am looking for in a tester and she contributed some good ideas. After a few iterations I shared the app with family & friends of different age groups. They either loved it right away or didn’t understand the concept. That strongly correlated with being Instagram users or not. Keeping reading your guide books dad ;)

Outlook and Business Model

Initial feedback was mostly positive. An often suggested feature was a tour planning functionality, but I want to keep it simple for now. Limited content will be a challenge for a while, but I hope I tackled the problem. I want to open the app for external contributors, but there are legal and operational challenges, especially with new laws coming in the EU. I might open it for vetted “Influencers”, who I can trust to only post quality original content.

When the app works it will be pretty interesting as an advertising platform. Users are already looking for places to visit and businesses could advertise their venues in an organic way. But it’s a long way to get there.

I will cover the process on medium. Just follow me to receive the latest updates.

--

--

Jonathan Hillebrand
Jaysquared

App Entrepreneur / Travel Geek / Foodie / Wine Lover / Escaped Investment Banking