Thanks for sharing!
Here's a related article http://widdindustries.com/cross-platform a .cljc file tends to lend itself naturally to separate side-effects from business logic. Especially if you force yourself to have comprehensive test coverage with a test matrix that runs both jvm and node.js