JS on the server seemed to me to be a solution looking for a problem. We already had plenty of arguably adequate server side languages. JS was the weird language you were forced to code in for the browser so why on earth would you want to use it elsewhere? Well I suppose the answer was "because there's a zillion people who know how to use it". But that wasn't true until it was.
Mostly because I don't want to reimplement my data structures (and data structure manipulation functions) just because they're being operated on in another machine. I want to represent those values and relationships once and be able to manipulate state on both the client and the server with the same operations.
My projects end up having one `src` directory with `client`, `server`, `shared` subdirectories.