I too have been working on a CRUD app using Dream, SQLite, and Caqti (with HTMX and ReasonML) for a few months in my limited free time. I think I've hit a few of the same issues as OP. There's definitely painful points, but overall I'm really enjoying working with this stack. (For reference, my background languages are python, typescript, c++ and some spare time rust). First and foremost, I'm really enjoying having a fast compiler with a good type system as I feel it allows me to "unload" this project from my brain then pick it back up more readily. I'm using typed JSX thanks to tyxml and ReasonML. I've got templated .odt reports working with the mustache package which can then be opened perfectly fine in Google docs. I can create in memory zip files using zipc to allow downloading multiple files at once without needing to touch the disk. And I've just wrapped my head around abstraction using modules to write generic code for things like tabular data views.