/awesome-nodejs

:zap: Delightful Node.js packages and resources

Awesome Node.js Awesome

A curated list of delightful Node.js packages and resources.

Just type node.cool to go here ✨

You might also like awesome-npm. Please read the contribution guidelines before contributing.


🦄 Support my open-source work by buying this awesome video course:
Learn to build apps and APIs with Node.js by Wes Bos
Try his free JavaScript 30 course for a taste of what to expect & check out his ES6, React, Sublime courses.


Check out my blog and say "hi" on Twitter.

Contents

Packages

Mad science

  • webtorrent - Streaming torrent client for Node.js and the browser.
  • peerflix - Streaming torrent client.
  • dat - Real-time replication and versioning for data sets.
  • ipfs - Distributed file system that seeks to connect all computing devices with the same system of files.
  • GitTorrent - Peer-to-peer network of Git repositories being shared over BitTorrent.
  • stackgl - Open software ecosystem for WebGL, built on top of browserify and npm.
  • peerwiki - All of Wikipedia on BitTorrent.
  • peercast - Stream a torrent video to Chromecast.
  • BitcoinJS - Clean, readable, proven Bitcoin library.
  • Bitcore - Pure and powerful Bitcoin library.
  • PDFKit - PDF generation library.
  • turf - Modular geospatial processing and analysis engine.
  • webcat - p2p pipe across the web using WebRTC that uses your GitHub private/public key for authentication.
  • NodeOS - The first operating system powered by npm.
  • limdu - Machine-learning framework.
  • Cytoscape.js - Graph theory (a.k.a. network) modeling and analysis.
  • kad - Kademlia distributed hash table.
  • seedshot - Temporary P2P screenshot sharing from your browser.
  • js-git - JavaScript implementation of Git.
  • skale - High performance distributed data processing engine.

Command-line apps

  • np - Better npm publish.
  • trash - Safer alternative to rm.
  • npm-name - Check whether a package name is available on npm.
  • speed-test - Test your internet connection speed and ping.
  • emoj - Find relevant emoji from text on the command-line.
  • pageres - Capture website screenshots.
  • cpy - Copy files.
  • vtop - More better top, with nice charts.
  • empty-trash - Empty the trash.
  • is-up - Check whether a website is up or down.
  • is-online - Check if the internet connection is up.
  • public-ip - Get your public IP address.
  • clipboard-cli - Copy & paste on the terminal.
  • ttystudio - Record your terminal and compile it to a GIF or APNG without any external dependencies, bash scripts, gif concatenation, etc.
  • XO - Enforce strict code style using the JavaScript happiness style.
  • Standard - JavaScript Standard Style — One style to rule them all.
  • ESLint - The pluggable linting utility for JavaScript.
  • dev-time - Get the current local time of a GitHub user.
  • David - Tells you when your package npm dependencies are out of date.
  • http-server - Simple, zero-config command-line HTTP server.
  • Live Server - Development HTTP-server with livereload capability.
  • bcat - Pipe command output to web browsers.
  • normit - Google Translate with speech synthesis in your terminal.
  • slap - Sublime-like terminal-based text editor.
  • jsinspect - Detect copy-pasted and structurally similar code.
  • esformatter - JavaScript code beautifier/formatter.
  • fkill - Fabulously kill processes. Cross-platform.
  • pjs - Pipeable JavaScript. Quickly filter, map, and reduce from the terminal.
  • license-checker - Check licenses of your app's dependencies.
  • browser-run - Easily run code in a browser environment.
  • tmpin - Adds stdin support to any CLI app that accepts file input.
  • modhelp - Syntax-highlighted module READMEs in terminal with ANSI-friendly pager.
  • wifi-password - Get the current wifi password.
  • wallpaper - Change the desktop wallpaper.
  • brightness - Change the screen brightness.
  • torrent - Download torrents.
  • tfa - Two-factor authentication client.
  • rtail - Terminal output to the browser in seconds, using UNIX pipes.
  • kill-tabs - Kill all Chrome tabs to improve performance, decrease battery usage, and save memory.
  • alex - Catch insensitive, inconsiderate writing.
  • vantage - Distributed, realtime CLI for your live app.
  • pen - Live Markdown preview in the browser from your favorite editor.
  • subdownloader - Subtitle downloader for movies and TV series.
  • dark-mode - Toggle the macOS Dark Mode.
  • iponmap - IP location finder.
  • Jsome - Pretty prints JSON with configurable colors and indentation.
  • itunes-remote - Interactively control iTunes.
  • text-meme - Generate a text meme.
  • mobicon - Mobile app icon generator.
  • mobisplash - Mobile app splash screen generator.
  • diff2html-cli - Pretty git diff to HTML generator.
  • Cash - Cross-platform Unix shell commands in pure JavaScript.
  • vaca - Get a random ASCII 🐮.
  • gh-home - Open the GitHub page of the repo in the current directory.
  • npm-home - Open the npm page of a package.
  • trymodule - Try out npm packages in the terminal.
  • terminal-recorder - Record your terminal usage and export it to interactive HTML.
  • jscpd - Copy/paste detector for source code.
  • atmo - Server-side API mocking.
  • auto-install - Auto installs dependencies as you code.
  • lessmd - Markdown in the terminal.
  • cost-of-modules - Find out which dependencies are slowing you down.
  • localtunnel - Expose your localhost to the world.

