Isn't Clojure overkill for small web apps?

It’s hard to compare these ecosystems, they have very different demographics and philosophies. The preference for libraries instead of frameworks has good reasons which I’m not going to rehash here, the net result is that there’s more of an initial learning curve I’m the beginning. That’s not so much because these libraries together are more complex than an equivalent framework, but it takes effort to figure out which bits you need, and how to wire then up, which is why a template that embodies these opinions regarding the stack and that takes care of the wiring like Luminus exists.

I also feel like there’s more stuff happening around React based apps. Plenty of people are doing server side rendered too, but there are fewer libs coming out in that space, fewer people writing about it. But I do still think it’s a great choice for a lot of stuff and there are good libs to choose from.

My personal recommendation would be to lean in to the Clojure way: learn libraries one by one, try them out at the repl, then piece them together. I would start with

Model - honeysql
View - hiccup
Controller - I’d like to say Reitit, but for starting out Compojure is probably better

That’s it, you can make an app with just these three. The rest you’ll figure out as you need it.

Update: as pointed out here vanilla hiccup is susceptible to cross-site scripting attacks, and you should use Hiccup 2, which is nominally in alpha but which has been perfectly fine to use for years. Alternatively use any other Hiccup implementation. For the Lambda Island site we render our Hiccup with Enlive.

4 Likes