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.
- 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 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:
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.