ASOS中国 - Hybrid iOS and Android eCommerce App
Stared this project from scratch in Spring 2015 for a London based agency on behalf of their client ASOS China. Following a similar design to the UK iOS app, this Cordova powered runs on both Android and iOS devices, in both orientations, on both mobile and tablet. Developed in English, the all the UI text is sat separately ready for translation into Chinese in the later stages of development, this enabled simultaneous development in London while testing takes place in China.
One of the challenges with this application was offline functionality. ASOS wanted their customers to be able to browse their product catalogue, even when in areas with no or intermittent Internet connectivity. So, on first launch the entire catalogue is rapidly download using PouchDB. This internal database then sync only new product changes once the full download is complete. Stock information is updated once items are added to the customers basket, with graphical icons displayed when certain items have gone out of stock since being added to the cart. For ASOS, the items were added to the customers wishlist where they can be reviewed at a later date.
Making pure JavaScript single page applications is one thing, with it's own set of complexities and challenges; but doing the equivalent for a JavaScript app that will function only in a mobile environment brings with it an entire new set of challenges. These are specifically related to the user interface. The app still has to retain the gesture recognition and actions found in native applications, and perform will full buttery smooth animations expected from real applications using CSS3 animations.
The application itself is built upon a custom JavaScript framework, similar to Marionette, on top of Backbone. Then via Continuous Integration compiled using XCode and Android command line tools using an OSX Server running Jenkins to output compiled native applications, and their debug symbols, signing them, then uploading them to HockeyApp for test distribution.