Formhub
Getting Started
- To build and install from source, follow the Installation Guide
- Alternatively, you can just use these pre-built server images instead:
- The public Formhub Amazon Machine Image (AMI) to Run Your Own Formhub Instances on Amazon Web Services (AWS)
- The public Formhub Virtual Disk Image (VDI) to Run Your Own Formhub Instances on VirtualBox
Contributing
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:
$ django-admin.py makemessages -l es -e py,html,email,txt ;
$ for app in {main,odk_viewer} ; do cd ${app} && django-admin.py makemessages -d djangojs -l es && cd - ; done
To update PO files
$ django-admin.py makemessages -a ;
$ for app in {main,odk_viewer} ; do cd ${app} && django-admin.py makemessages -d djangojs -a && cd - ; done
To compile MO files and update live translations
$ django-admin.py compilemessages ;
$ for app in {main,odk_viewer} ; do cd ${app} && django-admin.py compilemessages && cd - ; done