A guide to developing server-side web applications and API's from the ground up using Clojure, aiming for a simple and clean design using functional programming concepts. Libraries are used to provide common features and alternative libraries are discussed.
Relevant theory and background reading is included, however, the focus of this guide is for you to build projects and experiment.
Clojure CLI and deps.edn
Projects are created and configure using Clojure CLI tools, using
deps.edn for configuration. Older content uses Leinigen for project configuration.
Component / library approach
The Clojure community has a diverse set of libraries which focus on a specific need. These libraries are assembled to rapidly develop a tailored solution. Using a library approach means those libraries are relatively simple to replace with alternatives or your own libraries.
Project templates are used to create projects that include commonly used libraries, along with example code, demonstrating how common services can be assembled. Templates have options to configure the project as its created, customising to the specific needs of the problem being solved.
Clojure does not focus on the classic framework approach like Rails or Spring, for a very good reason. Frameworks are design decisions others have made without knowing the context of the current problem at hand, so there is no guarantee on how many of those decisions are relevant. Frameworks tend to include many features not relevant to the current problem. Frameworks can be over relied upon, taking away an opportunity to think about the most relevant solution.