I was doing some Swift / iOS SDK testing and decided to use NutryPOS as an example project. A number of hours later, I had lost track of the time of day and really started to go to town… I think the trip down memory lane, nostalgia 'n all, got the better of me.
Amazing to see some of the time stamps on the files I started opening up and how relevant the concepts still are today.
So, I’ve started coding up an native iPad Epos interface, following the tried and tested NutryPOS design that was battle tested in the FoodSecret store back in 2011 (still looks pretty fresh I think).
I’m trying to do as much as possible into few core ViewControllers and use a bit of fancy animation and UI states for making the views really dynamic and keep away from NavigationController style transitions.
We’ve got 3 core View Controllers so far: One for Auth, one for the StoreFront, one for the Check Out
Originally at Foodsecret we had 2 login options, assuming the user was of the correct Role (this interface was for shop staff, not customers). You could swipe an ID card into a USB mag strip reader, which would grab the ID from the card, pop the string into the text field and then some js to submit to the server to create a session and move into the app.
Would be cool to have that option here, but would really need to find a decent, cheap, iPad compatible mag card reader device unless it was integrated into a 3rd party payment solution (thinking Square). Anyway, it would likely need an SDK with the hardwear to be able to use it, so some research to be done there.
Alternatively, we could consider auth with fingerprint using Apple Touch ID?
In any case, the fallback will be good old username / password, powered by Nuwe. Since this is for a general User class (no health data stuffs), we could just use the basic PFUser class here with the Parse iOS SDK. Easy Peasy.
The main display of the app lists selectable items in a UICollectionView. There’s 2 main pathways in the old FoodSecret way… Grab & Go (ready made meals) and Tailor Made (choose your ingredients, create a meal).
They have two different routes and require the selection options to pull in different data, so this UICollectionView is going to have to be quite smart at managing state…
I have attempted to mockup both routes for now, but feel like I might focus on the Ready Made meals as soon as I hit even a mild obstacle.
The right side of the view is a containerView which could display 1 of 3 different child views, depending on the staff member selection.
- Customer Profile (if recognised through Loyalty login - again, use for mag reader / fingerprint?)
- Meal Information (personalised nutrition information)
- Cart (what’s in the basket, getting ready to pay)
I’ll need to be able to switch the child view controllers into the display, but there’s no straightforward way to do this using the UIContainerView which only allows one embed segue.
I could have multiple container views and control visibility through alpha setting, something like this
I could use another technique to have a view controller manager which has the embed segue, but then use an empty custom segue to connect the 3 different view controllers I want to manage, like this.
Don’t know which one I’ll go with yet…
We use a similar interface structure, and so could arguably have crammed all this into the StoreViewController, but felt wise to keep it separate as it performs a very different function.
I haven’t done much here yet except lay it out, but we’d be looking to incorporate a few steps in the checkout process that we used at Food Secret with the original web based NutryPOS.
- Discounts & Promotions
- Review Order & VAT (hot meals v cold meals, eat in v take out)
- Payment Options Selection (Cash, Credit Card, Loyalty Card redemption)
In Food Secret we has a pretty traditional credit card payment integration through YESPay, which involved some funky middleware on the windows OS and the chip and pin hardwear. I would like to take advantage of the new school payment solutions, like Stripe (with cardreader?) or Square or iZettle or PayPal Here
Here’s how we’re looking after day 1…