Today most websites are not static documents anymore but are files that get altered by javascript by manipulating the DOM, so I don’t think any html files should be considered as static files?
The files for your pages themselves are still static. That is, you are not creating them dynamically with server-side code. What happens in the browser doesn’t matter in this context… the idea is that you do not need to generate these files on the fly, as their content does not change.
I understand javascript files that are included in html or css are best stored in the client directory?
Where you store your files on the server doesn’t matter. What does matter is that you don’t generally want to serve static files from your Node.js application. Tools like express.static are for convenience only. Sometimes, you may have a low traffic application. In these cases, it is perfectly acceptable to serve files with your Node.js app. For anything with a decent traffic load, it’s best to leave static serving up to a real web server such as Nginx, since these servers are far more efficient than your Node.js application.
You should keep your application code (code that serves dynamic responses, such as an API server) within your Node.js application.
It’s also a good idea to put your Node.js application behind a proxy like Nginx so that the proxy can handle all of the client interaction (such as spoon-feeding slow clients) leaving your Node.js application to do what it does best. Again though, in low traffic situations it doesn’t matter.