/awesome-nodejs

:orange_book:A curated list of astonishing Node.js frameworks, libraries and resources. Inspired by awesome-php and awesome-python.

Apache License 2.0Apache-2.0

Awesome Node.js

A curated list of astonishing Node.js frameworks, libraries and resources. Inspired by awesome-php and awesome-python.

Your pull requests are very welcome! Let's make this the awesomest resource for Node!

Application Servers

Application Server is an environment to run and manage multiple applications.

  • Impress - Impressive multipurpose scalable Application Server optimized for high load API and web applications.
  • Foreman - Implementation of Foreman tool manager for Procfile-based applications. Its aim is to abstract away the details of the Procfile format, and allow you to either run your application directly or export it to some other process management format.

Async Control Flow

Libraries that help you manage asyncronous control flow and avoid callback hell.

  • Callback-based:
    • Async - Utility module which provides straight-forward, powerful functions for working with asynchronous JavaScript.
    • each-async - Async concurrent iterator like forEach.
    • node-seq - Chainable asynchronous flow control for node.js with sequential and parallel primitives and pipeline-style error handling.
  • Promise-based (Promises/A+):
    • Bluebird - Bluebird is a fully featured promise library with focus on innovative features and performance.
    • Q - Full-featured promise library with large API covering any situation you may encounter.
    • RSVP.js - Lightweight, but still compliant, promise library.
    • when.js - Rock solid, battle tested promise library.
  • Fibers-base (node-fibers):
    • asyncawait - Inspired by C# async/await feature, implementation of the same pattern using fibers.
  • Generator-based:
    • Co - Generator based flow-control goodness for nodejs and the browser.
    • suspend - Generator-based control flow that plays nice with callbacks, promises, and thunks.

Authentication and OAuth

Libraries for implementing authentications schemes.

  • everyauth - Authentication and authorization (password, facebook, & more) for your Connect and Express apps.
  • ldapjs - Pure JavaScript, from-scratch framework for implementing LDAP clients and servers.
  • Lockit - Full featured authentication solution for Express.
  • oauth-signature-js - OAuth 1.0a signature generator
  • PassportJS - Simple authentication middleware framework.
  • passwordless - Token-based authentication middleware for Express allowing authentication without passwords.

Build Tools

Libraries for building and task running

  • Browserify - Browserify lets you require('modules') in the browser by bundling up all of your dependencies.
  • Grunt.js - A task runner to ease epetitive tasks like unit testing, compilation and so on.
  • Gulp.js - A streaming build system which use of streams and code-over-configuration.
  • Nodemon - A dev utility that monitor any changes in source and automatically restart server.

Communication

  • BinaryJS - BinaryJS is bidrectional realtime binary data with binary websockets
  • Primus - An abstraction layer for real-time frameworks to prevent module lock-in.
  • Socket.IO - Websocket framework for Node and Javascript.
  • SocketCluster - Scalable HTTP + WebSocket engine which can run on multiple CPU cores.
  • SockJS - Websocket emulation.
  • Straw - Real-time dataflow framework.

Content Management System

  • Calipso - Calipso is a simple CMS, built along similar themes to Drupal and Wordpress.
  • KeystoneJS - Node.js CMS and web application platform built on Express and MongoDB.

Database Drivers

Libraries for connecting and operating databases

  • Node-mongodb-native - Mongo DB Native NodeJS Driver.
  • Node-mysql - A pure node.js JavaScript Client implementing the MySql protocol.
  • Node-redis - Redis Driver, use hideredis for native parser, and checkout then-redis for a Promise-based API.
  • PG - PostgreSQL client for node.js. Pure JavaScript and optional native libpq bindings.
  • RethinkDB - provides the JavaScript driver library for the RethinkDB database server for use either from node or your web-browser.
  • RethinkDBdash - An advanced Node.js driver for RethinkDB with a connection pool, support for streams etc.

Debugging Tools

Tools for debugging Node applications

  • cf-node-debug - Proxy to aid in debugging node running on a PaaS.
  • debug - Tiny debugging utility.
  • jstrace - Dynamic tracing for JavaScript, similar to dtrace, ktap etc.
  • longjohn - Longer stack traces for Node.
  • node-inspector - Node.js debugger based on Blink Developer Tools.
  • Nodev - Tool for easier debugging based on nodemon and node-inspector.
  • stackman - Enhance an error stacktrace with code excerpts and other goodies.
  • Theseus - A new type of JavaScript debugger featuring real-time code coverage, retroactive inspection and asynchronous call tree.
  • TraceGL - Transforms your JavaScript, injecting monitoring code that produces a log of everything that happens.
  • TypesJs - Easy type checking, for Node & browsers.
  • vstream - Instrumentable streams mix-ins to inspect a pipeline of streams.

Documentation