Functional programming

  • lodash - Utility library delivering consistency, customization, performance, & extras. A better and faster Underscore.js.
  • immutable - Immutable data collections.
  • mori - Library for using ClojureScript's persistent data structures and supporting API from the comfort of vanilla JavaScript.
  • Ramda - Utility library with a focus on flexible functional composition enabled by automatic currying and reversed argument order. Avoids mutating data.
  • Folktale - Suite of libraries for generic functional programming in JavaScript that allows you to write elegant, modular applications with fewer bugs, and more reuse.
  • underscore-contrib - The brass buckles on Underscore's utility belt.
  • Mout - Utility library with the biggest difference between other existing solutions is that you can choose to load only the modules/functions that you need, no extra overhead.
  • Bacon.js - Functional reactive programming.
  • RxJS - Functional reactive library for transforming, composing, and querying various kinds of data.
  • Lazy.js - Utility library similar to lodash/Underscore but with lazy evaluation, which can translate to superior performance in many cases.
  • Kefir.js - Reactive library with focus on high performance and low memory usage.

HTTP

  • got - Nicer interface to the built-in http module.
  • gh-got - Convenience wrapper for got to interact with the GitHub API.
  • axios - Promise based HTTP client (works in the browser too).
  • request - Simplified HTTP request client.
  • Nock - HTTP mocking and expectations library.
  • spdy - Creates SPDY servers with the same API as the built-in https module.
  • wreck - HTTP Client Utilities.
  • download - Download and extract files effortlessly.
  • http-proxy - HTTP proxy.
  • rocky - Featured, middleware-oriented HTTP proxy with traffic replay and intercept.
  • superagent - HTTP request library.
  • node-fetch - window.fetch for Node.js.
  • flashheart - REST client.
  • http-fake-backend - Build a fake backend by providing the content of JSON files or JavaScript objects through configurable routes.

Debugging / Profiling

  • ironNode - Node.js debugger supporting ES2015 out of the box.
  • node-inspector - Debugger based on Blink Developer Tools.
  • devtool - Run Node.js programs through Chrome Dev Tools.
  • Theseus - JavaScript debugger featuring real-time code coverage, retroactive inspection and asynchronous call tree.
  • longjohn - Long stack traces with configurable call trace length.
  • debug - Tiny debugging utility.
  • jstrace - Dynamic tracing for JavaScript, similar to dtrace, ktap etc.
  • why-is-node-running - Node.js is running but you don't know why?
  • njsTrace - Instrument and trace your code, see all function calls, arguments, return values, as well as the time spent in each function.
  • vstream - Instrumentable streams mix-ins to inspect a pipeline of streams.
  • stackman - Enhance an error stacktrace with code excerpts and other goodies.
  • locus - Starts a REPL at runtime that has access to all variables.
  • bugger - Provides Chrome Devtools bindings to debug programs in Chrome.
  • 0x - Flamegraph profiling.
  • ctrace - Well-formatted and improved trace system calls and signals.
  • leakage - Write memory leak tests.

Logging

  • pino - Extremely fast logger inspired by Bunyan.
  • winston - Multi-transport async logging library.
  • Bunyan - JSON logging library.
  • intel - Logging library (handlers, filters, formatters, console injection).
  • console-log-level - The most simple logger imaginable with support for log levels and custom prefixes.
  • storyboard - End-to-end, hierarchical, real-time, colorful logs and stories.

