Fellow Clojurists, I salute you!
I’ve been doing some research while building a guide to the Clojure web ecosystem.
There has been a lot of development in this area over the years. The web is an important platform. Clojure ideology maintains that we should build solutions from small, composable parts. I believe this is still the best choice in general. You build your application on top of Ring (or something Ring-compatible).
Even the most popular framework is built on Ring. So it makes sense to learn how to build an application yourself, even if you’re using a framework. My course Web Development in Clojure teaches Ring from the inside out. By the end of the course, you’ve learned to put together an application using handlers and middleware.
There’s a sale going on now. You can get 25% off all courses. Just use the code rainy_day at checkout.
There are some frameworks that, for their particular use cases, give the ideology a run for its money. Some of those are listed below.
I can always miss something. Let me know if I’ve forgotten something. And I’d love to hear your opinions. Just hit reply.
PS Want to get this in your email? Subscribe!
Datomic Cloud now has web story. You can run Clojure code, including Ring handlers, right in the same JVMs of your Datomic Cloud cluster. It’s not really a framework, but it opens up a lot of options for those running Datomic Cloud.
Re-frame is a frontend application framework written in ClojureScript, built on top of React. It has no explicit backend story, but that falls neatly in line with the Clojure ideology of composing pieces together.
Re-frame is my recommended frontend framework. I’ve got two courses on Re-frame.
Understanding Re-frame is a high-level overview of the framework. It teaches you all the parts, but more importantly, the thought process behind building applications within the framework.
If Understanding Re-frame is a high-level overview, Building Re-frame Components is Re-frame in the small. Instead of a high-level overview, this course gets into the nitty-gritty of building interactive components and workflows.
All courses, including these two, are now on sale for 25% off the normal price. Just use coupon code rainy_day at checkout.
Keechma is a frontend framework also based on Reagent. It looks pretty cool, though I’ve never used it.
Luminus is a set of libraries pre-configured and put together to get you started quickly. It has an active community. The creator of Luminus, Dmitri Sotnikov, has written a book about Luminus, which is an extended tutorial.
There was a lot of buzz about Arachne when it started as a Kickstarter project. But I think Timothy Baldridge’s explanation is the best. I’ll leave you to read it.
I’ve been thinking a lot about Clojure web frameworks. I recorded some of my thoughts about the matter.
Duct is a framework from Open Source Clojure celebrity James Reeves. Duct is an application framework with modules for web programming. It’s based on configuration data like Arachne, with a reloadable development workflow.
Coast on Clojure is a complete framework, including routing, database connectivity, and Hiccup views.
Front and back
Fulcro is the best example of a front-and-backend framework. It tightly integrates the ClojureScript UI with the backend. There’s a lot of hope in the community about this one. I’ve never used it, but I’ve heard many good things.
Hoplon also has a frontend and backend story. This one is interesting because it doesn’t use React.