One of the key aspects of the Offervault platform is that it was designed and mostly implemented in a time where mobile smart devices were either non existent or if very under powered. The platform was implemented to be used as a web platform exclusively.
The main issue with having a web only platform is that the access to the data storage is done exclusively inside the server side web code so for a third party client, data storage access must be granted, but this is not always optimal. The application resides on a user device rather than a secure server so this is a potential security risk.
The mobile application needed to be readily available for the two major mobile platforms available at the moment: Apple iOS and Android. This requirement meant that the platform development should be performed in parallel in order to have the mobile application available at the same time and with the same features and the same design language.
An API was designed and implemented over the existing data storage in order to expose to a client the existing data.
Data logic was implemented in the API side as to make sure that the client stays a client and only displays the data and does light data manipulation in order to display it properly in the implemented views.
A security approach was made when the API was designed as so the client authenticates in the API using OAuth 2.0 standard.
In order to be able to complete both mobile clients at the same time, the applications were developed using a hybrid approach. Multi platform architecture was adopted using Cordova and Ionic so the applications were written once and then compiled for each individual platform.
This approach was preferred for a number of reasons:
While maintaining the web application the same, two mobile applications were created and launched.
The same time frame was kept but with reduced costs.
Future improvements and bug fixes of the mobile applications will be easy to apply due to the shared code base.
Testing is easier because it can be done virtually on a PC and the behavior is the same as on both platforms.
Future clients can be added due to the nature of the API.
The web application can be modernized now and all the logic can be shifted towards the API so the web application can become a client also.