Command-line utilities

  • chalk - Terminal string styling done right.
  • meow - CLI app helper.
  • minimist - Parse command-line flags.
  • get-stdin - Easier stdin.
  • ora - Elegant terminal spinner.
  • log-update - Log by overwriting the previous output in the terminal. Useful for rendering progress bars, animations, etc.
  • Inquirer.js - Interactive command-line prompt.
  • listr - Terminal task list.
  • conf - Simple config handling for your app or module.
  • update-notifier - Update notifications for your CLI app.
  • ansi-escapes - ANSI escape codes for manipulating the terminal.
  • log-symbols - Colored symbols for various log levels.
  • figures - Unicode symbols with Windows CMD fallbacks.
  • boxen - Create boxes in the terminal.
  • string-width - Get the visual width of a string - the number of columns required to display it.
  • cli-truncate - Truncate a string to a specific width in the terminal.
  • first-run - Check if it's the first time the process is run.
  • vorpal - Interactive CLI apps.
  • blessed - Curses-like library.
  • yn - Parse yes/no like values.
  • cli-table - Pretty unicode tables.
  • drawille - Draw on the terminal with unicode braille characters.
  • sudo-block - Block users from running your app with root permissions.
  • googleauth - Create and load persistent Google authentication tokens for command-line apps.
  • ascii-charts - ASCII bar chart in the terminal.
  • progress - Flexible ascii progress bar.
  • insight - Helps you understand how your tool is being used by anonymously reporting usage metrics to Google Analytics.
  • cli-cursor - Toggle the CLI cursor.
  • columnify - Create text-based columns suitable for console output. Supports cell wrapping.
  • cli-columns - Columnated unicode and ansi-safe text lists.
  • cfonts - Sexy ASCII fonts for the console.
  • multispinner - Multiple, simultaneous, individually controllable CLI spinners.
  • omelette - Shell autocompletion helper.
  • cross-env - Set environment variables cross-platform.
  • shelljs - Portable Unix shell commands.
  • loud-rejection - Make unhandled promise rejections fail loudly instead of the default silent fail.
  • sparkly - Generate sparklines ▁▂▃▅▂▇
  • term-img - Display images in your terminal.
  • yargs - Command-line parser that automatically generates an elegant user-interface.
  • DraftLog - Create multiple updatable log lines. Works just like console.log.
  • Bit - Create, maintain, find and use small modules and components across repositories.

Build tools

  • webpack - Packs modules and assets for the browser.
  • rollup - Next-generation ES2015 module bundler.
  • gulp - Streaming and fast build system that favors code over config.
  • browserify - Browser-side require() the Node.js way.
  • Broccoli - Fast, reliable asset pipeline, supporting constant-time rebuilds and compact build definitions.
  • Brunch - Front-end web app build tool with simple declarative config, fast incremental compilation, and an opinionated workflow.
  • strong-build - Build a node app package and prepare to deploy it as a package to production or use git to commit to a deploy branch.
  • start - Simple tasks runner powered by composable functions and promise chaining.
  • ygor - Promising task runner for when npm run isn't enough and everything else is too much.
  • grunt - Task runner that can perform repetitive tasks like minification, compilation, unit testing, linting, etc.
  • Fly - Modern build system based in co-routines, generators and promises.
  • FuseBox - Fast build system that combines the power of webpack, JSPM and SystemJS, with first-class TypeScript support.
  • pkg - Package your Node.js project into an executable.

Hardware

  • johnny-five - Firmata based Arduino Framework.
  • serialport - Access serial ports for reading and writing.
  • usb - USB library.
  • cylon.js - Next generation robotics framework with support for 26 different platforms.
  • i2c-bus - I2C serial bus access.
  • onoff - GPIO access and interrupt detection.
  • spi-device - SPI serial bus access.
  • pigpio - Fast GPIO, PWM, servo control, state change notification, and interrupt handling on the Raspberry Pi.

Templating

  • marko - HTML-based templating engine that compiles templates to CommonJS modules and supports streaming, async rendering and custom tags.
  • nunjucks - Templating engine with inheritance, asynchronous control, and more (jinja2 inspired).
  • handlebars.js - Superset of Mustache templates which adds powerful features like helpers and more advanced blocks.
  • hogan.js - Twitter's small, fast, phase-separated compiler for Mustache templates.
  • EJS - Simple unopinionated templating language.
  • Pug - High-performance template engine heavily influenced by Haml.

