Full web stack Clojurescript (Browser/Node.js)?

I was wondering if there is any interest/activity in the area of ClojureScript full-stack frameworks — i.e., a framework that gives you some opinionated way to structure your application, with ClojureScript on the front-end (perhaps picking one of the popular frameworks or giving you a choice), but also on the server, with Node.js.

The idea is that you’d skip the need for the JVM on the server (perhaps needed only for dev, that’s OK), and you’d be able to use both some established JS server libraries (e.g. for auth, database access etc etc), while also reaping the benefit of ClojureScript-everywhere (e.g. use core.async over websockets, transit, spec, state management etc).

The rationale is that a Node.js shop could experiment with deploying ClojureScript on the server without having to worry about operating the JVM in production.

I’m aware of Macchiato, which seems to be mostly aimed at the server. Still a very good base so far.

3 Likes

I am working on a isomorphic (fully cljs) web app at the moment. I’ve found that there are plenty of libs out there that work well on both sides, including mount, reagent, sente and there are a number of quality url routing libs that also work on node and the browser; I chose silk.

I’ve managed to employ some tricks with my buildchain that allow the same namespace to have separate implementation on the client than the server. For example, a reagent component in the browser that fetches data from remote location and renders it with d3; but on the server only the svg element is outputed. However, I had to use boot, lein had trouble with isolating the source paths.

I also use macchiato on the server side and pushy on the client side. There’s actually no need to make these work on ‘the other side.’

A current pain point for me at the moment is how to manage site taxonomies. I currently have a bunch of pages that don’t work very well with a site menu…

2 Likes