Just today I was thinking how nice it is to have the backend route tree available in both backend and frontend code, so e.g. it's easy to tell in advance in cljs whether the user has permission to use a specific endpoint. The route tree includes authorized roles and I wrote a simple auth middleware to enforce them.
In my fairly large Clojure+ClojureScript app I do not use a framework, mostly because nothing existed when I started. I pick libraries and make them work together. This has advantages, but also brings endless frustration when I have to deal with stuff like web authentication, file uploads, or Oauth2. I really wish there were good solutions for these kinds of generic problems.
Also, not all choices made by the framework are necessarily a good fit for every application size. I used to like Reagent, and I still think it's great for learning. But then it became limiting, I switched to Rum and never looked back.
But in general, why not take the Clojure approach and use the right tool for the right thing? You don't have to chain yourself for life to a framework, you can use a framework for one app and use a bunch of separate libraries in another. I think in the Java world there is so much incidental complexity, that you have to choose a single framework and stick with it, as it's likely the only thing you will be able to learn. Not so in the Clojure world.
I know that everything I need already exists, but I have yet to find a complete tutorial (Rails Depot, for example) that actually works. There's always some gap that isn't explained or some step that fails because the guide is 2+ years old.
So while I do agree that choosing your own libraries (and essentially building your own custom framework, because that's what they all end up as) is preferable long term, it is incredibly frustrating trying to build that first webapp.
You probably meant going from jetty to httpkit, ring is just a middleware lib
Of course, you can also use Fulcro to communicate with any sort of backend server, and still take advantage of Fulcro's normalized client-side database: http://book.fulcrologic.com/#Networking, http://book.fulcrologic.com/#_the_secret_sauce_normalizing_t...
I opened the links as new tabs on iOS Chrome to check them out, and it turns out they don’t go to the anchors unless I switch to the tab in a short enough time. Not sure if Chrome or the page itself (presumably using Fulcro?) is to blame here, but it was disappointing to find 3 tabs all open to the top of the page when I switched over to read them instead of the relevant sections.
Thanks for the links though, they gave me something intriguing to explore!
And then I discovered Clojure and Ring and later Liberator. What I like about my current setup is that I have full control over my framework and my team knows its ins and outs and the corresponding Clojure code is succinct enough to allow developers to come upto speed quickly. Our set up is not sexy but it works and we know how exactly it works.
I am not sure what I would miss if I did not use a framework like this. Is Liberator no longer good enough ?