Web frameworks

  • Hapi - Framework for building applications and services.
  • Koa - Framework designed by the team behind Express, which aims to be a smaller, more expressive, and more robust foundation for web applications and APIs.
  • Express - Web application framework, providing a robust set of features for building single and multi-page, and hybrid web applications.
  • Feathers - Microservice framework built in the spirit of Express.
  • LoopBack - Powerful framework for creating REST APIs and easily connecting to backend data sources.
  • Meteor - An ultra-simple, database-everywhere, data-on-the-wire, pure-Javascript web framework. (You might like awesome-meteor)
  • SailsJS - An MVC web framework with a modern twist, supporting WebSockets, streams, and a data-driven API.
  • Restify - Enables you to build correct REST web services.
  • Interfake - Rapid prototyping framework for making mock HTTP APIs, with a Node.js, command-line and HTTP interface.
  • Catberry - Framework with Flux architecture, isomorphic web-components, and progressive rendering.
  • ThinkJS - Framework with ES2015+ support, WebSockets, REST API.
  • ActionHero - Framework for making reusable & scalable APIs for TCP sockets, WebSockets, and HTTP clients.
  • MERN - Easily build production-ready universal apps with MongoDB, Express, React, and webpack.
  • Next.js - Minimalistic framework for server-rendered universal JavaScript web apps.
  • Nuxt.js - Minimalistic framework for server-rendered Vue.js apps.
  • seneca - Toolkit for writing microservices.
  • AdonisJs - A true MVC framework for Node.js built on solid foundations of Dependency Injection and IoC container.
  • Hemera - Write reliable and fault-tolerant microservices with NATS.

Documentation

  • Docco - Documentation generator which produces an HTML document that displays your comments intermingled with your code.
  • JSDoc - API documentation generator similar to JavaDoc or PHPDoc.
  • dox - JavaScript documentation generator using Markdown and JSDoc.
  • jsdox - JSDoc3 to Markdown documentation generator.
  • apiDoc - Inline documentation for RESTful web APIs.
  • documentation.js - API documentation generator with support for ES2015+ and flow annotation.
  • YUIDoc - Generates API documentation from comments in source.
  • ESDoc - Documentation generator targeting ES2015, attaching test code and measuring documentation coverage.

Filesystem

  • del - Delete files/folders using globs.
  • globby - Glob files with support for multiple patterns.
  • cpy - Copy files.
  • rimraf - Recursively delete files like rm -rf.
  • make-dir - Recursively create directories like mkdir -p.
  • graceful-fs - Drop-in replacement for the fs module with various improvements.
  • chokidar - Filesystem watcher which stabilizes events from fs.watch and fs.watchFile as well as using native fsevents on macOS.
  • find-up - Find a file by walking up parent directories.
  • proper-lockfile - Inter-process and inter-machine lockfile utility.
  • load-json-file - Read and parse a JSON file.
  • write-json-file - Stringify and write JSON to a file atomically.
  • fs-write-stream-atomic - Like fs.createWriteStream(), but atomic.
  • filenamify - Convert a string to a valid filename.
  • lnfs - Force create symlinks like ln -fs.
  • istextorbinary - Check if a file is text or binary.
  • fs-jetpack - Completely redesigned file system API for convenience in everyday use.
  • fs-extra - Extra methods for the fs module.
  • pkg-dir - Find the root directory of an npm package.
  • sander - Promise-based replacement for the fs module.
  • filehound - Flexible and fluent interface for searching the file system.

Control flow

  • Promises
    • Bluebird - Promise library with focus on innovative features and performance.
    • pify - Promisify a callback-style function.
    • delay - Delay a promise a specified amount of time.
    • promise-memoize - Memoize promise-returning functions, with expire and prefetch.
    • valvelet - Limit the execution rate of a promise-returning function.
    • p-map - Map over promises concurrently.
    • More…
  • Observables
  • Generators
    • co - The ultimate generator based flow-control goodness.
    • bluebird-co - High performance yield handlers for Bluebird coroutines.
    • iterum - Build generator pipelines using Array-like methods.
  • Streams
    • Highland.js - Manages synchronous and asynchronous code easily, using nothing more than standard JavaScript and Node-like Streams.
  • Callbacks
    • each-async - Async concurrent iterator like forEach.
    • async - Provides straight-forward, powerful functions for working with asynchronicity.
  • Channels
    • js-csp - Communicating sequential processes for JavaScript (like Clojurescript core.async, or Go).
  • Other
    • zone - Provides a way to group and track resources and errors across asynchronous operations.

