Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Node.js CI

A workshop on Node.js Streams by Luciano Mammino (@loige). 🤓

I also have a workshop about JavaScript Iteration Protocols.


Before getting started, make sure you have the following prerequisites in your system:

  • Node.js 16.14+
  • NPM 8.3+
  • a text editor of your choice
  • a bash-compatible shell (if you use Windows you can install bash or use Docker, as described below)

Getting started

Clone the repository and run npm install to get all the necessary dependencies.

The workshop is divided in chapters and the first chapter starts at 01-buffer-vs-stream.

Every chapter will teach you a specific stream concept and offer you some examples and exercises to familiarize with that concept.

You will often find 2 different types of interactive actions:

  • 🎭 PLAY : commands or instructions you should spend some time with to get familiar with some concepts or APIs

  • 🏹 Exercise: when you have to use some of the concepts you just learned to solve a programming problem. Generally every exercise will have a test that you can run to validate your solution.

Enjoy! 🙃


Using Docker

If you prefer to keep your environment clean and use Docker, you should be able to spin un a workable environment with Docker Compose by running:

docker-compose run workspace

If you use Docker, npm install is automatically run for you every time you launch the container.

Shameless plug 😇

If you like this piece of work, consider supporting me by getting a copy of Node.js Design Patterns, Third Edition, which also goes into great depth about Streams and related design patterns.

If you already have this book, please consider writing a review on Amazon, Packt, GoodReads or in any other review channel that you generally use. That would support us greatly 🙏.


In the spirit of Open Source, everyone is very welcome to contribute to this project. You can contribute just by submitting bugs or suggesting improvements by opening an issue on GitHub or by submitting a PR.


Licensed under MIT License. © Luciano Mammino.