Community Health Toolkit

Medic Mobile: Flutter + CouchDB

I was wondering if Medic Mobile had ever considered using Flutter as part of your technological stack.
Flutter is Google’s toolkit capable of building natively compiled applications for mobile (android and ios), web, and desktop from a single codebase.

I recently found out that there is a CouchDB client written with Dart. Just throwing out ideas and trying to see if anyone has experimented in this.

I am a big fan of Material Design and Material Components. I am a big fan of native apps and clean architecture.

If you are into this or what to test it out. Give me a shout.

Kristopher Kibwana Kivutha.


Hi Kristopher,

Yes Flutter has been discussed, along with similar projects such as React Native and NativeScript.

I think it would be challenging to work out how to render xforms in any of these libraries so it would require a complete rethink of how App Builders configure and deploy forms.

In addition, the libraries would all require a significant rewrite of the UI layer of the app so it would be expensive to switch at this point.

I’m also a big fan of material design and components and we’re looking at ways to incorporate more of these concepts into the CHT over time while making sure it’s not too jarring for users who are already familiar with the app.


1 Like

Hello Gareth,

XForms Rendering - Flutter/ReactNative
I am still reading the CHT Documentation. I will try and install a local instance today once I attempt the whole Docker/WSL2 installation. If possible, could please explain the current mechanism for rendering XForms in the browser? In addition, I was also wondering if it would be possible to send an example of a simple XForm that I can try and inflate into an activity or fragment with form widgets. There are a lot of questions I might have here but by the looks of it, it might be more complex than I had initially envisioned. This looks like an interesting challenge and I fully agree with you that it might be more of an R&D project than a core priority.

UI/UX Redesign
I am not 100% sure. I am going to try something out and get back to you on this. It might require a significant rewrite but most of the design work has already been done by the looks of things. It might just be translating the design specs to code.

Material Design/Components
There are a couple of design systems that offer ready-made angular components that might help incorporate material design components into CHT more effectively and might be worth taking a look at.

I like the fact that Medic Mobile is deeply committed to human-centered and participatory design. One hack that I use to make sure I use components that are familiar to the users. Most of the CHWs I interview during workshops often are familiar with applications like WhatsApp, Facebook, and Twitter. I just incorporate components from those applications so that they do not seem foreign.

I am also becoming a huge fan of Carbon Design Systetm`

Let me know your thoughts, concerns, or suggestions.

Kristopher Kivutha.

1 Like

Hi Kristopher,

If possible, could please explain the current mechanism for rendering XForms in the browser?

We use the enketo-core library which uses xslt to transform an xform into HTML for rendering and an xml model for the form submission. Because it generates HTML it won’t work with native android unless we wrap it in a webview, which has its own challenges.

UI/UX Redesign
The primary challenge here isn’t technical - as you say there are plenty of libraries that provide material design components that could be incorporated into the CHT. The main challenge is how to make changes in a way that doesn’t disrupt upgrading users who are used to the current design. We’re currently working on ways to remotely train new and existing users such as a “what’s new?” dialog. This will help smooth the upgrade process as we incrementally roll out planned UX improvements.

1 Like