I have a client/server java application with a firebirdsql backend. This is a pain because I have to install java and the client on every workstation, etc

So it is now time to rewrite the application, and I am deciding what technology to use. My strengths are php/js/C#

The application can be single user or multiuser (I don't however want to force the users to install a full multiuser database service if possible)

It needs to work off-grid (some of the locations it will be used have no internet access)

It will primarily be deployed on windows desktop pc's and accessed remotely via ipads/laptops.

I would like to be able to run the whole app off a usb key, with no installation required.

My initial thoughts are just a wamp stack, although I am not sure how easy it will be to bundle it into an easily deployable application. I also need to have a background task running "aka cronjob", and I am not sure how to trigger that from within the application itself short of writing a windows service.

My second thought is to look at node+database (which database I am not sure, preferably embedded or standalone). The good thing i see here is that i can handle "cronjob type" tasks relatively easily.

The bit where i am stuck is in the database choice. I have looked at sqlite, but the drivers don't seem all that robust.

So 3 questions really.

  1. what is a good embedded/standalone (non-server) relational databases that can be used with node.
  2. has anyone got experience doing a similar project, and any issues they encountered with either node or wamp stacks
  3. Are there better technology stacks I could use in this scenario

I for one have found that WAMP performs terribly over the network but flies on localhost, and I haven't been able to determine the problem.

  • Given your constaints (stanalone PC without internet connection) I do not see how you can avoid installing software on the client PCs -- the pain is pretty much the same whether you are using php, node.js, in fact given that most PCs already have a working Java installed all you need to do is distribute an executable jar file. – James Anderson Nov 28 '13 at 8:46
  • Maybe I worded it wrong, the PC will have network connection, but only on a local network setup for the event. Jar files are not an option as they won't work on an ipad. – bumperbox Nov 28 '13 at 8:50
  • whats the problem with running java on a Mac? Just install Java and run the .jar same as on any other platform. – James Anderson Nov 28 '13 at 8:53
  • There could be 50 or more users, I am not going to get them to install jar files to use the app. All i want them to do is navigate to pcname:8080 and it works. I am also trying to get away from java as it is not one of my strengths. – bumperbox Nov 28 '13 at 8:59
  • Why not package your current app on an usb stick? Sounds like you're trying to solve a distribution problem with a rewrite-software strategy. Are you sure that's the best way? – iveqy Nov 28 '13 at 15:28

It sounds like you are trying to deploy what is now called an appliance. If so, why not just make a VM and distribute that. You can pretty easily build the file so it can be run in multiple hypervisors -- from something like the very cross-platform VirtualBox that can be run on a desktop to being able to plug in to enterprise hypervisors like VMWare and Hyper-V so it can scale to most environments.

From a development perspective it eases your pain significantly -- node isn't exactly straightforward to setup across platforms, because you are defining the platform and configuration of the platform this is no longer a problem. This also means you can make a more traditional database source than having to find something that will work cross-platform because whatever the database is it becomes embedded.

From an offline perspective you can ship the client all the necessary materials on the VM -- both the hypervisor and the machine with the code / data can all come on the same usb stick.

Finally, this makes customization for particular clients easy -- just make a client X and a client Y VM as necessary.

For an idea of what one can do with virtual appliances check out turnkey linux; they also have a turnkey core box that is a great basis for changes.

  • You are probably right, I never really thought of it like this. At the end of the day it needs to be easy for a user to install and run and an appliance would fit that bill. I will check out those links, thanks – bumperbox Nov 28 '13 at 18:11

Not the answer you're looking for? Browse other questions tagged or ask your own question.