{"id":55571,"url":"https://github.com/kryz81/awesome-nodejs-learning","name":"awesome-nodejs-learning","description":"A list limited to the best Node.js Learning Resources","projects_count":99,"last_synced_at":"2026-07-09T17:00:27.092Z","repository":{"id":37768714,"uuid":"197576400","full_name":"kryz81/awesome-nodejs-learning","owner":"kryz81","description":"A list limited to the best Node.js Learning Resources","archived":false,"fork":false,"pushed_at":"2023-01-26T11:43:26.000Z","size":340,"stargazers_count":471,"open_issues_count":5,"forks_count":69,"subscribers_count":15,"default_branch":"master","last_synced_at":"2026-06-21T17:02:51.616Z","etag":null,"topics":["awesome","awesome-list","nodejs"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kryz81.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-07-18T11:44:59.000Z","updated_at":"2026-06-19T18:42:20.000Z","dependencies_parsed_at":"2023-02-14T17:01:27.264Z","dependency_job_id":null,"html_url":"https://github.com/kryz81/awesome-nodejs-learning","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kryz81/awesome-nodejs-learning","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kryz81%2Fawesome-nodejs-learning","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kryz81%2Fawesome-nodejs-learning/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kryz81%2Fawesome-nodejs-learning/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kryz81%2Fawesome-nodejs-learning/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kryz81","download_url":"https://codeload.github.com/kryz81/awesome-nodejs-learning/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kryz81%2Fawesome-nodejs-learning/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35306717,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-09T02:00:07.329Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"created_at":"2024-01-31T09:50:43.249Z","updated_at":"2026-07-09T17:00:27.092Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["Handling Errors","Security","Node.js Certification","Node.js History","Module System","Patterns, Anti-patterns, Best practices","Reactor Pattern","Node.js Internals","Event Loop","Streams","Event System","Dependency Injection","Testing","Debugging","Linting and formatting","Optimizing Performance","Logging","Authentication","Node.js with docker","Monitoring","Architecture and Project Structure","Native Modules","NPM","Other","Recommended courses","Node.js with typescript","Microservices","Recommended Books","Websockets","Frameworks"],"sub_categories":[],"readme":"# Awesome Node.js Learning Resources\n\n[![Awesome](https://awesome.re/badge.svg)](https://awesome.re)\n\n---\n\n## Contents\n\n- [Awesome Node.js Learning Resources](#awesome-nodejs-learning-resources)\n  - [Contents](#contents)\n  - [Node.js Certification](#nodejs-certification)\n  - [Node.js History](#nodejs-history)\n  - [Module System](#module-system)\n  - [Patterns, Anti-patterns, Best practices](#patterns-anti-patterns-best-practices)\n  - [Reactor Pattern](#reactor-pattern)\n  - [Node.js Internals](#nodejs-internals)\n  - [Event Loop](#event-loop)\n  - [Streams](#streams)\n  - [Event System](#event-system)\n  - [Dependency Injection](#dependency-injection)\n  - [Handling Errors](#handling-errors)\n  - [Testing](#testing)\n  - [Debugging](#debugging)\n  - [Linting and formatting](#linting-and-formatting)\n  - [Optimizing Performance](#optimizing-performance)\n  - [Security](#security)\n  - [Logging](#logging)\n  - [Authentication](#authentication)\n  - [Websockets](#websockets)\n  - [Node.js with docker](#nodejs-with-docker)\n  - [Node.js with typescript](#nodejs-with-typescript)\n  - [Microservices](#microservices)\n  - [Monitoring](#monitoring)\n  - [Frameworks](#frameworks)\n  - [Architecture and Project Structure](#architecture-and-project-structure)\n  - [Native Modules](#native-modules)\n  - [NPM](#npm)\n  - [Other](#other)\n  - [Recommended Books](#recommended-books)\n  - [Recommended courses](#recommended-courses)\n\n---\n\n## Node.js Certification\n\n- [Node.js Certification: first impressions](https://dev.to/kryz/node-js-certification-first-impressions-21a1)\n\n## Node.js History\n\n- [Original Node.js Presentation by Ryan Dahl](https://www.youtube.com/watch?v=ztspvPYybIY)\n- [History of Node.js on a Timeline](https://blog.risingstack.com/history-of-node-js/)\n\n## Module System\n\n- [What is a difference between a module and a package](https://stackoverflow.com/questions/20008442/difference-between-a-module-and-a-package-in-node)\n- [Getting started with Node.js modules](https://adrianmejia.com/getting-started-with-node-js-modules-require-exports-imports-npm-and-beyond/)\n- [Requiring modules in Node.js: Everything you need to know](https://www.freecodecamp.org/news/requiring-modules-in-node-js-everything-you-need-to-know-e7fbd119be8/)\n\n## Patterns, Anti-patterns, Best practices\n\n- [20 ways to become a better Node.js developer in 2020](https://medium.com/@me_37286/20-ways-to-become-a-better-node-js-developer-in-2020-d6bd73fcf424)\n- **[The largest Node.js best practices list](https://github.com/goldbergyoni/nodebestpractices)**\n- [Fundamental Node.js Design Patterns](https://blog.risingstack.com/fundamental-node-js-design-patterns/)\n- [9 Ways to Avoid Pitfalls Using Node.js](https://blog.avenuecode.com/9-ways-to-avoid-pitfalls-using-nodejs)\n\n## Reactor Pattern\n\n- [Understanding Reactor Pattern](https://dzone.com/articles/understanding-reactor-pattern-thread-based-and-eve)\n- [Understanding Reactor Pattern for Highly Scalable I/O Bound Web Server](https://www.puncsky.com/blog/2015/01/13/understanding-reactor-pattern-for-highly-scalable-i-o-bound-web-server/)\n\n## Node.js Internals\n\n- [Crossing the JS/C++ Boundary — Advanced Node.js Internals](https://blog.insiderattack.net/crossing-the-js-c-boundary-advanced-nodejs-internals-part-1-cb52957758d8)\n- [Internals of Node- Advance node](https://medium.com/front-end-weekly/internals-of-node-advance-node-%EF%B8%8F-8612f6a957d7)\n- [https://codeburst.io/node-js-v8-internals-an-illustrative-primer-83766e983bf6](https://codeburst.io/node-js-v8-internals-an-illustrative-primer-83766e983bf6)\n- [Node.js C++/JS Boundary: Crossing The Rubicon](https://blog.bitsrc.io/nodejs-c-js-boundary-crossing-the-rubicon-c9c5511907a2)\n\n## Event Loop\n\n- [Event Loop and the Big Picture](https://blog.insiderattack.net/event-loop-and-the-big-picture-nodejs-event-loop-part-1-1cb67a182810)\n- [Timers, Immediates and Next Ticks](https://blog.insiderattack.net/timers-immediates-and-process-nexttick-nodejs-event-loop-part-2-2c53fd511bb3)\n- [Promises, Next Ticks and Immediates](https://blog.insiderattack.net/promises-next-ticks-and-immediates-nodejs-event-loop-part-3-9226cbe7a6aa)\n- [Handling IO with Event Loop](https://blog.insiderattack.net/handling-io-nodejs-event-loop-part-4-418062f917d1)\n- [Event Loop Best Practices](https://blog.insiderattack.net/event-loop-best-practices-nodejs-event-loop-part-5-e29b2b50bfe2)\n- **[New Changes to the Timers and Microtasks in Node v11.0.0](https://blog.insiderattack.net/new-changes-to-timers-and-microtasks-from-node-v11-0-0-and-above-68d112743eb3)**\n- [The Event Loop](https://developer.ibm.com/tutorials/learn-nodejs-the-event-loop/)\n- [A complete guide to the Node.js event loop](https://blog.logrocket.com/a-complete-guide-to-the-node-js-event-loop/)\n- [What you should know to really understand the Node.js Event Loop](https://medium.com/the-node-js-collection/what-you-should-know-to-really-understand-the-node-js-event-loop-and-its-metrics-c4907b19da4c)\n- [The Node.js Event Loop](https://flaviocopes.com/node-event-loop/)\n\n## Streams\n\n- [Stream Handbook by substack](https://github.com/substack/stream-handbook)\n- [Node.js Streams: Everything you need to know](https://www.freecodecamp.org/news/node-js-streams-everything-you-need-to-know-c9141306be93/)\n- [Node.js Streams](https://flaviocopes.com/nodejs-streams/)\n- [Node.js Streams Demystified](https://codeburst.io/nodejs-streams-demystified-e0b583f0005)\n- [Node.js File Streams Explained](https://areknawo.com/node-js-file-streams-explained/)\n\n## Event System\n\n- [Event-Driven Programming in Node.js](https://alligator.io/nodejs/event-driven-programming/)\n- [How to code your own event emitter in Node.js](https://www.freecodecamp.org/news/how-to-code-your-own-event-emitter-in-node-js-a-step-by-step-guide-e13b7e7908e1/)\n- [Handling and dispatching events with Node.js](https://blog.logrocket.com/handling-and-dispatching-events-with-node-js/)\n\n## Dependency Injection\n\n- [Dependency injection in Node.js projects](https://blog.alejandrocelaya.com/2018/12/14/dependency-injection-in-nodejs-projects/)\n- [Dependency Injection in Node.js](https://blog.risingstack.com/dependency-injection-in-node-js/)\n- [Do I need Dependency Injection in Node.js?](https://stackoverflow.com/questions/9250851/do-i-need-dependency-injection-in-nodejs-or-how-to-deal-with)\n- [Node.js advanced pattern: Dependency Injection Container](https://isamatov.com/node-js-dependency-injection-container/)\n\n## Handling Errors\n\n- **[Error Management in Node.js Applications](https://dev.to/deepal/error-management-in-node-js-applications-3d2k)**\n- [Error Handling in Node.js](https://www.joyent.com/node-js/production/design/errors)\n- [Error Management in Node.js Applications](https://blog.insiderattack.net/error-management-in-node-js-applications-e43198b71663)\n- [Error handling - The missing piece of your node.js architecture](https://softwareontheroad.com/error-handling-nodejs/)\n- [Functional Error Handling with Express.js and DDD](https://khalilstemmler.com/articles/enterprise-typescript-nodejs/functional-error-handling/)\n\n## Testing\n\n- **[Node.js \u0026 JavaScript Testing Best Practices](https://medium.com/@me_37286/yoni-goldberg-javascript-nodejs-testing-best-practices-2b98924c9347)**\n- [Unit Testing Express Middleware Behavior](https://medium.com/@morrissinger/unit-testing-express-middleware-behavior-in-ecmascript-2015-f1641ebb8040)\n- [A testing guide for Express with request and response mocking/stubbing using Jest or sinon](https://codewithhugo.com/express-request-response-mocking/)\n- [Unit testing in Express with Promise-based Middleware and Controllers](https://codeburst.io/unit-testing-in-express-with-promise-based-middleware-and-controllers-7d3d59ae61f8)\n- [Testing streams: a primer](https://dev.to/cdanielsen/testing-streams-a-primer-3n6e)\n- [Please, stop playing with proxyquire](https://dev.to/thekashey/please-stop-playing-with-proxyquire-11j4)\n\n## Debugging\n\n- [The Absolute Easiest Way to Debug Node.js — with VS Code](https://itnext.io/the-absolute-easiest-way-to-debug-node-js-with-vscode-2e02ef5b1bad)\n- [Debugging Node.js with Google Chrome](https://medium.com/the-node-js-collection/debugging-node-js-with-google-chrome-4965b5f910f4)\n- [How to Debug a Node.js app in a Docker Container](https://blog.risingstack.com/how-to-debug-a-node-js-app-in-a-docker-container/)\n\n## Linting and formatting\n\n- [How to use ESLint in Node.js Applications?](https://hackernoon.com/how-to-use-eslint-in-node-js-applications-cc4b2298ce55)\n- [Why (and how) to use eslint in your project](https://medium.com/the-node-js-collection/why-and-how-to-use-eslint-in-your-project-742d0bc61ed7)\n- [Node.js – Auto Lint \u0026 Format on Git Commit with Airbnb Style Guide](https://coffeencoding.com/nodejs-auto-lint-format-on-git-commit-with-airbnb-styleguide/)\n\n## Optimizing Performance\n\n- **[Five Misconceptions on How NodeJS Works](https://blog.insiderattack.net/five-misconceptions-on-how-nodejs-works-edfb56f7b3a6)**\n- [Deep Dive Into Worker Threads in Node.js](https://blog.insiderattack.net/deep-dive-into-worker-threads-in-node-js-e75e10546b11)\n- [Monitoring Node.js: Watch Your Event Loop Lag!](https://davidhettler.net/blog/event-loop-lag/)\n- [Node.js under a Microscope: CPU FlameGraph and FlameScope](https://shuheikagawa.com/blog/2018/09/16/node-js-under-a-microscope/)\n\n## Security\n\n- [We’re under attack! 23+ Node.js security best practices](https://medium.com/@nodepractices/were-under-attack-23-node-js-security-best-practices-e33c146cb87d)\n- [OWASP Node Goat Tutorial: Fixing OWASP Top 10](https://nodegoat.herokuapp.com/tutorial)\n- [Why npm lockfiles can be a security blindspot for injecting malicious modules](https://snyk.io/blog/why-npm-lockfiles-can-be-a-security-blindspot-for-injecting-malicious-modules/)\n- [Understanding filesystem takeover vulnerabilities in npm JavaScript package manager](https://snyk.io/blog/understanding-filesystem-takeover-vulnerabilities-in-npm-javascript-package-manager/)\n- [Understanding and implementing rate limiting in Node.js](https://blog.logrocket.com/rate-limiting-node-js/)\n\n## Logging\n\n- [A Guide to Node.js Logging](https://www.twilio.com/blog/guide-node-js-logging)\n- [Logging: Best Practices for Node.js Applications](https://blog.bitsrc.io/logging-best-practices-for-node-js-applications-8a0a5969b94c)\n- [Getting Started With morgan](https://alligator.io/nodejs/getting-started-morgan/)\n- [Node.js Logging Tutorial](https://stackify.com/node-js-logging/)\n\n## Authentication\n\n- [Learn how to handle authentication with Node using Passport.js](https://www.freecodecamp.org/news/learn-how-to-handle-authentication-with-node-using-passport-js-4a56ed18e81e/)\n- [Your Node.js authentication tutorial is (probably) wrong](https://hackernoon.com/your-node-js-authentication-tutorial-is-wrong-f1a3bf831a46)\n- [You don't need passport.js - Guide to Node.js authentication](https://dev.to/santypk4/you-don-t-need-passport-js-guide-to-node-js-authentication-26ig)\n\n## Websockets\n\n- [Introduction to Socket.IO](https://alligator.io/nodejs/intro-to-socketio/)\n\n## Node.js with docker\n\n- [Docker and Node.js Best Practices from Bret Fisher at DockerCon](https://www.youtube.com/watch?v=Zgx0o8QjJk4)\n- [Step-by-Step Guide to Setup Node With Docker](https://dev.to/itmayziii/step-by-step-guide-to-setup-node-with-docker-2mc9)\n- [Node.js memory management in container environments](https://medium.com/the-node-js-collection/node-js-memory-management-in-container-environments-7eb8409a74e8)\n- [Learn Docker - DevOps with Node.js \u0026 Express](https://www.youtube.com/watch?v=9zUHg7xjIqQ)\n\n## Node.js with typescript\n\n- [Best Practices For Using TypeScript with Node.js](https://blog.bitsrc.io/best-practices-for-using-typescript-with-node-js-50907f8cc803)\n- [Setting Up a Node Project With Typescript](https://scotch.io/tutorials/setting-up-a-node-project-with-typescript)\n\n## Microservices\n\n- [My Favorite Microservice Design Patterns for Node.js](https://blog.bitsrc.io/my-favorite-microservice-design-patterns-for-node-js-fe048c635d83)\n\n## Monitoring\n\n- [Top Node.js Metrics to Monitor](https://dev.to/sematext/top-node-js-metrics-to-monitor-1id5)\n\n## Frameworks\n\n- [An introduction to the hapi Node.js Framework](https://alligator.io/nodejs/intro-to-hapi/)\n- [Serving Static Files in Express.js](https://alligator.io/nodejs/serving-static-files-in-express/)\n\n## Architecture and Project Structure\n\n- [Bulletproof node.js project architecture ](https://softwareontheroad.com/ideal-nodejs-project-structure/)\n- [Implementing Event Sourcing and CQRS pattern with MongoDB](https://dev.to/deepal/implementing-event-sourcing-and-cqrs-pattern-with-mongodb-enn)\n\n## Native Modules\n\n- [Primer into Node.js Native Modules](https://www.codementor.io/@andreiglingeanu/primer-into-nodejs-native-modules-ks0awzluk)\n- [The Future of Native Modules in Node.js](https://www.nearform.com/blog/the-future-of-native-modules-in-node-js/)\n- [Native Extensions for Node.js](https://medium.com/the-node-js-collection/native-extensions-for-node-js-767e221b3d26)\n\n## NPM\n\n- [What's what? - Package.json cheatsheet](https://dev.to/areknawo/what-s-what-package-json-cheatsheet-1g28)\n- [These NPM tricks will make you a pro](https://www.freecodecamp.org/news/10-npm-tricks-that-will-make-you-a-pro-a945982afb25/)\n- [NPM Task Running Techniques](https://medium.com/netscape/npm-task-running-techniques-15fe5b697f15)\n- [4 Solutions To Run Multiple Node.js or NPM Commands Simultaneously](https://itnext.io/4-solutions-to-run-multiple-node-js-or-npm-commands-simultaneously-9edaa6215a93)\n- [Three Things You Didn't Know You Could Do with npm Scripts](https://www.twilio.com/blog/npm-scripts)\n\n## Other\n\n- [Running Multiple Versions of Node.js with Node Version Manager](https://alligator.io/nodejs/node-version-manager/)\n- [Want to be a Web Developer? Learn Node.js not PHP](https://medium.com/zerotomastery/want-to-be-a-web-developer-learn-node-js-not-php-dc298154fafd)\n- [The leftpad incident](https://blog.npmjs.org/post/141577284765/kik-left-pad-and-npm)\n\n## Recommended Books\n\n- **[Node.js Design Patterns](https://www.nodejsdesignpatterns.com)** (must-read for every node.js dev)\n- [Node Cookbook](https://www.packtpub.com/catalogsearch/result/?q=node%20cookbook)\n\n## Recommended courses\n\n- [Node.js: Advanced Concepts](https://www.udemy.com/advanced-node-for-developers/)\n- [Beginner's Series to Node.js](https://www.youtube.com/playlist?list=PLlrxD0HtieHje-_287YJKhY8tDeSItwtg) - 26 short videos to start coding with Node.js\n","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/kryz81%2Fawesome-nodejs-learning/projects"}