Hey folks, especially those running web back-ends and front-ends in OCaml/Reason: what is your stack?
There has been a similar question previously, however, two years is a long time, so, maybe, things have changed since then.
In particular:
Back end:
- Database, database driver, migrations, any other database-access layer, for example, a ppx
- Web server and framework
- Concurency library (Lwt/Async)
- Any other thing worth mentioning, like ocaml-graphql-server
Front end:
- Transpiler: Js_of_ocaml or ReScript (BuckleScript)
- Framework
- Concurrency library (Lwt/Async/JS Promises)
Iām asking because Iām curious to see which combinations of these technologies are battle-tested. Certain kinds of issues only arise (and get solved) when used at certain scale. Itās also interesting what combinations of technologies work well together. For example, httpaf+async appears like a well tested path, while httpaf+lwt seems like more experimental (my guess). Or, for example, caqti+lwt seems like a tried path, while caqti+async might not be.
To share my experience, Iāve made some prototypes using Windows+Cohttp+Lwt on the back end and Linux+BuckleScript+ReasonReact+JS promises on the front end, but I canāt judge about the robustness of the solution. Certainly there was a lot of friction when trying to share the code between the two āendsā. Like writing it in two different languages. Which is now sort of acknowledge with ReScript becoming a fork of OCaml.
Looking forward to hear about your experiences!