Libraries for generating project documentation.

  • Docco - Docco is a quick-and-dirty documentation generator, written in Literate CoffeeScript.
  • dox - JavaScript documentation generator for node using markdown and jsdoc.
  • Groc - Documentation generation, in the spirit of literate programming.
  • JSdoc - An API documentation generator for JavaScript, with good manual

Environment Management

Libraries for Node version and environment management.

  • n - Node version management.
  • nave - Virtual Environments for Node.
  • nodeenv - Virtual environment for Node.js & integrator with virtualenv.
  • nvm - Node Version Manager (does not require prior installation of node).

Files and MIME Type Manipulation

  • PDFKit - A JavaScript PDF generation library for Node and browser.

Forms

Libraries for deal with forms and form data

Integrated Development Environments

IDEs and Editors for development

  • Atom - The hackable editor by GitHub
  • Brackets - An open source code editor for the web, written in JavaScript, HTML and CSS.
  • Cloud Commander - Web file manager. Has editor and console. Allows you to develop web applications, sites etc.
  • Cloud9 - Web editor with collaboration tools.
  • CmdEr - Not really and IDE, but a great "lovely console emulator package for Windows"
  • Enide - Node Eclipse IDE with Nodeclipse plugin.
  • InteliJIDEA - Fast Node plugin for InteliJ.
  • Notepad++ - Notepad++ is a free source code editor and Notepad replacement that supports several languages.
  • Visual Studio - With Node.js Tools for Visual Studio (Supports editing, IntelliSense, profiling, npm, TypeScript, debugging locally and remotely on Windows/MacOS/Linux)
  • Webstorm - "Create great websites and applications in a great IDE. The best JavaScript IDE and HTML editor is at your service."

Logging

Tools for generating and working with log files.

  • Bunyan - A simple and fast JSON logging module for node.js services.
  • caterpillar - A logging system that can log and pipe the output off to different locations.
  • intel - A comprehensive logging library (handlers, filters, formatters, console injection).
  • Log.io - Real time logging facility on the browser.
  • tracer - A powerful and customizable logging library for node.js.
  • winston - A multi-transport async logging library.

ORM

Libraries that implement Object-Relational Mapping or datamapping techniques.

  • Bookshelf - A simple ORM for PostgreSQL, MySQL and SQLite3 built on top of Knex.js.
  • Mongoose - Almost an ORM for mongodb.
  • Node-orm2 - Another Relational Object Mapper.
  • Sequelize - Sequelize library provides easy access to MySQL, MariaDB, SQLite or PostgreSQL databases.
  • Waterline - Datastore-agnostic tool that dramatically simplifies interaction with one or more databases.

Web Frameworks

Web development frameworks.

  • Express - A minimal and flexible node.js web application framework.
  • Flatiron - An adaptable framework for building modern web applications.
  • Koa - A framework which aims to be a smaller, more expressive, and more robust foundation for web applications.
  • Totaljs - Friendly responsive design web application framework for node.
  • Meteor - A platform that has strong features such as live page update, sync and hopt code pushes.
  • Hapi - A rich framework for building applications and services.
  • Derby - MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers.
  • Derby-awesome - A collection of awesome derby components

Libraries for package and dependency management.

  • Duo - A next-generation package manager for the front-end.
  • npm - Default package manager. Installs, publishes and manages node programs.

Rate Limiting

Libraries that help restrict the frequency of certain actions.

  • Bottleneck - A powerful rate limiter that makes throttling easy.

RESTful API

Libraries for developing RESTful APIs.

  • Heimdall - REST API Guardian for Express.
  • Node-restify - A node.js module built specifically to build correct REST web services.
  • Sails - MVC framework which generates a RESTful JSON API.

Science

Things some awesome crazy people are doing!

  • BitcoinJS - Clean, readable, proven Bitcoin library.
  • Breach - Modular and hackable browser written in JavaScript.
  • 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.
  • js-git - JavaScript implementation of Git.
  • NodeOS - The first operating system powered by npm.
  • PDFKit - PDF generation library.
  • peercast - Stream a torrent video to Chromecast.
  • peerflix - Streaming torrent client.
  • peerwiki - All of Wikipedia on BitTorrent.
  • turf - Modular geospatial processing and analysis engine.
  • webtorrent - Streaming torrent client for Node.js and the browser.

Templating

Libraries and tools for templating and lexing.

  • ECT - "Fastest JavaScript template engine with embedded CoffeeScript syntax" as they say (benchmark proof).
  • handlebars.js - A 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.
  • Jade - Handful node template engine.
  • nunjucks - A powerful templating engine with inheritance, asynchronous control, and more (jinja2 inspired).
  • Swig - A simple, powerful, and extendable JavaScript Template Engine.

Testing

