🔥 40 day streak
381 words

Does the world need yet another web framework?

Coast is a newish web framework I’ve been working on for about a year now and it’s gone through several iterations and general refinements in what a clojure web framework should look and feel like to develop in. I think a lot of clojure web dev today is all reframe and graphologists getting into graphQL and ring back ends, but I think a clojure framework should work a little differently, so here’s my take on it.

The godfather ruby on rails

This was the big one, the one that showed us we don’t have to write configuration and can just jump into coding. No more set up step, just skip to the fun part. How did this happen? How was rails so much better in 2005? than any of the other solutions? It made assumptions for you, convention over configuration, you no longer had to tell the framework what went where, you just ran one command (rails new) and it was done, files and folders were created and you did not move them, you just added your logic on top. It was a great idea and coast steals this philosophy wholesale. You run one command and files and folders are generated and that’s it, you’re ready to rock and roll. No dependency wrangling or configuration required.

Why not compojure/reitit backend and reframe front end?

I’ll tell you why. Coast was made for rapid development and there’s nothing slower than the current trends in web dev. Heavy JS front ends aren’t just slow to load, they’re slow to make. It’s a huge slowdown for everyone involved. I got caught up in the hype back in 2016 and I have no finished projects to show for it. Don’t get caught up, server rendered pages are fast, and more importantly fun. Productivity is not the result of following hype or doing what FB or Google do, in fact it’s the opposite. Those places have 100s if not 1000s of engineers, they’re trying to optimize team work, not individual productivity.

Is coast the framework for you? It might be! I Hope you give it a shot, there’s a lot of cool features like edn migrations, pull syntax in sqlite and postgres, and really easy routing.