WalkTo: How an idea became a real mobile app in 15 hours

John Biggs
7 min readJan 19, 2017

--

What is WalkTo? WalkTo’s mission is simple: to get us off the couch and walking. The app does this by offering deals when you walk to a small business nearby. We think most exercise apps are awful and you don’t stick to them. It all boils down to getting you out of the house. Don’t just have ice cream in your pajamas, walk to the parlor and share a cone. Don’t have a sandwich at your desk, get out of the office.

Merchants think of it like a digital sandwich board that targets nearby customers. The merchant needs foot traffic and walkers want a special price on a sandwich. We put the merchant and the walker together. Plus the walker gets her steps in for the day. Win-win.

It seems simple, but after some initial research, we realized that even building an MVP would cost over $30,000 and take weeks of development time. We didn’t have either.

So we needed to build it ourselves.

I looked at a few alternatives. I fired up XCode and figured we didn’t have the time. I looked at appery.io which looked OK and but was all coding was a bit too complex. Finally I settled on Kinetise. It’s run by a buddy of mine and he could help out if I got stuck.

Why I liked Kinetise

We made a conscious choice - even if it didnt feel that way - to work with Kinetise because it was fast. We knew they would give us hypothesis-testing capability quickly and it turned out that with some additional help it would give us something that simply works. Whether our startup succeeds or not will depend on the value of the proposition of the product and now we won’t have tech as an excuse. Basically we were able to get a lot done in a few hours.

This story presents some highlights from how we developed the application. It works well and it’s a great MVP. Hopefully this post will inspire other developers and maybe encourage non-coders to give this a try. I, for one, welcome our codeless app building overlords.

The Logic

There are two users types: Walker and Merchant.

The Walker walks, accumulates WalkTo miles, and grabs deals in various merchants. Merchant posts offerings available for every Walker in the area and the Merchant can see anonymized Walkers nearby which lets them see if they should post a deal now or later.

WalkTo consists of 2 major parts:
1. Native iOS and Android apps. We built it with a drag & drop editor. It took 15 hours total with tweaks and another five or so hours to build a backend that talked to the database via JSON calls.
2. Kinetise CMS. I connected to this via the editor and via some Flask code that I wrote to access the API directly. This let me make a very rudimentary CMS for managing users and venues. I also got to learn Flask and JSON.

def buildUrl(endpoint=''):
host = "https://api-cms-fitrock.kinetise.com/api/kinetise/v2/projects/"
projectGuid = "SUPER SECRET GUID"
projectAccessToken = "SUPER SECRET TOKEN"
return "{host}{guid}/{endpoint}?access_token={token}"
.format(
host=host,
guid=projectGuid,
endpoint=endpoint,
token=projectAccessToken
)
def get_venue(id):
query = buildUrl("users/" + id)
res = requests.get(query)
row = res.json()

venue = {
'first_name': row['first_name'],
'last_name': row['last_name'],
'email': row['email'],
'city': row['city'],
'businesslatitude': row['businesslatitude'],
'businesslongitude': row['businesslongitude'],
'businessaddress': row['businessaddress'],
'businesszipcode': row['businesszipcode'],
'id': row['id'],
'instagram_info': row['instagram_info'],
'twitter_info': row['twitter_info'],
'username': row['username'],
'picture': row['picture'],
}

return venue

App Design

Let’s go over the most important app features here.

So we have two user roles in WalkTo: Walkers and Merchants. They are both handled in the same mobile app.

  1. You can configure as many user roles as you like simply by adding them in widget properties and pointing to the target screen.
  2. By default the user logs into the Main Screen. When a merchant creates an account and logs in they are sent to a separete admin screen while the users get the basic interface.
  3. In case of WalkTo app there’s simply one additional role pointing to “offerdeal” screen. It’s the merchants-only section of the application.

The list of deals has a Detail Screen attached to it. It means that the application will automatically pass all the data connected to specific list item to the next (Detail) screen.

Back button navigates users to the deals list.

Detail screens allow further nesting as well. So you can have Detail Screen in a Detail Screen, in a Detail Screen… it’s pretty cool.

Where does the data come from? Kinetise has its own CMS that the map pulls from via a RESTful API. You can see some of the code I used to build a backend manager above which looks like this:

I used Flask and Bootstrap to build the UI and JSON calls to pull and put things into the database.

The system also managed dynamic parameters like distance limits, filtering criteria, and sessionID. Each user also got notifications and emails via Kinetise which was pretty sassy.

Forms and Deals

The Merchant’s main activity in the app is to offer deals to the Walkers. It is enabled via Form widget, which submits inputs to the RESTful API.

The Form includes TextInput, Photo, Checkbox, DatePicker and a Submit button, which invokes API call. We also do a little extrapolation to figure out the latitude and longitude of the venue.

Each form object is validated in the app upon data submission. We can also access this on the back end with a little futzing with the API.

Animated overlays and user profiles

WalkTo also includes profile view on an animated overlay. This automatically slides out like your better web apps. It supports images for the merchants and also manages the pin types which we made and the deal images. The deal images are sourced from websites or Instagram feeds and eventually we want to feed those images in automatically so there will be a constant panoply of offerings. Astute viewers will also notice the current deals aren’t really deals yet. The real value here is in the ability to target users with really special stuff. Instead of “Chicken wings are tasty” Kettle Black can post “Come in now for a pint with any 12 wings!” and target nearby users. Astute readers will also note that wings and beer aren’t exactly health food. We encourage those readers to be quiet and drink their beers.

Finally we added a List Widget to show the deals in a different format although we really like the map view. The data is cached in the application, so it doesn’t query the backend every time the overlay is opened.

Each form input contains data from a particular field in a RESTful API response. It’s easily configured with a dropdown.

All the downloadable content can be cached or refreshed based on selected rules. For example the information on remaining distance to destination is refreshed when the Walker is moving, but also it isn’t refreshed each time the user enters this screen. This keeps the overhead down and prevents us from burning too much battery.

The best caching scenario for such situation is to display data “From cache then Refresh every… 15 seconds”.

There is also a mechanism clearing that cache whenever necessary. We use that when you move too far away from your last location.

GPS Tracking

Crucial feature of WalkTo app is ability to track users movement.

This functionality is achieved with a GPS Tracking action, which sends user’s current GPS coordinates to the backend. We store that briefly.

This allows to calculate what distance user has traveled. We’re using minutes to a destination because a) our GPS statistics are a little tough to pinpoint in any case and b) it seems nicer than knowing you’re a mile away. Basically we want you to fit in a walk for lunch so if you know it takes 30 minutes there and back you’re happier.

MVP or Bust

Building this thing was pretty fun. I’ve always been a big proponent of single-board computers and I have a graveyard of Raspberry Pi MAME kits and hand soldered Arduino gadgets laying around that attests to that fact. But what I liked most about these things is the ability to build, try, and keep building. I had to learn some more programming to get this all to work but it was a lot easier and cheaper to use Kinetise than, say, crack open my compiler. As it stands I think we have a solid .75 and it’s great that they’re live in both app stores and ready to amaze.

You made it all the way down here and for that I thank you. Please give WalkTo a try. What do we need right now? We need you to go to your favorite places and ask them to create accounts or just email me a list of favorite places to john@walkto.co. We’ll contact them and add them to the service. Then, when you’re ready to go grab lunch at the cafe downstairs you’ll be able to go a few blocks further and get something different and hopefully cheaper.

--

--

John Biggs
John Biggs

Written by John Biggs

John Biggs is an entrepreneur, consultant, writer, and maker. He spent fifteen years as an editor for Gizmodo, CrunchGear, and TechCrunch.

Responses (2)