Application Design Best Practices

This page outlines recommendations for designing and building useful CommCare applications. These are compiled from collective experience in app construction and are only recommendations. Individual projects could vary substantially and the overall best practice is to go through extensive user testing and piloting to identify and correct language, media, or work flows that are confusing.

Question ID and Case Property Naming

Have descriptive and consistent naming for your Question IDs and case properties. They are used in data exports and when doing case configuration.  

  • Descriptive: Use something like date_of_birth not dob.  CommCare allows for long names if you want to be descriptive.  Another person should be able to looks at your names and understand the data. 

  • Consistent: 

    • Be consistent with casing (i.e. always use lower case) 

    • Use the same name for the same question in different forms and the same case property name in different forms

    • User underscores instead of spaces (as spaces are not allowed)

To test your Question IDs, choose "export form contents" under Tools to view all questions in your form.   

Naming Conventions: Menus and Forms

Users will navigate the application using form and menu names.

  • Names should clearly describe what the menu or form does 

  • They should be short names (fit on one line of the phone's screen)

  • Use the same name for forms with similar functions (ex. registration in different modules)

Case Management

Some important things to consider:

 Case List 

  • Show properties that will help user find the case they want

  • Add sorts(Case List Sorting) and hidden properties to help user search for the item they want. 

  • It is possible to have several case properties displayed in the case list, but should consider the device type you are using. Phones have smaller screen sizes, and therefore will be able to display fewer properties in the case list, whereas tablets have a more space on the screen to show more properties. In general, 3 to 4 properties is a good number to display in the case list. 

Case Detail

  • Can show more properties than case list.  

  • Add properties that will help user make sure they've picked the right case

  • Add properties that will help user before opening a form for the case 

  • Use the Format option to display case properties correctly for the user. See Case List and Case Detail Configuration.

  • Use ID Mapping if displaying any case properties that store item values.  This will make sure friendly text is shown.  

Case Properties

  • Saving and loading of case properties into the form is an important aspect of case management

  • In the event that you are saving and/or loading case properties into specific hidden values, consider organizing those hidden values into question groups called ''save'' and ''load'' respectively. This will help you stay organized with the movement of case properties. 

Multimedia

Before deciding to include multimedia in your application, think carefully through what the goal of multimedia will be in your application.  Some applications may not need multimedia (pure data collection or advanced users who don't need support).

Images

  • Local Images: Use a local illustrator so that images appear local to the area.

  • Unique Images: If images are being used for low-literate user support, try make each image unique.  This will be less confusing.  

  • Test Images: Test images! Images you may understand may be confusing to beneficiary or user.  For example, a digital thermometer picture may not be understood by all your users.  

CommCare Settings

  • Turn on CommCare Sense Mode For most applications, this will result in a simpler user experience for low literate users.  Some advanced features may be hidden (ex. Saved/Incomplete forms on CommCare Android)

  • Turn on Two-Way Sync:  This will let ensure that if cases are reassigned, the user will be able to load them on their phone. 

  • Setup Daily/Weekly Sync: If you're using case sharing, make sure you have daily or weekly sync on your phones so that users have a fresh version of any cases. 

  • Set Text Input for Java Phones: Set to Native for non-english typing or full screen for QWERTY.  

  • For Java Phones, set CommCare version to the latest available (indicated by a *)

Language Support

  • For multilingual applications make sure each of the following is translated:

    • Question labels/display text in a form

    • Names of forms and modules

    • Any information displayed in the case list and detail (including ID mapping)

    • User Interface translations (Translate the CommCare User Interface) for your language.  Common language (ex. back, form is loading) should be updated.

  • Set the default language of your application before creating your released build.  Drag and drop the languages and put the default language at the top.