Version 82 (modified by Fran Boon, 9 years ago) ( diff )

ODK Integration

Blueprint for Mobile Clients

We want a versatile client for Mobile devices to be able to talk to Sahana Eden servers which can be easily maintained and adapted to meet new requirements rather than the point solutions which have been developed to date which are unmaintained & not adaptable.

The ideal would be the ability to generate the code using the same core framework and data models. XForms are promising here, although our current XForm interface isn't complete (doesn't handle either Images or Locations) and can only handle data entry, not reporting.


The simplest way to do this is to provide a layout for the web application suitable for smaller screens:

An initial protoype should be developed in static HTML/CSS which can then be ported to Eden.

  • download a couple of pages' HTML & CSS & tweak the CSS until it is fully resizable.


Ideally, though, they should have local storage for use completely offline & then be able to sync back to the server using whatever connectivity becomes available:

Using the open XForms standard means that we can support handsets using both Android & J2ME.

XForms editor:

XForms can be submitted using SMS by including the encoding format within the XForm so that client & server agree on the encoding:

ODK Integration

  • Be able to take a CSV export from ODK Aggregate & display this as a layer on the Sahana Map
    • Import into a system which can support Dynamic Tables
      • Like DC & gis_shapefile
    • Identify the Lat/Lon fields & use these direct for mapping (treat these like gis_cache or gis_feature_query)
    • Be able to select attributes for styling (initially via hand-crafted JSON, later via UI)
    • Be able to display all attributes in Popup
    • NB This could also be done by simply adding the layer as KML if we restore a KML file layer
  • Be able to link to existing Sahana entities (Places, Facilities, People, etc)
    • Build this support into Dynamic Tables
    • De-duplicate on the import to create Foreign keys
  • Write out XLSForm fragments with lookup lists (e.g. LocationSelector as obvious usecase)
  • Be able to import directly into existing Sahana entities
    • extend the XSLForm generator to create full forms with S3CSV-style column names/options
    • Incident Reporting as obvious use-case
  • Be able to do Reports on Dynamic Tables
    • Requires being able to identify the field types (such as Dates)...which could be done by imoporting the XForm template or by smart analysis of the data
    • Why? Stdised user interface behind a common login / roles / realm



Documentation on the current implementation is here:

  • This needs updating to the latest version of JavaRosa

JavaRosa is a fast-developing framework which uses XForms & J2MEPolish:

This supports using Mesh4j to do synchronisation via SMS:

Multi-Platform Mobile App


Another XForms/J2MEPolish client (Xfolite):

KUIX can be used to develop lightweight applications which work across may handhelds & forms can be customised easily via XML/CSS:

Old, un-maintained J2ME client for the PHP back-end, which just uses XML-RPC (=> requires Internet):


Sahana Software Foundation have a developer license which can be used by anyone interested in developing this.


Responsive Web Design

Bootstrap ( has been used to implement a responsive web design in the DRMP template: ( This could be extended to better support the default template by:

  • Re-designing the following generic pages for mobile view:
    • List / Table
    • Search
    • Reports
  • Better supporting maps
  • Reviewing & Testing for features which don't work on the responsive design

jQuery Mobile

This has a lot of industry backing for a truly cross-platform solution:

Sencha Touch

Cross-platform (Android/iPhone) HTML5 environment based on ExtJS


OpenLayers now has touch support:

On our map, the Panning/Zooming works already, but Popups cannot be clicked yet.

We'd also like to move the LayerTree to a native-style widget.

ExtMap Touch:

Taking the Map offline:

OpenStreetMap on Android:

Google Latitude would make an excellent Mobile Presence tool:

Other projects

See Also:

Note: See TracWiki for help on using the wiki.