I think another answer you might be looking for, is that when you jump into a frontend project or boilerplate, what is all the backend node stuff and what's all the frontend browser JS stuff? This was pretty confusing to me for a while, because you have all this build process stuff going on, and the line starts to blur when developing if any of that webpack/gulp/grunt stuff ends up in the browser as well.
All of the build tools are using Node.js to manipulate the file system and run local dev servers and other various things. This is all being ran on your machine and not in the browser. But the browser code gets served up by this (node) dev server for you to see in your browser with localhost:8080 or whatever. Then eventually you use Node.js to package up your browser code into a bundle (or you could call it a web-package...). This bundle is going to be executed in the browser, but it was transformed into its final state using Node.js.
So basically anything that's usually in the src directory is going to be what's bundled up and sent to the browser. Anything that's in the webpack, grunt, gulp, server directories are going to be executing in the Node.js environment to assist you during development, and eventually helping you build out your production assets.
If you have a server-side-rendered (SSR) app, you'll have some of that Node.js code running as a server in production to serve up your html/javascript/css assets. But you'll usually always still have other build-process Node.js code that never is executed in production, and is only meant to help build the browser bundled JS.
I hope I wasn't too presumptuous in assuming this might be part of your question. I know that this was definitely a hazy thing for me for a while with all this isomorphic stuff going on. Especially when you're trying to download NPM packages that you think are for the browser, but it ends up only being for Node.js runtime.