Streams

  • through2 - Tiny wrapper around streams2 Transform to avoid explicit subclassing noise.
  • from2 - Convenience wrapper for ReadableStream, inspired by through2.
  • get-stream - Get a stream as a string or buffer.
  • into-stream - Convert a buffer/string/array/object into a stream.
  • duplexify - Turn a writeable and readable stream into a single streams2 duplex stream.
  • pumpify - Combine an array of streams into a single duplex stream.
  • peek-stream - Transform stream that lets you peek the first line before deciding how to parse it.
  • binary-split - Newline (or any delimiter) splitter stream.
  • byline - Super-simple line-by-line Stream reader.
  • first-chunk-stream - Transform the first chunk in a stream.
  • pad-stream - Pad each line in a stream.
  • multistream - Combine multiple streams into a single stream.
  • stream-combiner2 - Turn a pipeline into a single stream.
  • readable-stream - Mirror of Streams2 and Streams3 implementations in core.
  • through2-concurrent - Transform object streams concurrently.
  • graphicsmagick-stream - Fast conversion/scaling of images using a pool of long lived GraphicsMagick processes.

Real-time

  • µWebSockets - Highly scalable WebSocket server & client library.
  • Socket.io - Enables real-time bidirectional event-based communication.
  • SockJS - Low latency, full duplex, cross-domain channel browser-server, with WebSockets or without.
  • Faye - Real-time client-server message bus, based on Bayeux protocol.
  • SocketCluster - Scalable HTTP + WebSocket engine which can run on multiple CPU cores.
  • Primus - An abstraction layer for real-time frameworks to prevent module lock-in.
  • Straw - Real-time dataflow framework.
  • deepstream.io - Scalable real-time microservice framework.
  • Kalm - Low-level socket router and middleware framework.
  • MQTT.js - Client for MQTT - Pub-sub based messaging protocol for use on top of TCP/IP.

Image

  • sharp - The fastest module for resizing JPEG, PNG, WebP and TIFF images.
  • image-type - Detect the image type of a Buffer/Uint8Array.
  • gm - GraphicsMagick and ImageMagick wrapper.
  • lwip - Lightweight image processor which does not require ImageMagick.
  • pica - High quality & fast resize (lanczos3) in pure JS. Alternative to canvas drawImage(), when no pixelation allowed.
  • jimp - Image processing in pure JavaScript.
  • is-progressive - Check if a JPEG image is progressive.
  • probe-image-size - Get the size of most image formats without a full download.

Text

  • Underscore.string - Collection of string manipulation utilities.
  • iconv-lite - Convert character encodings.
  • string-length - Get the real length of a string - by correctly counting astral symbols and ignoring ansi escape codes.
  • camelcase - Convert a dash/dot/underscore/space separated string to camelCase: foo-bar → fooBar.
  • escape-string-regexp - Escape RegExp special characters.
  • execall - Find multiple RegExp matches in a string.
  • splice-string - Remove or replace part of a string like Array#splice.
  • indent-string - Indent each line in a string.
  • strip-indent - Strip leading whitespace from every line in a string.
  • detect-indent - Detect the indentation of code.
  • he - HTML entity encoder/decoder.
  • i18n-node - Simple translation module with dynamic JSON storage.
  • babelfish - i18n with very easy syntax for plurals.
  • hanging-indent - Format a string into a hanging-indented paragraph.
  • matcher - Simple wildcard matching.
  • unhomoglyph - Normalize visually similar unicode characters.

Number

  • random-int - Generate a random integer.
  • random-float - Generate a random float.
  • unique-random - Generate random numbers that are consecutively unique.
  • round-to - Round a number to a specific number of decimal places: 1.2341.2.

Math

Date

  • date-fns - Modern date utility.
  • Moment.js - Parse, validate, manipulate, and display dates.
  • Moment Timezone - IANA Time Zone Database + Moment.js.
  • dateformat - Date formatting.
  • tz-format - Format a date with timezone: 2015-11-30T10:40:35+01:00.
  • cctz - Fast parsing, formatting, and timezone conversation for dates.

