Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Mobile Data Collection made easy.
JavaScript HTML Python CSS Other
Latest commit 578fc2c @vr2262 vr2262 Update .travis.yml
Failed to load latest commit information.
api Revert "Tests involving celery may need the Celery test runner"
docs/install Added README changes
extras Undo file mode change
formhub This might be what was breaking things
js_tests Modified check for supported langauges to look through all questions
main Making sure this bit of code is actually necessary... if it is, then …
odk_logger Making sure this bit of code is actually necessary... if it is, then …
odk_viewer Missed some spots
restservice Merge pull request #1201 from DBell-Feins/master
sms_support Fixes various problems with SMS and Telerivet:
staff removing stathat
static Fixed bug which causes the same QR code and URL to be displayed for a…
stats use IntegerField for bigger integer valuess
templates ajax-ifying the geo-count; js now updates it, avoiding an expensive c…
utils Bring into line with Apr 28
.gitattributes OS specific lineendings
.gitignore Bring into line with Apr 29
.gitmodules boostrap has moved from @twitter/boostrap to @twbs/bootstrap
.travis.yml Update .travis.yml
LICENSE updated LICENSE: formatted for readability
README.rst Added README changes
changelog.txt new line test dicts rather than dict keys only Fixed updated translations Getting the hang of branching
requirements-dev.pip Put django_nose back
requirements-mysql.pip requirements for other databases
requirements-s3.pip added requirements file for using s3
requirements-ses.pip added requirements file for using amazon ses for email
requirements.pip adding pandas explicitly to requirements Added check for notes while building question list plus its js test -…



Getting Started


If you would like to contribute code please read Contributing Code to Formhub.

Code Structure

Formhub is written in Python, using the Django Web Framework.

In Django terms, an "app" is a bundle of Django code, including models and views, that lives together in a single Python package and represents a full Django application.

Formhub consists of three Django apps:

  • odk_logger - This app serves XForms to ODK Collect and receives submissions from ODK Collect. This is a stand alone application.
  • odk_viewer - This app provides a csv and xls export of the data stored in odk_logger. This app uses a data dictionary as produced by pyxform. It also provides a map and single survey view.
  • main - This app is the glue that brings odk_logger and odk_viewer together.

Internationalization and Localization

Formhub can be presented in specific languages and formats, customized for specific audiences.

These examples were derived from Django's Internationalization and Localization Documentation and there is also a good explanation in The Django Book's Chapter on Internationalization.

To generate a locale from scratch, e.g. Spanish:

$ makemessages -l es -e py,html,email,txt ;
$ for app in {main,odk_viewer} ; do cd ${app} && makemessages -d djangojs -l es && cd - ; done

To update PO files

$ makemessages -a ;
$ for app in {main,odk_viewer} ; do cd ${app} && makemessages -d djangojs -a && cd - ; done

To compile MO files and update live translations

$ compilemessages ;
$ for app in {main,odk_viewer} ; do cd ${app} && compilemessages && cd - ; done
Something went wrong with that request. Please try again.