What is the recommended build tool(s)? Are there any books/videos that may help with learning the tool(s)?
Clojure and ClojureScript being 95% the same so you are going to see overlap in the build tools. There is:
- deps.edn, lein and boot (I recommend deps.edn)
and to enable a modern, CLJS development environment you use one of the above in combination with one of the below:
- figwheel.main and shadowcljs (I use figwheel, but they are both great)
Here is a post that goes over the topic of starting a CLJS app
How may I leverage React & React Hooks? I understand that reagent and re-frame are essentially the defacto standards. Do/can they leverage React Hooks? Are there means to directly use React Hooks with CLJS render libraries?
React there are wrapper libraries available. The most commonly used: Fulcro and Reagent.
Reagent cannot currently leverage Hooks, but there are ways around this. Having said this, my recommendation is to give Reagent a try with it’s approach to state management.
To use hooks directly, look to HX.
Having said this, if your goal is to truly just practice interop, why not just use React without a wrapper library?
Either way, if interop is your jam you will want to checkout CLJS 30 for ideas on how interop works in small projects (should save you a ton of research time) and also the CLJS webpack guide
which shows you how to use the NPM ecosystem.
How may a leverage CSS libraries like TailwindCSS?
This is the same as you might do in JS land - Add a
link tag to your index.html and you’re GTG. There are more “interesting” ways to do things, but it seems like you want to learn the basics, so i recommend keeping it simple. To see this approach, again, checkout the CLJS from scratch post.
Hope this helps!
RE: Comments around large apps
I don’t know if this applies to you because your question is in the context of a side project, but if there is concern around structuring large apps, the Reagent story is not different from the React story. Neither of them tell you how to scale or structure state as you scale, so don’t worry about that. When you get there, there are solutions available…just like most libraries and frameworks.
Point being, have fun on the journey and you will be able to support small, medium and large applications without issue. (The asterisk here is that once you get to a place where this matters there is rarely a one size fits all solution… )