I'd like to develop an application with versions both for PCs (Windows, Mac, Linux etc) and mobile devices (iPhone, Android etc). I would like to share/reuse code between these platforms as much as possible below the GUI layer. The GUI layer itself may be specific or shared between some platforms. I'd like to use web technologies where possible, so prefer to do shared code in JavaScript and at least PC GUI in HTML.
There are no fancy GUI requirements, but focus is rather on synchronizing and storing/searching a lot of data (possibly gigabytes) and receiving notifications about updates on it.
What (set of) application development stacks would you suggest?
Update: Specifically, I'm looking for the tools or libraries that:
- Can produce installable applications on each platform (installable exe, apk etc).
- Allow the applications to run completely offline using synced data.
- Minimize the number of different APIs and implementations my shared code needs to worry about (same database API, as few different DOM implementations as possible, etc).
F ex, I could make an HTML-based Adobe Air application for PCs and then use PhoneGap on mobile. Or are there better offerings for my use case?