Testing frameworks.

  • chai - BDD / TDD assertion framework for node.js and the browser that can be paired with any testing framework.
  • Concrete - Continuous integration server.
  • Expresso - TDD framework for Node.
  • Jasmine - Simple Behavioral tests for Node and Javascript.
  • Jezebel - A REPL and continuous test runner for Node.js Jasmine tests.
  • mocha - Mocha is a feature-rich JavaScript test framework running on node.js and the browser, making asynchronous testing simple and fun.
  • Mochify - TDD with Browserify, Mocha, PhantomJS and WebDriver.
  • NodeUnit - Simple syntax unit test tool.
  • ready.js - Continuous javascript integration tool.
  • should.js - BDD style assertions for node.js -- test framework agnostic.
  • sinon - Standalone test spies, stubs and mocks for JavaScript.
  • tape - tap-producing test harness for node and browsers.

Tools for building CLIs

Libraries and tools which support you by building Command-Line Interfaces.

  • blessed - A curses-like library for node.js.
  • chalk - Terminal string styling done right
  • cli-spinner - A simple spinner for node cli.
  • cli-table - Pretty unicode tables for the CLI with Node.JS
  • cli - Rapidly build command line apps with node.
  • colors.js - get colors in your node.js console like what.
  • commander.js - The complete solution for node.js command-line interfaces, inspired by Ruby's commander.
  • configstore - Easily load and persist config without having to think about where and how.
  • Inquirer - A collection of common interactive command line user interfaces. Ask questions, parsing, validating answers, managing hierarchical prompts and providing error feedback.
  • log-symbols - Colored symbols for various log levels.https://github.com/sindresorhus/log-symbols
  • minimist - Simple module for command line arguments parsing.
  • read - For reading user input from stdin.
  • terminal-menu - retro ansi terminal menus for serious 80s technicolor business.
  • text-table - generate borderless text table strings suitable for printing to stdout.
  • vorpal - Node's framework for interactive CLIs.
  • update-notifier - Update notifications for your CLI app

Web Frameworks

Web development frameworks.

  • Derby - MVC framework making it easy to write realtime, collaborative applications that run in both Node.js and browsers.
  • Express - A minimal and flexible node.js web application framework.
  • Flatiron - An adaptable framework for building modern web applications.
  • Hapi - A rich framework for building applications and services.
  • HuntJS - event driven framework for building clustered webservers, telnet and background applications with mongoose or sequilize as data storage.
  • Interfake - Rapid prototyping framework for making mock HTTP APIs, with a Node, command-line and HTTP interface.
  • Koa - A framework which aims to be a smaller, more expressive, and more robust foundation for web applications.
  • LoopBack - Powerful Node.js framework for creating APIs and easily connecting to backend data sources.
  • MEAN.JS - Full-Stack JavaScript Using MongoDB, Express, AngularJS, and Node.js.
  • Meteor - A platform that has strong features such as live page update, sync and hopt code pushes.
  • PEAN.JS - Full-Stack JavaScript Using PostgreSQL, Express, AngularJS, and Node.js.
  • Restify - A node framework built specifically to enable you to build correct REST web services.
  • SailsJS - An MVC web framework with a modern twist, supporting WebSockets, streams, and a data-driven API.
  • Totaljs - Friendly responsive design web application framework for node.
  • Catberry - Framework with Flux architecture, isomorphic web-components and progressive rendering.

Content Management System

  • Calipso - Calipso is a simple CMS, built along similar themes to Drupal and Wordpress.
  • KeystoneJS - Node.js CMS and web application platform built on Express and MongoDB.

Miscellaneous

Miscellaneous Tools which doesn't fit to the other categories.

  • acpiclient - NodeJS wrapper around acpi to get computer temperature, cooling, battery and power status.
  • agenda - Lightweight job scheduling on MongoDB.
  • atom-shell - Cross-platform desktop application shell.
  • cheerio - Fast, flexible, and lean implementation of core jQuery designed specifically for the server.
  • common-errors - Common error classes and utility functions.
  • Faker.js - Generate massive amounts of fake data.
  • Github Linker - Chrome extension that linkifies dependencies in package.json on GitHub.
  • lazy-req - Require modules lazily.
  • multiline - Multiline strings in JavaScript.
  • nan - A header file filled with macro and utility goodness for making add-on development for across Node.js versions easier.
  • Node-Bell - Real-time anomalies detection for periodic time series.
  • 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.
  • opn - Opens stuff like websites, files, executables.
  • require-uncached - Require a module bypassing the cache.
  • semver - semver parser.
  • shelljs - Portable Unix shell commands.
  • ssh2 - An SSH2 client module.
  • stringify-object - Stringify an object/array like JSON.stringify just without all the double-quotes.
  • strip-bom - Strip UTF-8 byte order mark (BOM) from a string/buffer/stream.
  • webworker-threads - Lightweight Web Worker API implementation with native threads.

Tutorials

Books

Blogs

  • HowToNode - Teaching how to do various tasks in Node.js as well as teach fundamental concepts that are needed to write effective code.
  • Node.js blog

Other Awesome Lists

Other amazingly awesome lists can be found in the awesome-awesome and awesome-awesomeness projects.

Contributing

Chinese awesome-nodejs version by @ueqt.

Your contributions are always welcome!