As part of my master thesis in Medical Informatics, I joined the ComBaCal team in Basel last year. My findings were that the implementation of changes to a running app by (purely non-technical) researchers were regularly leading to bugs and delays, as well as still involving technical people to e.g. code the tasks. This is why I decided to start implementing CHT Studio, a desktop application written in React in a Tauri environment that is supposed to give users a one-stop-shop interfaced application where they can build a whole CHT app.
So far, I have implemented:
A formbuilder (I saw somewhere that one existed at some point, but was dropped in favour of XLSForms). The formbuilder allows the creation of xForms directly.
The ability to “run” a created form in a preview mode window, using Enketo.
The whole “underbelly” of Tauri interacting with the file system. Creation of base settings, interaction with forms etc.
I am now working on a taskbuilder.
The plan would be that once a user has created their app, they can push it to a repository that will run pipelines and deploy the new version (similar to how it is handled atm). Also, my goal is a Proof of Concept, so there might be edges not exactly smooth… Should this resonate with you guys, I plan to hand it to the community/public, for use and further work on it.
My main issue at the moment is enabling preloading to forms and in tasks.
So, my questions are:
What do you think of it from a very high perspective?
What features would you see as important, which not at all?
Would anybody be interested in joining the coding?
Any ideas/ideas regarding a form based setup for the preloading in forms (via input groups) and modifyContent in tasks?
Hi @Astrozyt - thanks so much for sharing your post about CHT Studio! What a fun and helpful sounding project to hear about.
We’d love to have you do a short demonstration of this desktop app on the next Developer Demo Hour on November 5thNovember 6th! at 4:00 pm EAT/ 1:00 pm GMT. Are you free to join then? If you’re unable to join, maybe you have, or can make, a short video showing how it works?
As well, is the plan to open source the code or maybe you have a URL where it’s available currently?
Hi @mrjones , thank you for the kind words. I’d love to present the project on the 5th, showing it and getting feedback would definitely also help the evaluation for my writing. Do you have a ballpark figure regarding the time slot I could have?
My plan so far was to develop it, show it and get feedback from people (CHT users), and later open source it (make it public), but I now decided to prepone that. I’d love for people to skim it, and who knows, even open pull requests! I will create a meaningful Readme, publish the repo and share the link to it here.
I’m very exited to present my work, thank you for the opportunity!
@Astrozyt - oh great - I’m so happy to hear your available at that time slot! I’m doubly happy to hear that the project will be open source by the time you present - this is wonderful news!
Feel free to take 5 to 15 min to present. Let me know if you’d like a bit more. We’ll leave time for questions after your talk.
This presentation will be open to all, so feel free to invite any colleagues who you think might be interested! We’ll have you present first, so folks will only need to reserve ~20 min to see your talk (though I hope they stay for the full hour ; )
Dear thread-followers,
This is the first time I’m open sourcing something that I started, I guess the CHT crew has more experience with it. Please be gentle, and alert me ASAP if you recognize a dangerous GH configuration or so - My goal is not to get this repo nuked ^^’.
But of course, any well-intended collaboration is welcome!
And on the 5th of November, it would be nice to also get feedback from people seeing/hearing from it for the first time - but I don’t think everybody will want to build it locally beforehand anyway
@Astrozyt - congrats on going open sourcing this - that’s super awesome to see! Doing this in advanced of your demo next month is a wonderful gesture of trust and openness to the community - thank you.
Yikes! Sorry for the multiple mistakes , but the call is on Nov 6th, not Nov 5th. I’ll fix the items above retroactively, but wanted make a comment so folks following this thread see the update.
Thanks again for the presentation today @Astrozyt!
Just want to leave this as a note to other CHT community members who, like me, might be new to building Rust apps: you might run into some complications with Tauri (perhaps particularly on Fedora, maybe Gnome related…?). I specifically ran into " Could not create default EGL display: EGL_BAD_PARAMETER" when running pnpm tauri dev. The app would compile fine, but when it launched the contents of the window were just blank. What I learned (from reading the issues linked above) is that it is some weirdness with newer versions of webkitgkt that may or may not be sorted out (it was not for me).
So, depending on how your dev environment is setup, you may need to use an older version of webkitgkt. For reference, this shell.nix file config was what I needed to get things working for me in Nix (complete with Rust + NodeJS + pnpm):
let
pkgs = import <nixpkgs> { };
# Need webkitgtk ~2.44 to avoid https://github.com/tauri-apps/tauri/issues/11994
webkitBackport = import (fetchTarball {
url = "https://github.com/NixOS/nixpkgs/archive/e0f477a570df7375172a08ddb9199c90853c63f0.tar.gz";
}) {};
in
pkgs.mkShell {
nativeBuildInputs = with pkgs; [
pkg-config
cargo
nodejs
pnpm
rustc
];
buildInputs = with webkitBackport; [
webkitgtk_4_1
];
NIX_ENFORCE_PURITY = 0;
}
Thank you for having me, giving me the chance to present my work and the positive and definitely motivating feedback!
Sorry to read about the troubles you had, and glad you found a way to resolve them. One of the USPs of Tauri is that apps are super small, because they use the OS’ standard browser as opposed to e.g. Electron… Hence, the further away an OS is from “standards”, the more hoops to jump through I guess. I had only tried Tauri on macOS and my current, TuxedoOS, where everything worked nicely.
I will link your post in the readme, once I get around to do it and nobody did so before me .
If you have trouble building the app (i.e. not in dev mode) and face problems there… They are due to poor code cleanliness… Skipping all linting and TS checking etc. in Tauri builds is not ideal but should do the trick atm…
I love seeing others checking out the Studiovision, all hands and brains are welcome on deck!