Node.js is a runtime environment. That’s far broader than “backend” or “frontend”, which is an important distinction when understanding how to use it.
Backend/frontend refers to a client/server programming model (which is not just web!). There are others. For example, you can execute a program from a terminal (CLI, i.e. command line interface). You can run a program as a background daemon. You can build desktop software with Node (Electron, NW.js, etc). Those are all different envrionments. You can even run programs to build code for other environments.
Node is most frequently used to create command line utilities and build processes. For example, npm is a command line utility for Node. So is Webpack, Babel, most React tools, and many other popular developer build tools. 97% of modern web browser code is maintained in the npm registry, which makes Node/npm a critical part of the development environment for writing code which targets the browser.
It’s also important to note that the “frontend” isn’t always a web page. A user interface can be a terminal screen… it doesn’t have to be a browser. In those situations, Node can be of value for “frontend” and even “UI” development.
The main point here is backend/frontend are loosely defined concepts. Most people use them to describe web programming, but there are several other contexts to consider. In a broader context, Node is applicable in most environments.