URL

Data validation

  • joi - Object schema description language and validator for JavaScript objects.
  • is-my-json-valid - JSON Schema validator that uses code generation to be extremely fast.
  • property-validator - Easy property validation for Express.
  • schema-inspector - JSON API sanitization and validation.
  • ajv - The fastest JSON Schema validator. Supports v5 proposals.

Parsing

  • remark - Markdown processor powered by plugins.
  • markdown-it - Markdown parser with 100% CommonMark support, extensions and syntax plugins.
  • parse5 - Fast full-featured spec compliant HTML parser.
  • strip-json-comments - Strip comments from JSON.
  • strip-css-comments - Strip comments from CSS.
  • parse-json - Parse JSON with more helpful errors.
  • URI.js - URL mutation.
  • PostCSS - CSS parser / stringifier.
  • JSONStream - Streaming JSON.parse and stringify.
  • neat-csv - Fast CSV parser. Callback interface for the above.
  • csv-parser - Streaming CSV parser that aims to be faster than everyone else.
  • PEG.js - Simple parser generator that produces fast parsers with excellent error reporting.
  • x-ray - Web scraping utility.
  • nearley - Simple, fast, powerful parsing for JavaScript.
  • binary-extract - Extract a value from a buffer of JSON without parsing the whole thing.
  • json-mask - Tiny language and engine for selecting parts of an object, hiding/masking the rest.
  • Stylecow - Parse, manipulate and convert modern CSS to make it compatible with all browsers. Extensible with plugins.
  • js-yaml - Very fast YAML parser.
  • excel-stream - Streaming Excel spreadsheet to JSON parser.
  • xml2js - XML to JavaScript object converter.
  • Jison - Friendly JavaScript parser generator. It shares genes with Bison, Yacc and family.
  • google-libphonenumber - Parse, format, store and validate phone numbers.
  • ref - Read/write structured binary data in Buffers.
  • xlsx-populate - Read/write Excel XLSX.

Humanize

  • pretty-bytes - Convert bytes to a human readable string: 13371.34 kB.
  • pretty-ms - Convert milliseconds to a human readable string: 133700000015d 11h 23m 20s.
  • ms - Tiny millisecond conversion utility.
  • pretty-error - Errors with less clutter.
  • humanize - Data formatter for human readability.
  • read-art - Extract readable content from any page.

Compression

  • yazl - Zip.
  • yauzl - Unzip.
  • Archiver - Streaming interface for archive generation, supporting ZIP and TAR.
  • pako - High speed zlib port to pure js (deflate, inflate, gzip).
  • tar-stream - Streaming tar parser and generator. Also see tar-fs.
  • decompress - Decompression module with support for tar, tar.gz and zip files out of the box.

Network

  • get-port - Get an available port.
  • ipify - Get your public IP address.
  • getmac - Get the computer MAC address.
  • polo - Zero-config service discovery.
  • DHCP - DHCP client and server.

Database

  • Drivers
  • ODM / ORM
    • Sequelize - Multi-dialect ORM. Supports PostgreSQL, SQLite, MySQL.
    • Bookshelf - ORM for PostgreSQL, MySQL and SQLite3 in the style of Backbone.js.
    • Massive - PostgreSQL data access tool.
    • Mongoose - Elegant MongoDB object modeling.
    • Waterline - Datastore-agnostic tool that dramatically simplifies interaction with one or more databases.
    • Iridium - MongoDB ORM with support for promises, distributed caching, preprocessing, validation and plugins.
    • OpenRecord - ORM for PostgreSQL, MySQL, SQLite3 and RESTful datastores. Similar to ActiveRecord.
    • orm2 - ORM for PostgreSQL, MariaDB, MySQL, Amazon Redshift, SQLite, MongoDB.
    • firenze - Adapter-based ORM for MySQL, Memory, Redis, localStorage and more.
    • pg-promise - PostgreSQL framework for native SQL using promises.
    • Objection.js - Lightweight ORM built on the SQL query builder Knex.
  • Query builder
    • Knex - Query builder for PostgreSQL, MySQL and SQLite3, designed to be flexible, portable, and fun to use.
  • Other
    • NeDB - Embedded persistent database written in JavaScript.
    • Lowdb - Small JavaScript database powered by Lodash.

