Coconut renders json defined forms in a browser and then saves the results to couchdb.
JavaScript CSS CoffeeScript D Java Shell Other
Pull request Compare This branch is 31 commits ahead, 15 commits behind chrisekelley:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
_attachments
build_android_app
filters
lists
views
.couchappignore
.gitignore
LICENSE.txt
README.md
_id
coconut.php
file.watchr

README.md

Coconut renders json defined forms in a browser and then saves the results to couchdb.

Instructions

You will need couchdb to make it run:

apt-get install couchdb

The first time you push the couch, the coconut db will be created for you. You can also create a new database using futon, the handy couchdb GUI by clicking here: futon on localhost, or by running this curl command:

curl -X PUT http://localhost:5984/coconut

To get Coconut working you need to put the files in this directory into a couchdb database. You can accomplish this by using the couchapp tool.

apt-get install couchapp

Create a .couchapprc file based on .couchapprc.sample. Then we can use couchapp to push the files into your database:

couchapp push

Now you can point your browser at the Coconut

How does this work?

CouchDB, Backbone.js, backbone-couchdb, json, fermented eyebrow sweat, fairy dust.

How is this organized?

All of the backbone models and views have their own file and are in app/models and app/views respectively. app/app.js is responsible for tying it all together.

You can put json forms into the _docs directory and they will be added to your couch when you do a couchapp push.

How do I customise page flow?

app.js constructs the Backbone.Router. List the routes in the routes method:

routes: {
        "home":                 "home",    // #home
        "newPatient":                 "newPatient",    // #newPatient
        "arrestDocket":                 "arrestDocket",    // #arrestDocket
        "*actions": "defaultRoute" // matches http://example.com/#anything-here
    }

and create a method for each route:

    newPatient: function () {
        registration = new Form({_id: "PatientRegistration"});
        registration.fetch({
            success: function(model){
                (new FormView({model: model})).render(); 
            }
        });
    },

Other useful info

It's a pain to run 'couchapp push' everytime you make a change. Mike wrote a little watchr script that watches for changes to any relevant files and then automatically pushes them into your couch. To get it you need to install rubygems and watchr:

apt-get install rubygems
gem install watchr

Help!

Check out the project's issues. Please help me fix issues and add any problem that you come across.