4 ms·
For you and anyone else with experience, is that the most common/battle-tested cljs stack? What about servers-side, any equivalent Django or FastAPI?
by ndr 4y ago
For you and anyone else with experience, is that the most common/battle-tested cljs stack?
What about servers-side, any equivalent Django or FastAPI?
- dgb23 4y agoIf you want a complete, integrated "stack" that stitches some of the most common libraries together in a uniform structure you might have a look at kit: https://kit-clj.github.io/ https://kit-clj.github.io/
- cutler 4y agoIf you're coming to Kit from Luminus make sure you understand Kit's use of Integrant which involves passing `query-fn` down from the route to every function which accesses SQL. It was a deal-breaker for me.
- dack 4y agoThe cljs stack I hear about a lot (and use) is ShadowCLJS with reagent (https://reagent-project.github.io/ https://reagent-project.github.io/) and re-frame (https://day8.github.io/re-frame/ https://day8.github.io/re-frame/). ShadowCLJS is more of a build tool, but is really well documented and easy to use. Reagent is basically react but a simpler API, and re-frame is a layer on top of that kinda like redux. It's overkill for some apps but I find it's actually super easy to work with and not as much complexity as I thought. For backend there is luminus (https://luminusweb.com/ https://luminusweb.com/) or Kit (https://kit-clj.github.io/ https://kit-clj.github.io/). They are basically project templates that wire together a ton of popular solutions for various things - database access, migrations, security, html templating, etc. Also includes frontend frameworks like re-frame if you want. edit: forgot to mention fulcro (https://fulcro.fulcrologic.com/ https://fulcro.fulcrologic.com/) which is an interesting full stack solution. I haven't used it though so can't comment, but it sure seems documented well!
- ndr 4y agoThank you. What about leiningen vs boot vs deps.edn? Did any of this come ahead as a winner in the recent years? It's been a while since I've looked into this.
- simongray 4y agoNo one uses Boot. The choice is between Leiningen and deps.edn AKA the official Clojure CLI. Personally, I switched to deps.edn back in 2020 and haven't looked back. I like that it's simpler/does less out of the box and I also use the Git dependency feature all the time (you can reference a git sha as a dependency, not just Maven coordinates). Something like 90% of it is just listing dependencies (the same packages as it's all just Maven anyway) and for the remaining 10% of configuration there's plenty of resources available for both. They can also interop to some extent. Other ecosystems have it much worse than Clojure in this regard.
- gtoast 4y agoBoot died, sadly. There was some talk of a Boot 3.0 but it never materialized. I think deps.edn took all the steam out of it. Duplicated a lot of functionality and none of the esoteric-ness.
- ARandomerDude 4y agoNo affiliation, but I think this is a great example CRUD API. https://github.com/dharrigan/startrek https://github.com/dharrigan/startrek
- slugbtye 4y agoI recently have been building a internal web app for managing customers and am super happy with shadow-cljs (develop/build) + reagent (view) + re-frame (state/events) + garden (css). I especially like how easy shadow-cljs makes it to utilize both clojars and npm pacakges. I have been using JS/TS for a long time and feel like any webdev without npm packages would not be worth my time, especially for projects at work. Re-frame has a very robust api for dealing with events, side effects, and state. Once I got used to the concepts in the documentation, very good docs but a little goofy, It has quickly become the most efficient and fun tool I have ever used to prototype complex frontend interfaces :) Glad to be using cljs at work, but I'm not sure I would use this stack for non-internal tooling though.
- ndr 4y agoNice to hear a current user! The last part is a bit scary, what would push you against using it for external facing products?