It really depends on the target platform, who will wind up maintaining the code (and for how long!), and how the build will be done.<p>But the short version is that I would (and do) favor Clojure for personal projects. These are cases where I have limited time to invest, a high desire for tangible results, and no other developers to worry about. For that set of tradeoffs (and my skillset), this has generally been the best way for me to achieve my goals. (I also have some code that abstract out some patterns I find useful or importatn.)<p>In these sorts of projects, if I need client side code, I'll tend to favor straight JavaScript (with markup rendered by Hiccup) if I can get away with it, and ClojureScript/Reagent if I have a requirement that implies a need for client side logic. (Tolerance of lost network connections, incremental page update, and the like.)<p>For more commercial projects, I'd be thinking TypeScript/React with a Java (JVM?) backend for starters. I'd also be open to Node or Python for the back end, but it really depends on the skillset of the team and where the best libraries are.<p>And all of this would be done with an eye towards the exit. Any codebase that has a reasonable life expectancy will likely have to at least interoperate with other language ecosystems, if not incorporate them bodily. Being mindful of how that might happen is important. (Which practically speaking, means decent interface definitions, testing, and the like.)