Skip to content


Subversion checkout URL

You can clone with
Download ZIP
WYSIWYG web-based XForms editor for the ODK subset
JavaScript Ruby CSS
Failed to load latest commit information.
docs frontend/feature: collapsed controls.
lib backend/feature: import from cabinet store to tyrant store.
model backend/bug: user wire format should not have formdata.
public control/bug: selecting one control does not deselect the others.
test test/new: test for recursively counting the number of controls in a f…
views frontend/feature: add support for metadata prompts. add instanceID au…
.gitignore backend/refactor: switch to tokyo tyrant; stop bundler.require'ing.
.rvmrc ops/noop: adding an .rvmrc to keep gems tidy.
Gemfile backend/feature: import from cabinet store to tyrant store.
Gemfile.lock backend/feature: import from cabinet store to tyrant store.
README.textile misc/noop: yikes, forgot to change the dependency.
Rakefile backend/bug: corrupt data crashes importer.
asset_manager.rb server/bug: was requiring .build_time to exist even in dev.
assets.yml frontend/refactor: cleaning up some control code. backend/refactor: switch to tokyo tyrant; stop bundler.require'ing.
config.yml.sample backend/refactor: use tokyo hashkv's instead.
config_manager.rb server/bug: ruby now wants require yaml.
odkbuild_server.rb binary/bug: need to rewind file if marshall fails.
warden_odkbuild.rb backend/refactor: switch to tokyo tyrant; stop bundler.require'ing.


odkbuild — wysiwyg web-based xforms editor for the odk subset


odkbuild (formerly odkmaker) is a web-based service. Unless you mean to do development on it, just go to to give it a try.


odkbuild is a Ruby Rack-based application. Everything it needs is kicked off by the Rackup file. We use shotgun for local development and Phusion Passenger for staging and production deployment.


The project has one native dependency: Tokyo Tyrant. We use this as our datastore. You’ll have to build it natively for any system you want to run the server on. See for details.

Once you have that, all Rubygem dependencies are managed by Ruby Bundler. Make sure you have at least version 1.0.0 of Bundler installed (gem update --system && gem install bundler if you don’t have it already), and then simply run bundle install in the application root to resolve and install the appropriate dependencies.

Setup and Execution

Now that you have resolved all the appropriate dependencies, you’ll need to set up the configuration by copying config.yml.sample to config.yml. This file contains a number of secret keys and tokens, so be sure not to check it into source control once you put your own keys into it.

Next, you want to start up your databases. You’ll need to start four Tokyo Tyrant instances, one for each listing in the configuration file. If you’re working from a development environment, you can do this simply by running rake db:dev:start, and rake db:dev:stop to stop them again.

Finally, you’ll want to run bundle exec rackup to start the server, or bundle exec shotgun if you want the application to automatically detect your changes to source code and load them up when you refresh the app in your web browser.

If you’re running Build in a production environment, there are a couple of things that the application needs to build before it will run. Before first-run, and after each time you update with a new version, you’ll want to run rake deploy:build. This will bundle all the assets the application needs for speed an ease of deployment.

Something went wrong with that request. Please try again.