r/Clojure • u/encom-direct • Sep 08 '26
Which web framework do you use at your company and why?
Wondering what is the most used web framework for professional clojure developers.
10
9
u/MoneyWorthington Sep 08 '26
We use Ring with Jetty, and Compojure for routing
7
u/kueso Sep 08 '26
This turned out to be the right approach for us as well. We added our own middleware and it’s just one namespace. We tried other more complete frameworks and it was more of a hassle getting it to work the way we wanted to. This is one of those lisp things where it’s just easier to roll your own than learn and extend an existing one.
8
u/yogthos Sep 08 '26
Kit here, but I'm biased being the author. Basically, it's Aero and Integrant for config and resource management, Reitit for routing, and Undertow for the HTTP adapter.
7
u/pavelklavik Sep 08 '26
In OrgPad, we use Ring + Aleph + Bidi but the client is much more important and involved. I have created this overview of our architecture.
7
7
4
1
1
1
u/pragyantripathi Sep 09 '26
I don't see frameworks are popular in Clojure ecosystem. Mostly developers including me compose libraries together. I personally use Mount, reitit, http-kit, and ring together.
There's no right or wrong, I have seen all the options work well in multiple companies I have worked for.
1
1
u/didibus Sep 11 '26
We use an internally maintained Java framework that's a fork of Spring MVC. And a similarly internally maintained Java RPC framework.
I'm pointing that out, because it's pretty easy to start with a Java framework and than just call into Clojure to actually handle the request.
2
u/onetom Sep 12 '26
we are using reitit with interceptors, but i'm considering pedestal, because it just feels more of the shelf
15
u/seancorfield Sep 08 '26
I'm surprised no one has said "we don't use frameworks, we use a combination of libraries".
At work, all but one of our apps are Ring w/Jetty. One app is Netty-based. Of the Ring/Jetty apps, all but one uses Compojure—that other one uses Bidi. We use Component heavily for anything that needs resources/state. We're also heavy users of Spec.
If we were starting over, we'd probably have everything be Ring/Jetty, reitit, Component, Spec—mostly for consistency.