For builds and dependency management: Leiningen, boot or deps.edn
For the front-end (clojurescript): Shadow-cljs + reagent
For the backend (clojure): Nrepl and nrepl.cmdline, Ring, jetty + compojure for a REST API
Frontend and backend can share code with .cljc files that work on all clojure dialects. https://clojure.org/guides/reader_conditionals
Both nrepl and shadow-cljs support code reloading through the REPL connection.
You can compile to a jar file and deploy that, build a docker image, or compile to a native executable with graalvm, or deploy on Aws lambda with Cljs+Lambada. Lots of options.