Testing

  • AVA - Futuristic test runner.
  • Mocha - Feature-rich test framework making asynchronous testing simple and fun.
  • nyc - Code coverage tool built on istanbul that works with subprocesses.
  • tap - TAP test framework.
  • tape - TAP-producing test harness.
  • power-assert - Provides descriptive assertion messages through the standard assert interface.
  • Mochify - TDD with Browserify, Mocha, PhantomJS and WebDriver.
  • trevor - Run tests against multiple versions of Node.js without switching versions manually or pushing to Travis CI.
  • loadtest - Run load tests for your web application, with an API for automation.
  • Sinon.JS - Test spies, stubs and mocks.
  • navit - PhantomJS / SlimerJS wrapper to simplify browser test scripting.
  • nock - HTTP mocking and expectations.
  • intern - Code testing stack.
  • toxy - Hackable HTTP proxy to simulate failure scenarios and network conditions.
  • hook-std - Hook and modify stdout/stderr.
  • testen - Run tests for multiple versions of Node.js locally with NVM.
  • Nightwatch - Automated UI testing framework based on Selenium WebDriver.
  • WebdriverIO - Automated testing based on the WebDriver protocol.
  • Jest - Painless JavaScript testing.
  • TestCafe - Automated browser testing.

Security

  • snyk - CLI and build-time tool to find & fix vulnerable npm dependencies.
  • nsp - CLI tool to identify known vulnerabilities in your project.
  • RegEx-DoS - CLI tool to identify possible regex denial of service (ReDos) vulnerabilities in your project.

Benchmarking

  • Benchmark.js - Benchmarking library that supports high-resolution timers and returns statistically significant results.
  • matcha - Simplistic approach to benchmarking.

Minifiers

Authentication

  • Passport - Simple, unobtrusive authentication.
  • everyauth - Authentication and authorization (password, Facebook, etc) for your Connect and Express apps.
  • passwordless - Token-based authentication middleware for Express allowing authentication without passwords.
  • Lockit - Full featured authentication solution for Express. Supports a variety of databases, predefined routes, email and two-factor authentication.
  • Grant - OAuth middleware for Express, Koa, and Hapi.
  • CloudRail - Unified API for social authentication (Facebook, Twitter, Slack, Instagram, …).

Email

  • Nodemailer - The fastest way to handle email.
  • emailjs - Send text/HTML emails with attachments to any SMTP server.

Job queues

  • kue - Priority job queue backed by Redis.
  • bull - Persistent job and message queue.
  • agenda - Lightweight job scheduling on MongoDB.
  • idoit - Redis-backed job queue engine with advanced job control.
  • node-resque - Redis-backed job queue.

Node.js management

  • n - Node.js version management.
  • nave - Virtual Environments for Node.js.
  • nodeenv - Node.js virtual environment compatible to Python's virtualenv.
  • nvm for Windows - Version management for Windows.

Polyfills

  • Node.js
    • user-info - Node.js 6 os.userInfo() ponyfill.
    • buffer-includes - Node.js 5.3 buffer.includes() ponyfill.
    • deep-strict-equal - Test for deep equality - Node.js assert.deepStrictEqual() algorithm as a standalone module.
  • JavaScript

Natural language processing

  • retext - An extensible natural language system.
  • franc - Detect the language of text.
  • leven - Measure the difference between two strings using the Levenshtein distance algorithm.
  • natural - Natural language facility.

Process management

  • PM2 - Advanced Process Manager.
  • nodemon - Monitor for changes in your app and automatically restart the server.
  • node-mac - Run scripts as a native Mac daemon and log to the console app.
  • node-linux - Run scripts as native system service and log to syslog.
  • node-windows - Run scripts as a native Windows service and log to the Event viewer.
  • forever - Ensures that a given script runs continuously.
  • supervisor - Restart scripts when they crash or restart when a *.js file changes.
  • Phusion Passenger - Friendly process manager that integrates directly into Nginx.
  • naught - Process manager with zero downtime deployment.

Automation

  • robotjs - Desktop Automation: control the mouse, keyboard and read the screen.

AST

  • Acorn - Tiny, fast JavaScript parser.
  • Rocambole - Recursively walk and transform JavaScript AST.

Static site generators

  • Metalsmith - Pluggable static site generator.
  • Wintersmith - Flexible, minimalistic, multi-platform static site generator.
  • Assemble - Static site generator for Node.js, Grunt.js, and Yeoman.
  • DocPad - Static site generator with dynamic abilities and huge plugin ecosystem.
  • Phenomic - Modern static website generator based on the React and Webpack ecosystem.
  • docsify - Markdown documentation site generator with no statically built HTML files.

