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.