Let’s build it: working on the digital prototype

With the paper prototypes nearing convergence to a working user interface, we start working on the next step: building the actual app. We still have a lot to learn about app development, but the best way to learn is to do it in practice. Thus, we start experimenting with the tools and libraries and try to get something on the screen.

We decided to go for a native Android app with a Google App Engine online backend. There were plenty of alternatives, but with downsides:

  • We originally wanted to build a web app, so it would run on all devices. The problem is that we need to push a notification to users when they are invited to a party. Since we can’t expect our users to always have our web app opened in order to see the incoming notifications, we needed to switch to an actual mobile platform which supports push notifications.
  • We considered using Apache Cordova to build our app in HTML and JavaScript and cross-compile to all major mobile platforms (Android, iOS, Windows Phone).
    • You can only compile iOS apps on a Mac OS X computer. If we also want to target iOS, we’d have to get a Mac.
    • Cordova does support push notifications through a plugin, but only on Android and iOS. There’s no magic though, your backend will still need to speak to Google Cloud Messaging and/or Apple Push Notification Service if you want to use it on Android and/or iOS. Windows Phone does not (yet?) have push notification support.

    Therefore, we would only be able to effectively compile for Android with Cordova. We wouldn’t really benefit from its cross-platform capabilities due to system constraints and lacking feature support.

On the other hand, targeting native Android has interesting benefits:

  • We can fully utilize our many years of Java experience. Surely, learning a new programming language such as JavaScript is feasible but takes time, time that we’d rather spend on actual development.
  • We have a whole range of tools to our disposal. Android Studio is a great IDE for Android development and supports integration with Google App Engine out of the box.
  • We can use excellent existing libraries. Google Cloud Endpoints can generate client libraries for the Android app to talk to our backend API. Facebook has an SDK for logging in through Facebook and accessing their Graph API from an Android app.

Thus, we created a new Android project and started experimenting. We managed to create a few simple Android activities, hooked them up with the Facebook SDK and quickly got a simple but fully functional login working:

WIP1-Facebook-Login WIP1-Facebook-LoggedIn

The first picture shows the login screen, shown when the user is not (or no longer) logged in. We want to show our logo here along with a short introductory text describing the purpose of our app. When the user clicks the login button, they can login through Facebook (if not yet logged in on this device) and give our app the necessary permissions (if not yet registered with our app).

The second picture shows the start screen when the user is logged in. We want to make this like the first screen in our paper prototypes, with buttons leading to the several parts of the app. In this version, there’s also a menu to log out and return to the first screen (the settings button does nothing for the moment). The user’s profile picture was just to test the SDK, we might move or remove it later.

We’re also working on the backend code to actually register users when they sign up through Facebook. Next, we want to start modeling the dishes and their ingredients so we can create the second screen from our paper prototype to find a dish.



  1. I think the web app still has its advantages: your application could also be used in a browser on a laptop, so by building a web app it can also be used in a normal web browser. But of course, you then need to find a solution for the notifications (I think google chrome supports notifications? :)).

    All in all, I think the native android app is your way to go, so good luck! Although I have to warn you when using the Android Studio IDE, it is a very early stage development product, definitely not recommed to develop with right now (so be careful ;))

    1. Chrome and Firefox indeed support the Notification API, but that’s still experimental and not supported in all browsers (no Opera or IE). Even then, the user needs to keep the web app opened in a tab to receive the notifications.

      Android Studio is indeed in early preview, but it’s pretty good already. I’ve been using it since 0.2, and I find it’s become stable enough to do real development. For me, it already replaced Eclipse to do my Android development. 🙂

      1. Ok, great :). I tested Android Studio only when it just came out and then there were just too many bugs for me, so might have to give it another try!

Comments are closed.