Content management systems

  • KeystoneJS - CMS and web application platform built on Express and MongoDB.
  • Apostrophe2 - Content management system with an emphasis on intuitive front end content editing and administration built on Express and MongoDB.

Forum

  • nodeBB - Forum platform for the modern web.

Blogging

  • ghost - Simple, powerful publishing platform.
  • Hexo - Fast, simple and powerful blogging framework.

Weird

Miscellaneous

  • execa - Better child_process.
  • cheerio - Fast, flexible, and lean implementation of core jQuery designed specifically for the server.
  • Electron - Build cross platform desktop apps with web technologies. (You might like awesome-electron)
  • opn - Opens stuff like websites, files, executables.
  • hasha - Hashing made simple. Get the hash of a buffer/string/stream/file.
  • dot-prop - Get a property from a nested object using a dot path.
  • onetime - Only run a function once.
  • mem - Memoize functions - an optimization technique used to speed up consecutive function calls by caching the result of calls with identical input.
  • import-fresh - Import a module while bypassing the cache.
  • strip-bom - Strip UTF-8 byte order mark (BOM) from a string/buffer/stream.
  • os-locale - Get the system locale.
  • nan - Makes native add-on development for across Node.js versions easier.
  • ssh2 - SSH2 client and server module.
  • adit - SSH tunneling made simple.
  • import-lazy - Import a module lazily.
  • file-type - Detect the file type of a Buffer.
  • Bottleneck - Rate limiter that makes throttling easy.
  • webworker-threads - Lightweight Web Worker API implementation with native threads.
  • clipboardy - Access the system clipboard (copy/paste).
  • node-pre-gyp - Makes it easy to publish and install Node.js C++ addons from binaries.
  • opencv - Bindings for OpenCV. The defacto computer vision library.
  • dotenv - Load environment variables from .env file.
  • remote-git-tags - Get tags from a remote git repo.
  • semver - semver parser.
  • nar - Create self-contained executable binaries.
  • Faker.js - Generate massive amounts of fake data.
  • nodegit - Native bindings to Git.
  • json-strictify - Safely serialize a value to JSON without data loss or going into an infinite loop.
  • parent-module - Get the path of the parent module.
  • resolve-from - Resolve the path of a module like require.resolve() but from a given path.
  • simplecrawler - Event driven web crawler.
  • jsdom - JavaScript implementation of HTML and the DOM.
  • hypernova - Server-side rendering your JavaScript views.

Resources

Tutorials

  • Nodeschool - Learn Node.js with interactive lessons.
  • The Art of Node - An introduction to Node.js.
  • stream-handbook - How to write Node.js programs with streams.
  • browserify-handbook - The definitive guide for browserify.
  • module-best-practices - Some good practices when writing new npm modules.
  • The Node Way - An entire philosophy of Node.js best practices and guiding principles exists for writing maintainable modules, scalable applications, and code that is actually pleasant to read.
  • You Don't Know Node.js - Introduction to Node.js core features and asynchronous JavaScript.

Discovery

Articles

Newsletters

  • node weekly - Weekly e-mail round-up of Node.js news and articles.
  • nmotw - Node Module Of The Week, weekly dose of hand picked node modules.

Videos

Podcasts

Books

Blogs

  • Node.js blog
  • HowToNode - Teaching how to do various tasks in Node.js as well as teach fundamental concepts that are needed to write effective code.
  • webapplog.com - Blog posts on Node.js and JavaScript from the author of Practical Node.js and Pro Express.js Azat Mardan.

Courses

Cheatsheets

  • Express.js
  • Stream FAQs - Answering common questions about streams, covering pagination, events, and more.

Tools

  • OctoLinker - Chrome extension that linkifies dependencies in package.json, .js, .jsx, .coffee and .md files on GitHub.
  • npm-hub - Chrome extension to display npm dependencies at the bottom of a repo's readme.
  • RunKit - Embed a Node.js environment on any website.
  • RequireBin - Shareable JavaScript programs powered by npm and browserify.

Community

Miscellaneous

License

CC0

To the extent possible under law, Sindre Sorhus has waived all copyright and related or neighboring rights to this work.