Couchapp Takeout provides couchapps with an installer and desktop experience.
From one link in your couchapp, it will install all the pieces on an end users computer, to run it locally. It solves these problems:
Here are some projects using couchapp-takeout:
You can add an installer to your couchapp in about two minutes.
replicate this database into your couchapp: http://ecko-it.iriscouch.com/takeout
It has two design docs:
so make sure these do not conflict with any of your existing design docs.
Edit the design document _design/takeout-settings.jnlp in your database. Here are the settings to change:
{
"appName": "Takeout",
"vendor": "Ecko-it",
"homepage": "http://eckoit.com",
"description": "A great couchapp that does amazing stuff",
"localStartUrl": "_design/takeout/index.html",
"advanced": {
"syncType": "bi-directional",
"main-jar": "couchapp-takeout-1.0-SNAPSHOT.jar",
"main-class": "com.github.couchapptakeout.App"
}
}
change the appName, vendor, homepage and description to match your application.
localStartUrl is the page that is shown on the users computer after the install, and everytime they launch from their desktop. You probably want something like _design/app/index.html But maybe you want a different interface when the couchapp is running locally? You could have a sepereate design doc like _design/installed/index.html
syncType is the type of continuous replication that is started on the users machine to the couchdb it was launched from. Valid values are:
On the design doc '_design/takeout-settings.jnlp', replace the two attachements called logo.png and splash.png with your own logo and splash image. Keep the names exactly the same.
You will now have a install page ready to give to users.
_design/takeout/install.html
While Couchapp-Takeout is running, the following processes will be seen:
At this point we have ironed out most of the workflow, but Couchapp Takeout still feels a bit heavy from the launch. I really need to spend some time reducing dependancies, making smaller couch binaries, and making it feel more snappy.
For mobile users, on the install page, if a mobile os is detected we can generate a link, or intent, that takes them to a mobile couch in the app store, and somehow passes the replication params.
Create plugins that can run code on the users desktop. For those tasks where a couchapp does not have enough horse power. I have started this here: https://github.com/ryanramage/couchapp-takeout-plugins
And some upcoming plugins:
Maybe try and integrate with other less 'heavyweight' replicators, like
This project is under an Apache 2.0 license .
CloudBees graciously offers free Jenkins builds to open source projects. See the build for Couchapp-Takeout here:
https://reupholster.ci.cloudbees.com/job/Takeout%20Java%20Build/