# pavloshaparenko/nodejscourse architecture

> Architecture diagram of the GitHub repository pavloshaparenko/nodejscourse, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/pavloshaparenko/nodejscourse
- Repository: https://github.com/pavloshaparenko/nodejscourse

## Overview

This repository is a set of standalone Node.js course examples, not one integrated application. Its examples demonstrate event-loop scheduling, module systems, filesystem and path APIs, events, HTTP handling, streams, and a small Express server. The HTTP server is the clearest user-to-result workflow: a client request is routed to a handler, which returns content or reads and updates comment data. The README contains no capability details, so the map reflects the directory tree and sampled source; unsampled examples are shown only where their paths and purpose are evident.

Main entry points: [`03-commonjs-modules/index.js`](https://github.com/pavloshaparenko/nodejscourse/blob/main/03-commonjs-modules/index.js) (CommonJS example), [`09-streams/copy-files-in-folder.mjs`](https://github.com/pavloshaparenko/nodejscourse/blob/main/09-streams/copy-files-in-folder.mjs) (Folder stream copy), [`08-http/handlers.js`](https://github.com/pavloshaparenko/nodejscourse/blob/main/08-http/handlers.js) (Request handlers), [`04-es6-modules/index.mjs`](https://github.com/pavloshaparenko/nodejscourse/blob/main/04-es6-modules/index.mjs) (ES module example)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_scheduling["Runtime scheduling"]
  node_eventloop["Event-loop demo<br/>[app.js]"]
  node_fibonacci["Fibonacci demos"]
end

subgraph group_modules["Modules and events"]
  node_cjs["CommonJS example<br/>[index.js]"]
  node_cjs_exports["CommonJS exports"]
  node_cjs_single["Single export<br/>[single-export.js]"]
  node_cjs_import["Re-export example"]
  node_esm["ES module example<br/>[index.mjs]"]
  node_esm_default["Default export<br/>[default-export.mjs]"]
  node_events["EventEmitter demo<br/>[index.mjs]"]
end

subgraph group_io["Files and streams"]
  node_fs_demo["Filesystem example<br/>[index.js]"]
  node_fs_promises["Promise filesystem<br/>[promises-fs.js]"]
  node_fs_sync["Synchronous filesystem<br/>[sync-fs.js]"]
  node_path_demo["Path utilities<br/>[index.js]"]
  node_stream_copy["Folder stream copy"]
  node_stream_http["HTTP file stream"]
  node_stream_stdin["Standard I/O pipe"]
  node_stream_create["Create file stream<br/>[create-file.mjs]"]
  node_stream_files["Sample input files"]
  node_stream_output["Copied files"]
end

subgraph group_web["HTTP examples"]
  node_http_client(("HTTP client"))
  node_http_server["HTTP router<br/>[index.js]"]
  node_handlers["Request handlers<br/>[handlers.js]"]
  node_comments[("Comments data<br/>[data.js]")]
  node_comment_form["Comment form<br/>[comment-form.html]"]
  node_express_client(("HTTP client"))
  node_express_app["Express example<br/>[index.js]"]
  node_express["Express runtime"]
end

node_learner(("Learner"))

node_learner -->|"runs demo"| node_eventloop
node_learner -->|"runs demo"| node_fibonacci
node_learner -->|"runs demo"| node_cjs
node_cjs -->|"imports"| node_cjs_exports
node_cjs -->|"imports"| node_cjs_single
node_cjs -->|"imports"| node_cjs_import
node_learner -->|"runs demo"| node_esm
node_esm -->|"calls"| node_esm_default
node_learner -->|"runs demo"| node_events
node_learner -->|"runs demo"| node_fs_demo
node_learner -->|"runs demo"| node_fs_promises
node_learner -->|"runs demo"| node_fs_sync
node_learner -->|"runs demo"| node_path_demo
node_learner -->|"runs demo"| node_stream_copy
node_stream_copy -->|"reads"| node_stream_files
node_stream_copy -->|"writes"| node_stream_output
node_learner -->|"runs demo"| node_stream_http
node_learner -->|"runs demo"| node_stream_stdin
node_learner -->|"runs demo"| node_stream_create
node_http_client -->|"sends request"| node_http_server
node_http_server -->|"dispatches"| node_handlers
node_handlers -->|"reads and updates"| node_comments
node_handlers -->|"reads"| node_comment_form
node_express_client -->|"sends request"| node_express_app
node_express_app -->|"uses"| node_express

click node_eventloop "https://github.com/pavloshaparenko/nodejscourse/blob/main/01-event-loop-events/app.js"
click node_fibonacci "https://github.com/pavloshaparenko/nodejscourse/blob/main/02-blocking-event-loop/fibonacci-with-cache.js"
click node_cjs "https://github.com/pavloshaparenko/nodejscourse/blob/main/03-commonjs-modules/index.js"
click node_cjs_exports "https://github.com/pavloshaparenko/nodejscourse/blob/main/03-commonjs-modules/multiple-exports.js"
click node_cjs_single "https://github.com/pavloshaparenko/nodejscourse/blob/main/03-commonjs-modules/my-modules/single-export.js"
click node_cjs_import "https://github.com/pavloshaparenko/nodejscourse/blob/main/03-commonjs-modules/export-and-import.js"
click node_esm "https://github.com/pavloshaparenko/nodejscourse/blob/main/04-es6-modules/index.mjs"
click node_esm_default "https://github.com/pavloshaparenko/nodejscourse/blob/main/04-es6-modules/default-export.mjs"
click node_events "https://github.com/pavloshaparenko/nodejscourse/blob/main/06-events/index.mjs"
click node_fs_demo "https://github.com/pavloshaparenko/nodejscourse/blob/main/05-fs/index.js"
click node_fs_promises "https://github.com/pavloshaparenko/nodejscourse/blob/main/05-fs/promises-fs.js"
click node_fs_sync "https://github.com/pavloshaparenko/nodejscourse/blob/main/05-fs/sync-fs.js"
click node_path_demo "https://github.com/pavloshaparenko/nodejscourse/blob/main/07-path/index.js"
click node_stream_copy "https://github.com/pavloshaparenko/nodejscourse/blob/main/09-streams/copy-files-in-folder.mjs"
click node_stream_http "https://github.com/pavloshaparenko/nodejscourse/blob/main/09-streams/http-stream-file.mjs"
click node_stream_stdin "https://github.com/pavloshaparenko/nodejscourse/blob/main/09-streams/stdin-pipe-stdout.mjs"
click node_stream_create "https://github.com/pavloshaparenko/nodejscourse/blob/main/09-streams/create-file.mjs"
click node_stream_files "https://github.com/pavloshaparenko/nodejscourse/tree/main/09-streams/files"
click node_stream_output "https://github.com/pavloshaparenko/nodejscourse/tree/main/09-streams/copied-files"
click node_http_server "https://github.com/pavloshaparenko/nodejscourse/blob/main/08-http/index.js"
click node_handlers "https://github.com/pavloshaparenko/nodejscourse/blob/main/08-http/handlers.js"
click node_comments "https://github.com/pavloshaparenko/nodejscourse/blob/main/08-http/data.js"
click node_comment_form "https://github.com/pavloshaparenko/nodejscourse/blob/main/08-http/files/comment-form.html"
click node_express_app "https://github.com/pavloshaparenko/nodejscourse/blob/main/10-npm/index.js"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_eventloop,node_fibonacci toneBlue
class node_cjs,node_cjs_exports,node_cjs_single,node_cjs_import,node_esm,node_esm_default,node_events toneAmber
class node_fs_demo,node_fs_promises,node_fs_sync,node_path_demo,node_stream_copy,node_stream_http,node_stream_stdin,node_stream_create,node_stream_files,node_stream_output toneMint
class node_http_client,node_http_server,node_handlers,node_comments,node_comment_form,node_express_client,node_express_app,node_express toneRose
class node_learner toneIndigo
```

## Components

### Runtime scheduling

- [Event-loop demo](https://github.com/pavloshaparenko/nodejscourse/blob/main/01-event-loop-events/app.js): `01-event-loop-events/app.js`
- [Fibonacci demos](https://github.com/pavloshaparenko/nodejscourse/blob/main/02-blocking-event-loop/fibonacci-with-cache.js): `02-blocking-event-loop/fibonacci-with-cache.js`

### Modules and events

- [CommonJS example](https://github.com/pavloshaparenko/nodejscourse/blob/main/03-commonjs-modules/index.js): `03-commonjs-modules/index.js`
- [CommonJS exports](https://github.com/pavloshaparenko/nodejscourse/blob/main/03-commonjs-modules/multiple-exports.js): `03-commonjs-modules/multiple-exports.js`
- [Single export](https://github.com/pavloshaparenko/nodejscourse/blob/main/03-commonjs-modules/my-modules/single-export.js): `03-commonjs-modules/my-modules/single-export.js`
- [Re-export example](https://github.com/pavloshaparenko/nodejscourse/blob/main/03-commonjs-modules/export-and-import.js): `03-commonjs-modules/export-and-import.js`
- [ES module example](https://github.com/pavloshaparenko/nodejscourse/blob/main/04-es6-modules/index.mjs): `04-es6-modules/index.mjs`
- [Default export](https://github.com/pavloshaparenko/nodejscourse/blob/main/04-es6-modules/default-export.mjs): `04-es6-modules/default-export.mjs`
- [EventEmitter demo](https://github.com/pavloshaparenko/nodejscourse/blob/main/06-events/index.mjs): `06-events/index.mjs`

### Files and streams

- [Filesystem example](https://github.com/pavloshaparenko/nodejscourse/blob/main/05-fs/index.js): `05-fs/index.js`
- [Promise filesystem](https://github.com/pavloshaparenko/nodejscourse/blob/main/05-fs/promises-fs.js): `05-fs/promises-fs.js`
- [Synchronous filesystem](https://github.com/pavloshaparenko/nodejscourse/blob/main/05-fs/sync-fs.js): `05-fs/sync-fs.js`
- [Path utilities](https://github.com/pavloshaparenko/nodejscourse/blob/main/07-path/index.js): `07-path/index.js`
- [Folder stream copy](https://github.com/pavloshaparenko/nodejscourse/blob/main/09-streams/copy-files-in-folder.mjs): `09-streams/copy-files-in-folder.mjs`
- [HTTP file stream](https://github.com/pavloshaparenko/nodejscourse/blob/main/09-streams/http-stream-file.mjs): `09-streams/http-stream-file.mjs`
- [Standard I/O pipe](https://github.com/pavloshaparenko/nodejscourse/blob/main/09-streams/stdin-pipe-stdout.mjs): `09-streams/stdin-pipe-stdout.mjs`
- [Create file stream](https://github.com/pavloshaparenko/nodejscourse/blob/main/09-streams/create-file.mjs): `09-streams/create-file.mjs`
- [Sample input files](https://github.com/pavloshaparenko/nodejscourse/tree/main/09-streams/files): `09-streams/files`
- [Copied files](https://github.com/pavloshaparenko/nodejscourse/tree/main/09-streams/copied-files): `09-streams/copied-files`

### HTTP examples

- **HTTP client**
- [HTTP router](https://github.com/pavloshaparenko/nodejscourse/blob/main/08-http/index.js): `08-http/index.js`
- [Request handlers](https://github.com/pavloshaparenko/nodejscourse/blob/main/08-http/handlers.js): `08-http/handlers.js`
- [Comments data](https://github.com/pavloshaparenko/nodejscourse/blob/main/08-http/data.js): `08-http/data.js`
- [Comment form](https://github.com/pavloshaparenko/nodejscourse/blob/main/08-http/files/comment-form.html): `08-http/files/comment-form.html`
- **HTTP client**
- [Express example](https://github.com/pavloshaparenko/nodejscourse/blob/main/10-npm/index.js): `10-npm/index.js`
- **Express runtime**

### Other components

- **Learner**

## Connections

- Learner → Event-loop demo: runs demo
- Learner → Fibonacci demos: runs demo
- Learner → CommonJS example: runs demo
- CommonJS example → CommonJS exports: imports
- CommonJS example → Single export: imports
- CommonJS example → Re-export example: imports
- Learner → ES module example: runs demo
- ES module example → Default export: calls
- Learner → EventEmitter demo: runs demo
- Learner → Filesystem example: runs demo
- Learner → Promise filesystem: runs demo
- Learner → Synchronous filesystem: runs demo
- Learner → Path utilities: runs demo
- Learner → Folder stream copy: runs demo
- Folder stream copy → Sample input files: reads
- Folder stream copy → Copied files: writes
- Learner → HTTP file stream: runs demo
- Learner → Standard I/O pipe: runs demo
- Learner → Create file stream: runs demo
- HTTP client → HTTP router: sends request
- HTTP router → Request handlers: dispatches
- Request handlers → Comments data: reads and updates
- Request handlers → Comment form: reads
- HTTP client → Express example: sends request
- Express example → Express runtime: uses
