Plugins, add ons, and extensibility

Configurability

The CHT Core Framework has always been highly configurable, enabling app developers to define forms, tasks, targets, SMS messages, and integrations for a project’s unique workflows. However, these are all well defined functional areas with known limitations on how much can be customised.

As an open source framework, developers can fork the repository and make unlimited modifications, but this has the downside of making it difficult to upgrade the Core Framework to incorporate future improvements.

Plugins

An alternative would be for the CHT to develop a plugin architecture so app developers can write code that can be incorporated. This would enable far more powerful customisation without forking the entire codebase. The Core Framework would provide APIs to make plugin development easier, and guarantee backwards compatibility so the CHT could be upgraded without breaking the plugin.

One significant challenge of the plugin approach is it would require software developers to design, develop, test, and deploy the plugin. Additionally, while the CHT would provide some safeguards for developers, a poorly built plugin could lead to a poor user experience such as locking out users or data corruption.

Examples

Just about anything could be made pluggable, but some examples of likely candidates are;

  • Additional tabs or replacing the default tabs with custom versions
  • Additional or improved form widgets
  • Bespoke sections on the Contacts tab
  • Sentinel transitions to modify documents when they sync to the server
  • Scheduled tasks for performing an action periodically on the server
  • Server APIs for querying and modifying data
  • Theming: styles, colours, icons, etc
  • Anything else?

Questions

We’d really like to hear if this approach would be useful, and if so, which areas you would like to develop plugins for.

  • Is this a feature you would consider using?
  • Do you have the software development capacity to develop plugins?
  • What aspects of the CHT would you like to be able develop plugins for?
7 Likes

Support for custom plugins/addons will open many possibilities to extend the functionality of CHT.

Working with the CHT framework for several years, my imagination might have been narrowed down to only what is already possible. We get queries and requests for features and customization usually when working with new people, such as new projects, technical partners, and new teammates. With this extensibility, we will hopefully no longer have to say outright no to such requests.

I am thinking about support for plugins and theme development similar to WordPress, although that might be too far. For now, some things that would be nice support could be:

  • Custom sentinel transitions
  • Theming/styling
  • Movable sections
  • Ability to link to external pages (such as dashboards)
  • Dynamically placeable texts (such as showing a target value along with tasks)

I will think more and might add more items to the list alter. I am very much excited about the possibilities.

2 Likes

Thanks for kicking this off @gareth. CHT is in need of such flexibility/extensibility.

A few more come to mind:

  • Linking to external data e.g a registry when registering contacts, households or community health workers
  • Unique contact identification.
3 Likes