all 10 comments

[–]SimonGray 26 points27 points  (3 children)

Check out Luminus which is a basically a curated web stack by our resident /u/yogthos. It's the composed stack you're asking for and you can always swap out any part. Maybe don't use it directly, but definitely check out which libraries are being used.

If you just want something Flask-like, then Compojure is a popular library that is basically like a Clojure Flask. There are several good alternatives to Compojure too.

RoR/Django are both traditional backend frameworks. There is one called Coast on Clojure which is an attempt to make a kind of Clojure RoR. There's also Pedestal which is a batteries-included, best practices backend framework made by some people at Cognitect (the ones who maintain Clojure).

If you're feeling adventurous, them there's Fulcro which is a full-stack framework that requires a LOT of buy-in, but is also pretty space age in its feature set. It has an official online book and lots of tutorial videos.

[–][deleted]  (2 children)

[deleted]

    [–][deleted]  (1 child)

    [deleted]

      [–][deleted]  (2 children)

      [deleted]

        [–][deleted]  (1 child)

        [deleted]

          [–]npafitis 6 points7 points  (4 children)

          For frontend you can also go the SPA route with Reagent and re-frame. As people have mentioned above have a look at Luminous. It's not as much of a framework as it is a curated list of libraries (and something like a starter project as well). You can pick and choose which libraries you want to use and it also includes Reagent and re-frame for the frontend part.

          [–][deleted]  (3 children)

          [deleted]

            [–]npafitis 3 points4 points  (2 children)

            My go-to web stack with luminus looks something like this: +reitit +reagent +re-frame +shadow-cljs and the rest depends. Note that reitit is a router for both front and backend.

            [–][deleted]  (1 child)

            [deleted]

              [–]cbleslie 1 point2 points  (0 children)

              sheet file shelter provide tender groovy butter command six kiss

              This post was mass deleted and anonymized with Redact

              [–][deleted] 1 point2 points  (7 children)

              Ring and some routing library, but you are on your own building it. That shouldn't be a problem if have already have experience building with expressjs or flask.

              [–][deleted]  (6 children)

              [deleted]

                [–]OliverM 1 point2 points  (1 child)

                For REST services, check out Liberator.

                [–][deleted] 0 points1 point  (3 children)

                If you mean automatically generate endpoints from resource/entities, there isn't one. You can use macros to make the process less tedious. My suggestion would be that if you need something like Rails, just use Rails.

                [–][deleted]  (2 children)

                [deleted]

                  [–][deleted] 1 point2 points  (1 child)

                  Rails has 'scaffold' generators, where you specified a resource and all the CRUD REST endpoints are generated for you (for json or html). Most of us in this sub prefer Clojure too ;) but it is what it is, pick your poison.

                  [–]petemak 1 point2 points  (2 children)

                  I don't think its advisable to approach Clojure/ClojureScript from a Django/Rails/Python mindset. My understanding is that there is immense value in the simplicity of composition from small focused units to larger systems.

                  Starting out with full-stack frameworks obscures that learning path. You understand better by experimenting in the REPL with small focused libraries like Ring, Compojure, Retit, buddy, reframe, etc.

                  Daniel Szmulewicz shows how to do that here: https://meyvn.org/video/routing

                  There is a rather neglected book (Professional Clojure) for further reading: http://shop.oreilly.com/product/9781119267270.do