This document discusses software system architecture for Node.js applications. It begins by classifying common uses of Node.js, such as for local applications, servers, clients, and hardware control. It then discusses where architecture is important, noting that complexity, reliability, and variability require an architecture. The document outlines some Node.js architectural problems, such as old thinking from other languages and mixing of abstraction levels. It also discusses what architecture entails, such as dividing a system, naming components, and defining connections between them. Key aspects of Node.js like asynchrony, state, and scalability are examined. The document advocates for proper separation and binding of layers in an architecture. It concludes that monolithic and microservice architectures