What it does…

This iPhone app provides a portable interface for a web-shop owner to login and quickly see recent orders, their values and statuses and get an overview of their shop’s performance. Recent orders can be filtered to show only orders of certain statuses or change the timespan for order age (e.g. today, this week, this month). There is a sales summary screen that shows totals for the selected period and each order has a drill-down detail screen that shows more in-depth information. In addition, a password change feature is available in case the shop owner feels they need to change their authentication information.


Development Process…

A friend of mine operates a company that offers online-webshop software and hosting and we had discussed the possibility of an iPhone app in the past, but now I had the time to devote to a serious project, we spoke again and I knocked up a basic wireframe using balsamiq.
Having agreed on the basic functionality, I created the core structure and views in storyboard (xcode 4.2) and then fleshed out the detail and polish in the classes themselves. The nice thing about using the storyboards is the hybrid combination of wire-framing tool and WYSIWYG editor. You can not only design and edit the layouts of each view (although lots of functionality and design work is just not possible directly through the storyboard), you can also wire up transitions between different parts of the app. The basic premise is a nice separation of code and design and if you keep things super simple, you can get away with defining your view and components in the storyboard and manipulating them with code in your associated UIViewController class. For this app, there was a lot of subclassing and extending standard functionality as it seems that – similar to other frameworks – if you want to do anything that deviates from the standard implementation, things can get complicated. This was definitely the case when it came to seemingly simple tasks such as adding a background layer for an element in a view or changing the text colour for a title in some pages..
One larger issue that needed to be thought carefully about is connectivity. As the app relies on a working internet connection in order to retrieve information from the remote webservice, if there is no connection or connection is lost mid-session, then the app needed to manage these situations properly and inform the user as to the situation. I think this is one of the most challenging aspects of writing portable internet-enabled applications as your connection to the internet simply isn’t guaranteed and it isn’t enough to check up front as connection may be lost at any point during the user’s session.

Summary…

All in all, this was a great learning experience – I even went back and created a separate storyboard for deployment on iPad. All the code remains the same – you just need a separate storyboard and that’s it! (and make sure you’re not hard-coding screen dimensions anywhere!)