I'm at a loss which is why I'm reaching out to the community. I have been trying to find the best framework stack for a project of mine and have found no success at all. I find it even more frustrating that the web community at large has no libraries or example code on how to complete this obvious solution. Most forums just leave the answer as an exercise for the student.
I have a Rails based REST application. It has it's HTML output and it's XML REST API and a budding community. However the Mobile version of it's HTML have one glaring problem. It requires online access since it is a web-page. The offline solutions that describe Sencha Touch are nothing but a way to cache the data from a web site for offline viewing and don't offer any solutions for offline data manipulation. The application I would build is a very client side dependent as the data being manipulated is rather complex hence the interest in a web application framework not at mobile version of a web site.
Sencha.io seems to be a in-house solution to data synchronization between Sencha application (iPhone to iPad to Android) and is not a library to handle communications with an already established REST service running on your own web server.
That being said I'd like to describe what I want to accomplish in hopes someone has done something like this before and be willing to offer help.
- Have the ability to convert to a native app in the future is desired.
- Designed for the iPhone and Android phone platform (iPad and tablet would be nice too)
- Ability to download the data via a REST API (xml or json)
- Manipulate that data offline
- Once online sync that data back to the server and update from changes from that server.
There is not a multi user environment for the data as each record is only used by it's assign user (no sharing of data between users) so multiuser conflicts are not a problem. However it is very possible and likely that a user might make a change on the mobile device and forget to sync before using the web interface to make changes and this kind of conflict would need some resolution (Maybe latest transactions clobber older ones?)
So for the only pre-build solutions I have found are on the backbone.js world called backbone.offline which has brought me to think doing this in backbone instead of Sencha Touch a viable option. I have also been very unsuccessful finding good algorithm documentation on how one could implement their own code to do this.
My question is has anything like this been done using Sencha / ExtJS? If not is there any recommendations?