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.
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.
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.