├── .editorconfig ├── .gitattributes ├── .github ├── funding.yml └── pull_request_template.md ├── code-of-conduct.md ├── contributing.md ├── media ├── logo.ai └── logo.svg └── readme.md /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = tab 5 | end_of_line = lf 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /.github/funding.yml: -------------------------------------------------------------------------------- 1 | github: sindresorhus 2 | open_collective: sindresorhus 3 | patreon: sindresorhus 4 | custom: https://sindresorhus.com/donate 5 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | **By submitting this pull request, I promise I have read the [contribution guidelines](https://github.com/sindresorhus/awesome-nodejs/blob/master/contributing.md) twice and ensured my submission follows it. I realize not doing so wastes the maintainers' time that they could have spent making the world better. 🖖** 2 | 3 | ⬆⬆⬆⬆⬆⬆⬆⬆⬆⬆ 4 | -------------------------------------------------------------------------------- /code-of-conduct.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, gender identity and expression, level of experience, 9 | nationality, personal appearance, race, religion, or sexual identity and 10 | orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at sindresorhus@gmail.com. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at [http://contributor-covenant.org/version/1/4][version] 72 | 73 | [homepage]: http://contributor-covenant.org 74 | [version]: http://contributor-covenant.org/version/1/4/ 75 | -------------------------------------------------------------------------------- /contributing.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | Please note that this project is released with a [Contributor Code of Conduct](code-of-conduct.md). By participating in this project you agree to abide by its terms. 4 | 5 | --- 6 | 7 | Ensure your pull request adheres to the following guidelines: 8 | 9 | - **If you just created something, wait at least 30 days before submitting.** This is to give it some time to mature and ensure it's not just a publish-and-forget type of project. 10 | - Keep in mind that the list is very mature by now, so the bar of getting something accepted is high. Only submit something unique and generally useful. The world (and this list) doesn't need yet another ORM or framework. For CLI tools, the bar is especially high, and unless it's something very awesome, I would suggest submitting to [awesome-cli-apps](https://github.com/aharris88/awesome-cli-apps) instead. 11 | - If you submit a project that is similar to an existing project in the list, argue how it's better. 12 | - Search previous suggestions before making a new one, as yours may be a duplicate. 13 | - Suggested packages should be tested and documented. 14 | - Make an individual pull request for each suggestion. 15 | - Use the following format: `[package](link) - Description.` 16 | - Additions should be added to the bottom of the relevant category. 17 | - Link to the GitHub repo, not npmjs.com or its website. 18 | - Keep descriptions short and simple, but descriptive. 19 | - Don't mention `Node.js` in the description as it's implied. 20 | - Start the description with a capital and end with a full stop/period. 21 | - Don't start the description with `A` or `An`. 22 | - Check your spelling and grammar. 23 | - Make sure your text editor is set to remove trailing whitespace. 24 | - The pull request should have a useful title and include a link to the package and why it should be included. 25 | - New categories or improvements to the existing categorization are welcome, but should be done in a separate pull request. 26 | 27 | Thank you for your suggestion! 28 | 29 | ### Updating your PR 30 | 31 | A lot of times, making a PR adhere to the standards above can be difficult. If the maintainers notice anything that we'd like changed, we'll ask you to edit your PR before we merge it. If you're not sure how to do that, [here is a guide](https://github.com/RichardLitt/knowledge/blob/master/github/amending-a-commit-guide.md) on the different ways you can update your PR so that we can merge it. 32 | -------------------------------------------------------------------------------- /media/logo.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/santiq/awesome-nodejs/0d63c3206617a1c30d689c34bc497dfe98f28730/media/logo.ai -------------------------------------------------------------------------------- /media/logo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 |
16 | 17 | 18 | ## Contents 19 | 20 | - [Packages](#packages) 21 | - [Mad science](#mad-science) 22 | - [Command-line apps](#command-line-apps) 23 | - [Functional programming](#functional-programming) 24 | - [HTTP](#http) 25 | - [Debugging / Profiling](#debugging--profiling) 26 | - [Logging](#logging) 27 | - [Command-line utilities](#command-line-utilities) 28 | - [Build tools](#build-tools) 29 | - [Hardware](#hardware) 30 | - [Templating](#templating) 31 | - [Web frameworks](#web-frameworks) 32 | - [Documentation](#documentation) 33 | - [Filesystem](#filesystem) 34 | - [Control flow](#control-flow) 35 | - [Streams](#streams) 36 | - [Real-time](#real-time) 37 | - [Image](#image) 38 | - [Text](#text) 39 | - [Number](#number) 40 | - [Math](#math) 41 | - [Date](#date) 42 | - [URL](#url) 43 | - [Data validation](#data-validation) 44 | - [Parsing](#parsing) 45 | - [Humanize](#humanize) 46 | - [Compression](#compression) 47 | - [Network](#network) 48 | - [Database](#database) 49 | - [Testing](#testing) 50 | - [Security](#security) 51 | - [Benchmarking](#benchmarking) 52 | - [Minifiers](#minifiers) 53 | - [Authentication](#authentication) 54 | - [Authorization](#authorization) 55 | - [Email](#email) 56 | - [Job queues](#job-queues) 57 | - [Node.js management](#nodejs-management) 58 | - [Natural language processing](#natural-language-processing) 59 | - [Process management](#process-management) 60 | - [Automation](#automation) 61 | - [AST](#ast) 62 | - [Static site generators](#static-site-generators) 63 | - [Content management systems](#content-management-systems) 64 | - [Forum](#forum) 65 | - [Blogging](#blogging) 66 | - [Weird](#weird) 67 | - [Serialization](#serialization) 68 | - [Miscellaneous](#miscellaneous) 69 | - [Resources](#resources) 70 | - [Tutorials](#tutorials) 71 | - [Discovery](#discovery) 72 | - [Articles](#articles) 73 | - [Newsletters](#newsletters) 74 | - [Videos](#videos) 75 | - [Books](#books) 76 | - [Blogs](#blogs) 77 | - [Courses](#courses) 78 | - [Cheatsheets](#cheatsheets) 79 | - [Tools](#tools) 80 | - [Community](#community) 81 | - [Miscellaneous](#miscellaneous) 82 | 83 | 84 | ## Packages 85 | 86 | ### Mad science 87 | 88 | - [webtorrent](https://github.com/feross/webtorrent) - Streaming torrent client for Node.js and the browser. 89 | - [peerflix](https://github.com/mafintosh/peerflix) - Streaming torrent client. 90 | - [dat](https://github.com/datproject/dat-node) - Real-time replication and versioning for data sets. 91 | - [ipfs](https://github.com/ipfs/js-ipfs) - Distributed file system that seeks to connect all computing devices with the same system of files. 92 | - [stackgl](https://github.com/stackgl) - Open software ecosystem for WebGL, built on top of browserify and npm. 93 | - [peerwiki](https://github.com/mafintosh/peerwiki) - All of Wikipedia on BitTorrent. 94 | - [peercast](https://github.com/mafintosh/peercast) - Stream a torrent video to Chromecast. 95 | - [BitcoinJS](https://github.com/bitcoinjs/bitcoinjs-lib) - Clean, readable, proven Bitcoin library. 96 | - [Bitcore](https://github.com/bitpay/bitcore) - Pure and powerful Bitcoin library. 97 | - [PDFKit](https://github.com/devongovett/pdfkit) - PDF generation library. 98 | - [turf](https://github.com/Turfjs/turf) - Modular geospatial processing and analysis engine. 99 | - [webcat](https://github.com/mafintosh/webcat) - p2p pipe across the web using WebRTC that uses your GitHub private/public key for authentication. 100 | - [NodeOS](https://github.com/NodeOS/NodeOS) - The first operating system powered by npm. 101 | - [YodaOS](https://github.com/yodaos-project/yodaos) - AI operating system. 102 | - [Brain.js](https://github.com/BrainJS/brain.js) - Machine-learning framework. 103 | - [Cytoscape.js](https://github.com/cytoscape/cytoscape.js) - Graph theory (a.k.a. network) modeling and analysis. 104 | - [Kadence](https://gitlab.com/deadcanaries/kadence) - Kademlia distributed hash table. 105 | - [seedshot](https://github.com/twobucks/seedshot) - Temporary P2P screenshot sharing from your browser. 106 | - [js-git](https://github.com/creationix/js-git) - JavaScript implementation of Git. 107 | - [skale](https://github.com/skale-me/skale-engine) - High performance distributed data processing engine. 108 | - [xlsx](https://github.com/sheetjs/js-xlsx) - Pure JS Excel spreadsheet reader and writer. 109 | - [isomorphic-git](https://github.com/isomorphic-git/isomorphic-git) - Pure JavaScript implementation of Git. 110 | 111 | 112 | ### Command-line apps 113 | 114 | - [np](https://github.com/sindresorhus/np) - Better `npm publish`. 115 | - [npm-name](https://github.com/sindresorhus/npm-name) - Check a package name's availability on npm. 116 | - [gh-home](https://github.com/sindresorhus/gh-home) - Open the GitHub page of the repo in the current directory. 117 | - [npm-home](https://github.com/sindresorhus/npm-home) - Open the npm page of a package. 118 | - [trash](https://github.com/sindresorhus/trash) - Safer alternative to `rm`. 119 | - [speed-test](https://github.com/sindresorhus/speed-test) - Test your internet connection speed and ping. 120 | - [emoj](https://github.com/sindresorhus/emoj) - Find relevant emoji from text on the command-line. 121 | - [pageres](https://github.com/sindresorhus/pageres) - Capture website screenshots. 122 | - [cpy](https://github.com/sindresorhus/cpy) - Copy files. 123 | - [vtop](https://github.com/MrRio/vtop) - More better top, with nice charts. 124 | - [empty-trash](https://github.com/sindresorhus/empty-trash) - Empty the trash. 125 | - [is-up](https://github.com/sindresorhus/is-up) - Check whether a website is up or down. 126 | - [is-online](https://github.com/sindresorhus/is-online) - Check if the internet connection is up. 127 | - [public-ip](https://github.com/sindresorhus/public-ip) - Get your public IP address. 128 | - [clipboard-cli](https://github.com/sindresorhus/clipboard-cli) - Copy & paste on the terminal. 129 | - [XO](https://github.com/xojs/xo) - Enforce strict code style using the JavaScript happiness style. 130 | - [Standard](https://github.com/feross/standard) - JavaScript Standard Style — One style to rule them all. 131 | - [ESLint](https://github.com/eslint/eslint) - The pluggable linting utility for JavaScript. 132 | - [dev-time](https://github.com/samverschueren/dev-time-cli) - Get the current local time of a GitHub user. 133 | - [David](https://github.com/alanshaw/david) - Tells you when your package npm dependencies are out of date. 134 | - [http-server](https://github.com/indexzero/http-server) - Simple, zero-config command-line HTTP server. 135 | - [Live Server](https://github.com/tapio/live-server) - Development HTTP-server with livereload capability. 136 | - [bcat](https://github.com/kessler/node-bcat) - Pipe command output to web browsers. 137 | - [normit](https://github.com/pawurb/normit) - Google Translate with speech synthesis in your terminal. 138 | - [fkill](https://github.com/sindresorhus/fkill-cli) - Fabulously kill processes. Cross-platform. 139 | - [pjs](https://github.com/danielstjules/pjs) - Pipeable JavaScript. Quickly filter, map, and reduce from the terminal. 140 | - [license-checker](https://github.com/davglass/license-checker) - Check licenses of your app's dependencies. 141 | - [browser-run](https://github.com/juliangruber/browser-run) - Easily run code in a browser environment. 142 | - [tmpin](https://github.com/sindresorhus/tmpin) - Adds stdin support to any CLI app that accepts file input. 143 | - [wifi-password](https://github.com/kevva/wifi-password-cli) - Get the current wifi password. 144 | - [wallpaper](https://github.com/sindresorhus/wallpaper) - Change the desktop wallpaper. 145 | - [brightness](https://github.com/kevva/brightness-cli) - Change the screen brightness. 146 | - [torrent](https://github.com/maxogden/torrent) - Download torrents. 147 | - [kill-tabs](https://github.com/sindresorhus/kill-tabs) - Kill all Chrome tabs to improve performance, decrease battery usage, and save memory. 148 | - [alex](https://github.com/wooorm/alex) - Catch insensitive, inconsiderate writing. 149 | - [pen](https://github.com/noraesae/pen) - Live Markdown preview in the browser from your favorite editor. 150 | - [subdownloader](https://github.com/beatfreaker/subdownloader) - Subtitle downloader for movies and TV series. 151 | - [dark-mode](https://github.com/sindresorhus/dark-mode) - Toggle the macOS Dark Mode. 152 | - [iponmap](https://github.com/nogizhopaboroda/iponmap) - IP location finder. 153 | - [Jsome](https://github.com/Javascipt/Jsome) - Pretty prints JSON with configurable colors and indentation. 154 | - [itunes-remote](https://github.com/mischah/itunes-remote) - Interactively control iTunes. 155 | - [mobicon](https://github.com/samverschueren/mobicon-cli) - Mobile app icon generator. 156 | - [mobisplash](https://github.com/samverschueren/mobisplash-cli) - Mobile app splash screen generator. 157 | - [diff2html-cli](https://github.com/rtfpessoa/diff2html-cli) - Pretty git diff to HTML generator. 158 | - [Cash](https://github.com/dthree/cash) - Cross-platform Unix shell commands in pure JavaScript. 159 | - [trymodule](https://github.com/VictorBjelkholm/trymodule) - Try out npm packages in the terminal. 160 | - [jscpd](https://github.com/kucherenko/jscpd) - Copy/paste detector for source code. 161 | - [atmo](https://github.com/Raathigesh/Atmo) - Server-side API mocking. 162 | - [auto-install](https://github.com/siddharthkp/auto-install) - Auto installs dependencies as you code. 163 | - [lessmd](https://github.com/linuxenko/lessmd) - Markdown in the terminal. 164 | - [cost-of-modules](https://github.com/siddharthkp/cost-of-modules) - Find out which dependencies are slowing you down. 165 | - [localtunnel](https://github.com/localtunnel/localtunnel) - Expose your localhost to the world. 166 | - [svg-term-cli](https://github.com/marionebl/svg-term-cli) - Share terminal sessions via SVG. 167 | - [gtop](https://github.com/aksakalli/gtop) - System monitoring dashboard for the terminal. 168 | - [themer](https://github.com/mjswensen/themer) - Generate themes for your editor, terminal, wallpaper, Slack, and more. 169 | - [carbon-now-cli](https://github.com/mixn/carbon-now-cli) - Beautiful images of your code — from right inside your terminal. 170 | - [cash-cli](https://github.com/xxczaki/cash-cli) - Convert between 170 currencies. 171 | - [taskbook](https://github.com/klauscfhq/taskbook) - Tasks, boards & notes for the command-line habitat. 172 | - [discharge](https://github.com/brandonweiss/discharge) - Easily deploy static websites to Amazon S3. 173 | 174 | 175 | ### Functional programming 176 | 177 | - [lodash](https://github.com/lodash/lodash) - Utility library delivering consistency, customization, performance, & extras. A better and faster Underscore.js. 178 | - [immutable](https://github.com/facebook/immutable-js) - Immutable data collections. 179 | - [Ramda](https://github.com/ramda/ramda) - Utility library with a focus on flexible functional composition enabled by automatic currying and reversed argument order. Avoids mutating data. 180 | - [Folktale](https://github.com/origamitower/folktale) - Suite of libraries for generic functional programming in JavaScript that allows you to write elegant, modular applications with fewer bugs, and more reuse. 181 | - [Mout](https://github.com/mout/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. 182 | - [Bacon.js](https://github.com/baconjs/bacon.js) - Functional reactive programming. 183 | - [RxJS](https://github.com/reactivex/rxjs) - Functional reactive library for transforming, composing, and querying various kinds of data. 184 | - [Lazy.js](https://github.com/dtao/lazy.js) - Utility library similar to lodash/Underscore but with lazy evaluation, which can translate to superior performance in many cases. 185 | - [Kefir.js](https://github.com/kefirjs/kefir) - Reactive library with focus on high performance and low memory usage. 186 | 187 | 188 | ### HTTP 189 | 190 | - [got](https://github.com/sindresorhus/got) - Nicer interface to the built-in `http` module. 191 | - [gh-got](https://github.com/sindresorhus/gh-got) - Convenience wrapper for `got` to interact with the GitHub API. 192 | - [axios](https://github.com/mzabriskie/axios) - Promise based HTTP client (works in the browser too). 193 | - [request](https://github.com/request/request) - Simplified HTTP request client. 194 | - [wreck](https://github.com/hapijs/wreck) - HTTP Client Utilities. 195 | - [download](https://github.com/kevva/download) - Download and extract files effortlessly. 196 | - [http-proxy](https://github.com/nodejitsu/node-http-proxy) - HTTP proxy. 197 | - [superagent](https://github.com/visionmedia/superagent) - HTTP request library. 198 | - [node-fetch](https://github.com/bitinn/node-fetch) - `window.fetch` for Node.js. 199 | - [flashheart](https://github.com/bbc/flashheart) - REST client. 200 | - [http-fake-backend](https://github.com/micromata/http-fake-backend) - Build a fake backend by providing the content of JSON files or JavaScript objects through configurable routes. 201 | - [cacheable-request](https://github.com/lukechilds/cacheable-request) - Wrap native HTTP requests with RFC compliant cache support. 202 | - [gotql](https://github.com/khaosdoctor/gotql) - GraphQL request library built on [got](https://github.com/sindresorhus/got). 203 | 204 | 205 | ### Debugging / Profiling 206 | 207 | - [ndb](https://github.com/GoogleChromeLabs/ndb) - Improved debugging experience, enabled by Chrome DevTools. 208 | - [ironNode](https://github.com/s-a/iron-node) - Node.js debugger supporting ES2015 out of the box. 209 | - [node-inspector](https://github.com/node-inspector/node-inspector) - Debugger based on Blink Developer Tools. 210 | - [debug](https://github.com/visionmedia/debug) - Tiny debugging utility. 211 | - [why-is-node-running](https://github.com/mafintosh/why-is-node-running) - Node.js is running but you don't know why? 212 | - [njsTrace](https://github.com/valyouw/njstrace) - Instrument and trace your code, see all function calls, arguments, return values, as well as the time spent in each function. 213 | - [vstream](https://github.com/joyent/node-vstream) - Instrumentable streams mix-ins to inspect a pipeline of streams. 214 | - [stackman](https://github.com/watson/stackman) - Enhance an error stacktrace with code excerpts and other goodies. 215 | - [locus](https://github.com/alidavut/locus) - Starts a REPL at runtime that has access to all variables. 216 | - [0x](https://github.com/davidmarkclements/0x) - Flamegraph profiling. 217 | - [ctrace](https://github.com/automation-stack/ctrace) - Well-formatted and improved trace system calls and signals. 218 | - [leakage](https://github.com/andywer/leakage) - Write memory leak tests. 219 | - [llnode](https://github.com/nodejs/llnode) - Post-mortem analysis tool which allows you to inspect objects and get insights from a crashed Node.js process. 220 | 221 | 222 | ### Logging 223 | 224 | - [pino](https://github.com/pinojs/pino) - Extremely fast logger inspired by Bunyan. 225 | - [winston](https://github.com/winstonjs/winston) - Multi-transport async logging library. 226 | - [console-log-level](https://github.com/watson/console-log-level) - The most simple logger imaginable with support for log levels and custom prefixes. 227 | - [storyboard](https://github.com/guigrpa/storyboard) - End-to-end, hierarchical, real-time, colorful logs and stories. 228 | - [signale](https://github.com/klauscfhq/signale) - Hackable console logger with beautiful output. 229 | 230 | 231 | ### Command-line utilities 232 | 233 | - [chalk](https://github.com/chalk/chalk) - Terminal string styling done right. 234 | - [meow](https://github.com/sindresorhus/meow) - CLI app helper. 235 | - [yargs](https://github.com/yargs/yargs) - Command-line parser that automatically generates an elegant user-interface. 236 | - [ora](https://github.com/sindresorhus/ora) - Elegant terminal spinner. 237 | - [get-stdin](https://github.com/sindresorhus/get-stdin) - Easier stdin. 238 | - [log-update](https://github.com/sindresorhus/log-update) - Log by overwriting the previous output in the terminal. Useful for rendering progress bars, animations, etc. 239 | - [Ink](https://github.com/vadimdemedes/ink) - React for interactive command-line apps. 240 | - [listr](https://github.com/samverschueren/listr) - Terminal task list. 241 | - [conf](https://github.com/sindresorhus/conf) - Simple config handling for your app or module. 242 | - [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal. 243 | - [log-symbols](https://github.com/sindresorhus/log-symbols) - Colored symbols for various log levels. 244 | - [figures](https://github.com/sindresorhus/figures) - Unicode symbols with Windows CMD fallbacks. 245 | - [boxen](https://github.com/sindresorhus/boxen) - Create boxes in the terminal. 246 | - [terminal-link](https://github.com/sindresorhus/terminal-link) - Create clickable links in the terminal. 247 | - [terminal-image](https://github.com/sindresorhus/terminal-image) - Display images in the terminal. 248 | - [string-width](https://github.com/sindresorhus/string-width) - Get the visual width of a string - the number of columns required to display it. 249 | - [cli-truncate](https://github.com/sindresorhus/cli-truncate) - Truncate a string to a specific width in the terminal. 250 | - [first-run](https://github.com/sindresorhus/first-run) - Check if it's the first time the process is run. 251 | - [blessed](https://github.com/chjj/blessed) - Curses-like library. 252 | - [Inquirer.js](https://github.com/SBoudrias/Inquirer.js) - Interactive command-line prompt. 253 | - [yn](https://github.com/sindresorhus/yn) - Parse yes/no like values. 254 | - [cli-table3](https://github.com/cli-table/cli-table3) - Pretty unicode tables. 255 | - [drawille](https://github.com/madbence/node-drawille) - Draw on the terminal with unicode braille characters. 256 | - [update-notifier](https://github.com/yeoman/update-notifier) - Update notifications for your CLI app. 257 | - [ascii-charts](https://github.com/jstrace/chart) - ASCII bar chart in the terminal. 258 | - [progress](https://github.com/tj/node-progress) - Flexible ascii progress bar. 259 | - [insight](https://github.com/yeoman/insight) - Helps you understand how your tool is being used by anonymously reporting usage metrics to Google Analytics. 260 | - [cli-cursor](https://github.com/sindresorhus/cli-cursor) - Toggle the CLI cursor. 261 | - [columnify](https://github.com/timoxley/columnify) - Create text-based columns suitable for console output. Supports cell wrapping. 262 | - [cli-columns](https://github.com/shannonmoeller/cli-columns) - Columnated unicode and ansi-safe text lists. 263 | - [cfonts](https://github.com/dominikwilkowski/cfonts) - Sexy ASCII fonts for the console. 264 | - [multispinner](https://github.com/codekirei/node-multispinner) - Multiple, simultaneous, individually controllable CLI spinners. 265 | - [omelette](https://github.com/f/omelette) - Shell autocompletion helper. 266 | - [cross-env](https://github.com/kentcdodds/cross-env) - Set environment variables cross-platform. 267 | - [shelljs](https://github.com/shelljs/shelljs) - Portable Unix shell commands. 268 | - [sudo-block](https://github.com/sindresorhus/sudo-block) - Block users from running your app with root permissions. 269 | - [loud-rejection](https://github.com/sindresorhus/loud-rejection) - Make unhandled promise rejections fail loudly instead of the default silent fail. 270 | - [sparkly](https://github.com/sindresorhus/sparkly) - Generate sparklines `▁▂▃▅▂▇`. 271 | - [Bit](https://github.com/teambit/bit) - Create, maintain, find and use small modules and components across repositories. 272 | - [gradient-string](https://github.com/bokub/gradient-string) - Beautiful color gradients in terminal output. 273 | - [oclif](https://github.com/oclif/oclif) - CLI framework complete with parser, automatic documentation, testing, and plugins. 274 | - [term-size](https://github.com/sindresorhus/term-size) - Reliably get the terminal window size. 275 | - [Cliffy](https://github.com/drew-y/cliffy) - Framework for interactive CLIs. 276 | 277 | 278 | ### Build tools 279 | 280 | - [parcel](https://github.com/parcel-bundler/parcel) - Blazing fast, zero config web app bundler. 281 | - [webpack](https://github.com/webpack/webpack) - Packs modules and assets for the browser. 282 | - [rollup](https://github.com/rollup/rollup) - Next-generation ES2015 module bundler. 283 | - [gulp](https://github.com/gulpjs/gulp) - Streaming and fast build system that favors code over config. 284 | - [Broccoli](https://github.com/broccolijs/broccoli) - Fast, reliable asset pipeline, supporting constant-time rebuilds and compact build definitions. 285 | - [Brunch](https://github.com/brunch/brunch) - Front-end web app build tool with simple declarative config, fast incremental compilation, and an opinionated workflow. 286 | - [Start](https://github.com/deepsweet/start) - Functional task runner with shareable presets. 287 | - [ygor](https://github.com/shannonmoeller/ygor) - Promising task runner for when `npm run` isn't enough and everything else is too much. 288 | - [FuseBox](https://github.com/fuse-box/fuse-box) - Fast build system that combines the power of webpack, JSPM and SystemJS, with first-class TypeScript support. 289 | - [pkg](https://github.com/zeit/pkg) - Package your Node.js project into an executable. 290 | 291 | 292 | ### Hardware 293 | 294 | - [johnny-five](https://github.com/rwaldron/johnny-five) - Firmata based Arduino Framework. 295 | - [serialport](https://github.com/voodootikigod/node-serialport) - Access serial ports for reading and writing. 296 | - [usb](https://github.com/nonolith/node-usb) - USB library. 297 | - [i2c-bus](https://github.com/fivdi/i2c-bus) - I2C serial bus access. 298 | - [onoff](https://github.com/fivdi/onoff) - GPIO access and interrupt detection. 299 | - [spi-device](https://github.com/fivdi/spi-device) - SPI serial bus access. 300 | - [pigpio](https://github.com/fivdi/pigpio) - Fast GPIO, PWM, servo control, state change notification, and interrupt handling on the Raspberry Pi. 301 | - [gps](https://github.com/infusion/GPS.js) - NMEA parser for handling GPS receivers. 302 | 303 | 304 | ### Templating 305 | 306 | - [marko](https://github.com/marko-js/marko) - HTML-based templating engine that compiles templates to CommonJS modules and supports streaming, async rendering and custom tags. 307 | - [nunjucks](https://github.com/mozilla/nunjucks) - Templating engine with inheritance, asynchronous control, and more (jinja2 inspired). 308 | - [handlebars.js](https://github.com/wycats/handlebars.js) - Superset of Mustache templates which adds powerful features like helpers and more advanced blocks. 309 | - [EJS](https://github.com/mde/ejs) - Simple unopinionated templating language. 310 | - [Pug](https://github.com/pugjs/pug) - High-performance template engine heavily influenced by Haml. 311 | 312 | 313 | ### Web frameworks 314 | 315 | - [Hapi](https://github.com/hapijs/hapi) - Framework for building applications and services. 316 | - [Koa](https://github.com/koajs/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. 317 | - [Express](https://github.com/expressjs/express) - Web application framework, providing a robust set of features for building single and multi-page, and hybrid web applications. 318 | - [Feathers](https://github.com/feathersjs/feathers) - Microservice framework built in the spirit of Express. 319 | - [LoopBack](https://github.com/strongloop/loopback) - Powerful framework for creating REST APIs and easily connecting to backend data sources. 320 | - [Meteor](https://github.com/meteor/meteor) - An ultra-simple, database-everywhere, data-on-the-wire, pure-Javascript web framework. *(You might like [awesome-meteor](https://github.com/Urigo/awesome-meteor))* 321 | - [Restify](https://github.com/restify/node-restify) - Enables you to build correct REST web services. 322 | - [ThinkJS](https://github.com/thinkjs/thinkjs) - Framework with ES2015+ support, WebSockets, REST API. 323 | - [ActionHero](https://github.com/actionhero/actionhero) - Framework for making reusable & scalable APIs for TCP sockets, WebSockets, and HTTP clients. 324 | - [MERN](https://github.com/Hashnode/mern-cli) - Easily build production-ready universal apps with MongoDB, Express, React, and webpack. 325 | - [Next.js](https://github.com/zeit/next.js) - Minimalistic framework for server-rendered universal JavaScript web apps. 326 | - [Nuxt.js](https://github.com/nuxt/nuxt.js) - Minimalistic framework for server-rendered Vue.js apps. 327 | - [seneca](https://github.com/senecajs/seneca) - Toolkit for writing microservices. 328 | - [AdonisJs](http://adonisjs.com) - A true MVC framework for Node.js built on solid foundations of Dependency Injection and IoC container. 329 | - [Hemera](https://github.com/hemerajs/hemera) - Write reliable and fault-tolerant microservices with [NATS](https://nats.io). 330 | - [Micro](https://github.com/zeit/micro) - Minimalistic microservice framework with an async approach. 331 | - [Moleculer](https://moleculer.services) - Fast & powerful microservices framework. 332 | - [Fastify](https://github.com/fastify/fastify) - Fast and low overhead web framework. 333 | - [Nest](https://github.com/nestjs/nest) - Angular-inspired framework for building efficient and scalable server-side apps. 334 | - [Zeronode](https://github.com/sfast/zeronode) - Minimal building block for reliable and fault-tolerant microservices. 335 | - [TypeGraphQL](https://github.com/19majkel94/type-graphql) - Modern framework for creating GraphQL APIs with TypeScript, using classes and decorators. 336 | 337 | 338 | ### Documentation 339 | 340 | - [documentation.js](https://github.com/documentationjs/documentation) - API documentation generator with support for ES2015+ and flow annotation. 341 | - [ESDoc](https://github.com/esdoc/esdoc) - Documentation generator targeting ES2015, attaching test code and measuring documentation coverage. 342 | - [Docco](https://github.com/jashkenas/docco) - Documentation generator which produces an HTML document that displays your comments intermingled with your code. 343 | - [JSDoc](https://github.com/jsdoc3/jsdoc) - API documentation generator similar to JavaDoc or PHPDoc. 344 | 345 | 346 | ### Filesystem 347 | 348 | - [del](https://github.com/sindresorhus/del) - Delete files/folders using globs. 349 | - [globby](https://github.com/sindresorhus/globby) - Glob files with support for multiple patterns. 350 | - [cpy](https://github.com/sindresorhus/cpy) - Copy files. 351 | - [rimraf](https://github.com/isaacs/rimraf) - Recursively delete files like `rm -rf`. 352 | - [make-dir](https://github.com/sindresorhus/make-dir) - Recursively create directories like `mkdir -p`. 353 | - [graceful-fs](https://github.com/isaacs/node-graceful-fs) - Drop-in replacement for the `fs` module with various improvements. 354 | - [chokidar](https://github.com/paulmillr/chokidar) - Filesystem watcher which stabilizes events from `fs.watch` and `fs.watchFile` as well as using native `fsevents` on macOS. 355 | - [find-up](https://github.com/sindresorhus/find-up) - Find a file by walking up parent directories. 356 | - [proper-lockfile](https://github.com/IndigoUnited/node-proper-lockfile) - Inter-process and inter-machine lockfile utility. 357 | - [load-json-file](https://github.com/sindresorhus/load-json-file) - Read and parse a JSON file. 358 | - [write-json-file](https://github.com/sindresorhus/write-json-file) - Stringify and write JSON to a file atomically. 359 | - [fs-write-stream-atomic](https://github.com/npm/fs-write-stream-atomic) - Like `fs.createWriteStream()`, but atomic. 360 | - [filenamify](https://github.com/sindresorhus/filenamify) - Convert a string to a valid filename. 361 | - [lnfs](https://github.com/kevva/lnfs) - Force create symlinks like `ln -fs`. 362 | - [istextorbinary](https://github.com/bevry/istextorbinary) - Check if a file is text or binary. 363 | - [fs-jetpack](https://github.com/szwacz/fs-jetpack) - Completely redesigned file system API for convenience in everyday use. 364 | - [fs-extra](https://github.com/jprichardson/node-fs-extra) - Extra methods for the `fs` module. 365 | - [pkg-dir](https://github.com/sindresorhus/pkg-dir) - Find the root directory of an npm package. 366 | - [filehound](https://github.com/nspragg/filehound) - Flexible and fluent interface for searching the file system. 367 | - [move-file](https://github.com/sindresorhus/move-file) - Move a file, even works across devices. 368 | - [tempy](https://github.com/sindresorhus/tempy) - Get a random temporary file or directory path. 369 | 370 | 371 | ### Control flow 372 | 373 | - Promises 374 | - [Bluebird](https://github.com/petkaantonov/bluebird) - Promise library with focus on innovative features and performance. 375 | - [pify](https://github.com/sindresorhus/pify) - Promisify a callback-style function. 376 | - [delay](https://github.com/sindresorhus/delay) - Delay a promise a specified amount of time. 377 | - [promise-memoize](https://github.com/nodeca/promise-memoize) - Memoize promise-returning functions, with expire and prefetch. 378 | - [valvelet](https://github.com/lpinca/valvelet) - Limit the execution rate of a promise-returning function. 379 | - [p-map](https://github.com/sindresorhus/p-map) - Map over promises concurrently. 380 | - [More…](https://github.com/sindresorhus/promise-fun) 381 | - Observables 382 | - [zen-observable](https://github.com/zenparsing/zen-observable) - Implementation of Observables. 383 | - [RxJS](https://github.com/ReactiveX/RxJS) - Reactive programming. 384 | - [observable-to-promise](https://github.com/sindresorhus/awesome-observables) - Convert an Observable to a Promise. 385 | - [More…](https://github.com/sindresorhus/awesome-observables) 386 | - Streams 387 | - [Highland.js](https://github.com/caolan/highland) - Manages synchronous and asynchronous code easily, using nothing more than standard JavaScript and Node-like Streams. 388 | - Callbacks 389 | - [each-async](https://github.com/sindresorhus/each-async) - Async concurrent iterator like forEach. 390 | - [async](https://github.com/caolan/async) - Provides straight-forward, powerful functions for working with asynchronicity. 391 | - Channels 392 | - [js-csp](https://github.com/ubolonton/js-csp) - Communicating sequential processes for JavaScript (like Clojurescript core.async, or Go). 393 | 394 | 395 | ### Streams 396 | 397 | - [through2](https://github.com/rvagg/through2) - Tiny wrapper around streams2 Transform to avoid explicit subclassing noise. 398 | - [from2](https://github.com/hughsk/from2) - Convenience wrapper for ReadableStream, inspired by `through2`. 399 | - [get-stream](https://github.com/sindresorhus/get-stream) - Get a stream as a string or buffer. 400 | - [into-stream](https://github.com/sindresorhus/into-stream) - Convert a buffer/string/array/object into a stream. 401 | - [duplexify](https://github.com/mafintosh/duplexify) - Turn a writeable and readable stream into a single streams2 duplex stream. 402 | - [pumpify](https://github.com/mafintosh/pumpify) - Combine an array of streams into a single duplex stream. 403 | - [peek-stream](https://github.com/mafintosh/peek-stream) - Transform stream that lets you peek the first line before deciding how to parse it. 404 | - [binary-split](https://github.com/maxogden/binary-split) - Newline (or any delimiter) splitter stream. 405 | - [byline](https://github.com/jahewson/node-byline) - Super-simple line-by-line Stream reader. 406 | - [first-chunk-stream](https://github.com/sindresorhus/first-chunk-stream) - Transform the first chunk in a stream. 407 | - [pad-stream](https://github.com/sindresorhus/pad-stream) - Pad each line in a stream. 408 | - [multistream](https://github.com/feross/multistream) - Combine multiple streams into a single stream. 409 | - [stream-combiner2](https://github.com/substack/stream-combiner2) - Turn a pipeline into a single stream. 410 | - [readable-stream](https://github.com/nodejs/readable-stream) - Mirror of Streams2 and Streams3 implementations in core. 411 | - [through2-concurrent](https://github.com/almost/through2-concurrent) - Transform object streams concurrently. 412 | 413 | 414 | ### Real-time 415 | 416 | - [µWebSockets](https://github.com/uWebSockets/uWebSockets) - Highly scalable WebSocket server & client library. 417 | - [Socket.io](https://github.com/socketio/socket.io) - Enables real-time bidirectional event-based communication. 418 | - [Faye](https://github.com/faye/faye) - Real-time client-server message bus, based on Bayeux protocol. 419 | - [SocketCluster](https://github.com/SocketCluster/socketcluster) - Scalable HTTP + WebSocket engine which can run on multiple CPU cores. 420 | - [Primus](https://github.com/primus/primus) - An abstraction layer for real-time frameworks to prevent module lock-in. 421 | - [deepstream.io](https://github.com/deepstreamIO/deepstream.io-client-js) - Scalable real-time microservice framework. 422 | - [Kalm](https://github.com/kalm/kalm.js) - Low-level socket router and middleware framework. 423 | - [MQTT.js](https://github.com/mqttjs/MQTT.js) - Client for MQTT - Pub-sub based messaging protocol for use on top of TCP/IP. 424 | - [rpc-websockets](https://github.com/elpheria/rpc-websockets) - JSON-RPC 2.0 implementation over WebSockets. 425 | - [Aedes](https://github.com/mcollina/aedes) - Barebone MQTT server that can run on any stream server. 426 | 427 | 428 | ### Image 429 | 430 | - [sharp](https://github.com/lovell/sharp) - The fastest module for resizing JPEG, PNG, WebP and TIFF images. 431 | - [image-type](https://github.com/sindresorhus/image-type) - Detect the image type of a Buffer/Uint8Array. 432 | - [gm](https://github.com/aheckmann/gm) - GraphicsMagick and ImageMagick wrapper. 433 | - [lwip](https://github.com/EyalAr/lwip) - Lightweight image processor which does not require ImageMagick. 434 | - [pica](https://github.com/nodeca/pica) - High quality & fast resize (lanczos3) in pure JS. Alternative to canvas drawImage(), when no pixelation allowed. 435 | - [jimp](https://github.com/oliver-moran/jimp) - Image processing in pure JavaScript. 436 | - [probe-image-size](https://github.com/nodeca/probe-image-size) - Get the size of most image formats without a full download. 437 | 438 | 439 | ### Text 440 | 441 | - [iconv-lite](https://github.com/ashtuchkin/iconv-lite) - Convert character encodings. 442 | - [string-length](https://github.com/sindresorhus/string-length) - Get the real length of a string - by correctly counting astral symbols and ignoring ansi escape codes. 443 | - [camelcase](https://github.com/sindresorhus/camelcase) - Convert a dash/dot/underscore/space separated string to camelCase: foo-bar → fooBar. 444 | - [escape-string-regexp](https://github.com/sindresorhus/escape-string-regexp) - Escape RegExp special characters. 445 | - [execall](https://github.com/sindresorhus/execall) - Find multiple RegExp matches in a string. 446 | - [splice-string](https://github.com/sindresorhus/splice-string) - Remove or replace part of a string like `Array#splice`. 447 | - [indent-string](https://github.com/sindresorhus/indent-string) - Indent each line in a string. 448 | - [strip-indent](https://github.com/sindresorhus/strip-indent) - Strip leading whitespace from every line in a string. 449 | - [detect-indent](https://github.com/sindresorhus/detect-indent) - Detect the indentation of code. 450 | - [he](https://github.com/mathiasbynens/he) - HTML entity encoder/decoder. 451 | - [i18n-node](https://github.com/mashpie/i18n-node) - Simple translation module with dynamic JSON storage. 452 | - [babelfish](https://github.com/nodeca/babelfish) - i18n with very easy syntax for plurals. 453 | - [matcher](https://github.com/sindresorhus/matcher) - Simple wildcard matching. 454 | - [unhomoglyph](https://github.com/nodeca/unhomoglyph) - Normalize visually similar unicode characters. 455 | - [i18next](https://github.com/i18next/i18next) - Internationalization framework. 456 | 457 | 458 | ### Number 459 | 460 | - [random-int](https://github.com/sindresorhus/random-int) - Generate a random integer. 461 | - [random-float](https://github.com/sindresorhus/random-float) - Generate a random float. 462 | - [unique-random](https://github.com/sindresorhus/unique-random) - Generate random numbers that are consecutively unique. 463 | - [round-to](https://github.com/sindresorhus/round-to) - Round a number to a specific number of decimal places: `1.234` → `1.2`. 464 | 465 | 466 | ### Math 467 | 468 | - [ndarray](https://github.com/scijs/ndarray) - Multidimensional arrays. 469 | - [mathjs](https://github.com/josdejong/mathjs) - An extensive math library. 470 | - [math-clamp](https://github.com/sindresorhus/math-clamp) - Clamp a number. 471 | - [algebra](https://github.com/fibo/algebra) - Algebraic structures. 472 | - [multimath](https://github.com/nodeca/multimath) - Core to create fast image math in WebAssembly and JS. 473 | 474 | 475 | ### Date 476 | 477 | - [Luxon](https://github.com/moment/luxon) - Library for working with dates and times. 478 | - [date-fns](https://github.com/date-fns/date-fns) - Modern date utility. 479 | - [Moment.js](http://momentjs.com) - Parse, validate, manipulate, and display dates. 480 | - [Day.js](https://github.com/iamkun/dayjs) - Immutable date library alternative to Moment.js. 481 | - [dateformat](https://github.com/felixge/node-dateformat) - Date formatting. 482 | - [tz-format](https://github.com/samverschueren/tz-format) - Format a date with timezone: `2015-11-30T10:40:35+01:00`. 483 | - [cctz](https://github.com/floatdrop/node-cctz) - Fast parsing, formatting, and timezone conversation for dates. 484 | 485 | 486 | ### URL 487 | 488 | - [normalize-url](https://github.com/sindresorhus/normalize-url) - Normalize a URL. 489 | - [humanize-url](https://github.com/sindresorhus/humanize-url) - Humanize a URL: http://sindresorhus.com → sindresorhus.com. 490 | - [url-unshort](https://github.com/nodeca/url-unshort) - Expand shortened URLs. 491 | - [speakingurl](https://github.com/pid/speakingurl) - Generate a slug from a string with transliteration. 492 | - [linkify-it](https://github.com/markdown-it/linkify-it) - Link patterns detector with full unicode support. 493 | - [url-pattern](https://github.com/snd/url-pattern) - Easier than regex string matching patterns for URLs and other strings. 494 | - [embedza](https://github.com/nodeca/embedza) - Create HTML snippets/embeds from URLs using info from oEmbed, Open Graph, meta tags. 495 | 496 | 497 | ### Data validation 498 | 499 | - [joi](https://github.com/hapijs/joi) - Object schema description language and validator for JavaScript objects. 500 | - [is-my-json-valid](https://github.com/mafintosh/is-my-json-valid) - JSON Schema validator that uses code generation to be extremely fast. 501 | - [property-validator](https://github.com/nettofarah/property-validator) - Easy property validation for Express. 502 | - [schema-inspector](https://github.com/Atinux/schema-inspector) - JSON API sanitization and validation. 503 | - [ajv](https://github.com/epoberezkin/ajv) - The fastest JSON Schema validator. Supports v5 proposals. 504 | 505 | 506 | ### Parsing 507 | 508 | - [remark](https://github.com/wooorm/remark) - Markdown processor powered by plugins. 509 | - [markdown-it](https://github.com/markdown-it/markdown-it) - Markdown parser with 100% CommonMark support, extensions and syntax plugins. 510 | - [parse5](https://github.com/inikulin/parse5) - Fast full-featured spec compliant HTML parser. 511 | - [strip-json-comments](https://github.com/sindresorhus/strip-json-comments) - Strip comments from JSON. 512 | - [strip-css-comments](https://github.com/sindresorhus/strip-css-comments) - Strip comments from CSS. 513 | - [parse-json](https://github.com/sindresorhus/parse-json) - Parse JSON with more helpful errors. 514 | - [URI.js](https://github.com/medialize/URI.js) - URL mutation. 515 | - [PostCSS](https://github.com/postcss/postcss) - CSS parser / stringifier. 516 | - [JSONStream](https://github.com/dominictarr/JSONStream) - Streaming JSON.parse and stringify. 517 | - [neat-csv](https://github.com/sindresorhus/neat-csv) - Fast CSV parser. Callback interface for the above. 518 | - [csv-parser](https://github.com/mafintosh/csv-parser) - Streaming CSV parser that aims to be faster than everyone else. 519 | - [PEG.js](https://github.com/pegjs/pegjs) - Simple parser generator that produces fast parsers with excellent error reporting. 520 | - [x-ray](https://github.com/lapwinglabs/x-ray) - Web scraping utility. 521 | - [nearley](https://github.com/Hardmath123/nearley) - Simple, fast, powerful parsing for JavaScript. 522 | - [binary-extract](https://github.com/juliangruber/binary-extract) - Extract a value from a buffer of JSON without parsing the whole thing. 523 | - [Stylecow](https://github.com/stylecow/stylecow) - Parse, manipulate and convert modern CSS to make it compatible with all browsers. Extensible with plugins. 524 | - [js-yaml](https://github.com/nodeca/js-yaml) - Very fast YAML parser. 525 | - [xml2js](https://github.com/Leonidas-from-XIV/node-xml2js) - XML to JavaScript object converter. 526 | - [Jison](https://github.com/zaach/jison) - Friendly JavaScript parser generator. It shares genes with Bison, Yacc and family. 527 | - [google-libphonenumber](https://github.com/seegno/google-libphonenumber) - Parse, format, store and validate phone numbers. 528 | - [ref](https://github.com/TooTallNate/ref) - Read/write structured binary data in Buffers. 529 | - [xlsx-populate](https://github.com/dtjohnson/xlsx-populate) - Read/write Excel XLSX. 530 | - [Chevrotain](https://github.com/SAP/chevrotain) - Very fast and feature rich parser building toolkit for JavaScript. 531 | - [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) - Validate and parse XML. 532 | 533 | 534 | ### Humanize 535 | 536 | - [pretty-bytes](https://github.com/sindresorhus/pretty-bytes) - Convert bytes to a human readable string: `1337` → `1.34 kB`. 537 | - [pretty-ms](https://github.com/sindresorhus/pretty-ms) - Convert milliseconds to a human readable string: `1337000000` → `15d 11h 23m 20s`. 538 | - [ms](https://github.com/rauchg/ms.js) - Tiny millisecond conversion utility. 539 | - [pretty-error](https://github.com/AriaMinaei/pretty-error) - Errors with less clutter. 540 | - [read-art](https://github.com/Tjatse/node-readability) - Extract readable content from any page. 541 | 542 | 543 | ### Compression 544 | 545 | - [yazl](https://github.com/thejoshwolfe/yazl) - Zip. 546 | - [yauzl](https://github.com/thejoshwolfe/yauzl) - Unzip. 547 | - [Archiver](https://github.com/archiverjs/node-archiver) - Streaming interface for archive generation, supporting ZIP and TAR. 548 | - [pako](https://github.com/nodeca/pako) - High speed zlib port to pure js (deflate, inflate, gzip). 549 | - [tar-stream](https://github.com/mafintosh/tar-stream) - Streaming tar parser and generator. Also see [tar-fs](https://github.com/mafintosh/tar-fs). 550 | - [decompress](https://github.com/kevva/decompress) - Decompression module with support for `tar`, `tar.gz` and `zip` files out of the box. 551 | 552 | 553 | ### Network 554 | 555 | - [get-port](https://github.com/sindresorhus/get-port) - Get an available port. 556 | - [ipify](https://github.com/sindresorhus/ipify) - Get your public IP address. 557 | - [getmac](https://github.com/bevry/getmac) - Get the computer MAC address. 558 | - [DHCP](https://github.com/infusion/node-dhcp) - DHCP client and server. 559 | - [netcat](https://github.com/roccomuso/netcat) - Netcat port in pure JS. 560 | 561 | 562 | ### Database 563 | 564 | - Drivers 565 | - [PostgreSQL](https://github.com/brianc/node-postgres) - PostgreSQL client. Pure JavaScript and native libpq bindings. 566 | - [Redis](https://github.com/luin/ioredis) - Redis client. 567 | - [LevelUP](https://github.com/Level/levelup) - LevelDB. 568 | - [MySQL](https://github.com/mysqljs/mysql) - MySQL client. 569 | - [couchdb-nano](https://github.com/apache/couchdb-nano) - CouchDB client. 570 | - [Aerospike](https://github.com/aerospike/aerospike-client-nodejs) - Aerospike client. 571 | - [Couchbase](https://github.com/couchbase/couchnode) - Couchbase client. 572 | - [MongoDB](https://github.com/mongodb/node-mongodb-native) - MongoDB driver. 573 | - ODM / ORM 574 | - [Sequelize](https://github.com/sequelize/sequelize) - Multi-dialect ORM. Supports PostgreSQL, SQLite, MySQL. 575 | - [Bookshelf](https://github.com/bookshelf/bookshelf) - ORM for PostgreSQL, MySQL and SQLite3 in the style of Backbone.js. 576 | - [Massive](https://github.com/robconery/massive-js) - PostgreSQL data access tool. 577 | - [Mongoose](https://github.com/Automattic/mongoose) - Elegant MongoDB object modeling. 578 | - [Waterline](https://github.com/balderdashy/waterline) - Datastore-agnostic tool that dramatically simplifies interaction with one or more databases. 579 | - [OpenRecord](https://github.com/PhilWaldmann/openrecord) - ORM for PostgreSQL, MySQL, SQLite3 and RESTful datastores. Similar to ActiveRecord. 580 | - [pg-promise](https://github.com/vitaly-t/pg-promise) - PostgreSQL framework for native SQL using promises. 581 | - [slonik](https://github.com/gajus/slonik) - PostgreSQL client with strict types, detailed logging and assertions. 582 | - [Objection.js](https://github.com/Vincit/objection.js) - Lightweight ORM built on the SQL query builder Knex. 583 | - [TypeORM](https://github.com/typeorm/typeorm) - ORM for PostgreSQL, MariaDB, MySQL, SQLite, and more. 584 | - Query builder 585 | - [Knex](https://github.com/tgriesser/knex) - Query builder for PostgreSQL, MySQL and SQLite3, designed to be flexible, portable, and fun to use. 586 | - Other 587 | - [NeDB](https://github.com/louischatriot/nedb) - Embedded persistent database written in JavaScript. 588 | - [Lowdb](https://github.com/typicode/lowdb) - Small JavaScript database powered by Lodash. 589 | - [Keyv](https://github.com/lukechilds/keyv) - Simple key-value storage with support for multiple backends. 590 | - [Finale](https://github.com/tommybananas/finale) - RESTful endpoint generator for your Sequelize models. 591 | - [database-js](https://github.com/mlaanderson/database-js) - Wrapper for multiple databases with a JDBC-like connection. 592 | - [Mongo Seeding](https://github.com/pkosiec/mongo-seeding) - Populate MongoDB databases with JavaScript and JSON files. 593 | 594 | 595 | ### Testing 596 | 597 | - [AVA](https://github.com/avajs/ava) - Futuristic test runner. 598 | - [Mocha](https://github.com/mochajs/mocha) - Feature-rich test framework making asynchronous testing simple and fun. 599 | - [nyc](https://github.com/bcoe/nyc) - Code coverage tool built on istanbul that works with subprocesses. 600 | - [tap](https://github.com/isaacs/node-tap) - TAP test framework. 601 | - [tape](https://github.com/substack/tape) - TAP-producing test harness. 602 | - [power-assert](https://github.com/power-assert-js/power-assert) - Provides descriptive assertion messages through the standard assert interface. 603 | - [Mochify](https://github.com/mantoni/mochify.js) - TDD with Browserify, Mocha, PhantomJS and WebDriver. 604 | - [trevor](https://github.com/vdemedes/trevor) - Run tests against multiple versions of Node.js without switching versions manually or pushing to Travis CI. 605 | - [loadtest](https://github.com/alexfernandez/loadtest) - Run load tests for your web application, with an API for automation. 606 | - [Sinon.JS](https://github.com/sinonjs/sinon) - Test spies, stubs and mocks. 607 | - [navit](https://github.com/nodeca/navit) - PhantomJS / SlimerJS wrapper to simplify browser test scripting. 608 | - [Nock](https://github.com/pgte/nock) - HTTP mocking and expectations. 609 | - [intern](https://github.com/theintern/intern) - Code testing stack. 610 | - [toxy](https://github.com/h2non/toxy) - Hackable HTTP proxy to simulate failure scenarios and network conditions. 611 | - [hook-std](https://github.com/sindresorhus/hook-std) - Hook and modify stdout/stderr. 612 | - [testen](https://github.com/egoist/testen) - Run tests for multiple versions of Node.js locally with NVM. 613 | - [Nightwatch](https://github.com/nightwatchjs/nightwatch) - Automated UI testing framework based on Selenium WebDriver. 614 | - [WebdriverIO](https://github.com/webdriverio/webdriverio) - Automated testing based on the WebDriver protocol. 615 | - [Jest](https://github.com/facebook/jest) - Painless JavaScript testing. 616 | - [TestCafe](https://github.com/DevExpress/testcafe) - Automated browser testing. 617 | - [abstruse](https://github.com/bleenco/abstruse) - Continuous Integration server. 618 | - [CodeceptJS](https://github.com/Codeception/CodeceptJS) - End-to-end testing. 619 | 620 | 621 | ### Security 622 | 623 | - [upash](https://github.com/simonepri/upash) - Unified API for all password hashing algorithms. 624 | - [themis](https://github.com/cossacklabs/themis) - Multilanguage framework for making typical encryption schemes easy to use: data at rest, authenticated data exchange, transport protection, authentication, and so on. 625 | - [GuardRails](https://github.com/apps/guardrails) - GitHub app that provides security feedback in pull requests. 626 | - [rate-limiter-flexible](https://github.com/animir/node-rate-limiter-flexible) - Brute-force and DDoS attack protection. 627 | - [crypto-hash](https://github.com/sindresorhus/crypto-hash) - Async non-blocking hashing. 628 | 629 | 630 | ### Benchmarking 631 | 632 | - [Benchmark.js](https://github.com/bestiejs/benchmark.js) - Benchmarking library that supports high-resolution timers and returns statistically significant results. 633 | - [matcha](https://github.com/logicalparadox/matcha) - Simplistic approach to benchmarking. 634 | 635 | 636 | ### Minifiers 637 | 638 | - [babili](https://github.com/babel/babili) - ES2015+ aware minifier based on the Babel toolchain. 639 | - [UglifyJS2](https://github.com/mishoo/UglifyJS2) - JavaScript minifier. 640 | - [clean-css](https://github.com/jakubpawlowicz/clean-css) - CSS minifier. 641 | - [minimize](https://github.com/Swaagie/minimize) - HTML minifier. 642 | - [imagemin](https://github.com/imagemin/imagemin) - Image minifier. 643 | 644 | 645 | ### Authentication 646 | 647 | - [Passport](https://github.com/jaredhanson/passport) - Simple, unobtrusive authentication. 648 | - [Grant](https://github.com/simov/grant) - OAuth middleware for Express, Koa, and Hapi. 649 | - [CloudRail](https://github.com/CloudRail/cloudrail-si-node-sdk) - Unified API for social authentication (Facebook, Twitter, Slack, Instagram, …). 650 | 651 | 652 | ### Authorization 653 | 654 | - [CASL](https://github.com/stalniy/casl) - Isomorphic authorization for UI and API. 655 | - [node-casbin](https://github.com/casbin/node-casbin) - Authorization library that supports access control models like ACL, RBAC and ABAC. 656 | 657 | 658 | ### Email 659 | 660 | - [Nodemailer](https://github.com/andris9/Nodemailer) - The fastest way to handle email. 661 | - [emailjs](https://github.com/eleith/emailjs) - Send text/HTML emails with attachments to any SMTP server. 662 | - [email-templates](https://github.com/niftylettuce/email-templates) - Create, preview, and send custom email templates. 663 | 664 | 665 | ### Job queues 666 | 667 | - [kue](https://github.com/Automattic/kue) - Redis-backed priority job queue. 668 | - [bull](https://github.com/OptimalBits/bull) - Persistent job and message queue. 669 | - [agenda](https://github.com/rschmukler/agenda) - MongoDB-backed job scheduling. 670 | - [idoit](https://github.com/nodeca/idoit) - Redis-backed job queue engine with advanced job control. 671 | - [node-resque](https://github.com/taskrabbit/node-resque) - Redis-backed job queue. 672 | - [rsmq](https://github.com/smrchy/rsmq) - Redis-backed message queue. 673 | - [bee-queue](https://github.com/bee-queue/bee-queue) - High-performance Redis-backed job queue. 674 | - [RedisSMQ](https://github.com/weyoss/redis-smq) - Simple high-performance Redis message queue with real-time monitoring. 675 | - [sqs-consumer](https://github.com/bbc/sqs-consumer) - Build Amazon Simple Queue Service (SQS) based apps without the boilerplate. 676 | 677 | 678 | ### Node.js management 679 | 680 | - [n](https://github.com/tj/n) - Node.js version management. 681 | - [nave](https://github.com/isaacs/nave) - Virtual Environments for Node.js. 682 | - [nodeenv](https://github.com/ekalinin/nodeenv) - Node.js virtual environment compatible to Python's virtualenv. 683 | - [nvm for Windows](https://github.com/coreybutler/nvm-windows) - Version management for Windows. 684 | 685 | 686 | ### Natural language processing 687 | 688 | - [retext](https://github.com/wooorm/retext) - An extensible natural language system. 689 | - [franc](https://github.com/wooorm/franc) - Detect the language of text. 690 | - [leven](https://github.com/sindresorhus/leven) - Measure the difference between two strings using the Levenshtein distance algorithm. 691 | - [natural](https://github.com/NaturalNode/natural) - Natural language facility. 692 | - [nlp.js](https://github.com/axa-group/nlp.js) - Building bots, with entity extraction, sentiment analysis, automatic language identify, and more. 693 | 694 | 695 | ### Process management 696 | 697 | - [PM2](https://github.com/Unitech/pm2) - Advanced Process Manager. 698 | - [nodemon](https://github.com/remy/nodemon) - Monitor for changes in your app and automatically restart the server. 699 | - [node-mac](https://github.com/coreybutler/node-mac) - Run scripts as a native Mac daemon and log to the console app. 700 | - [node-linux](https://github.com/coreybutler/node-linux) - Run scripts as native system service and log to syslog. 701 | - [node-windows](https://github.com/coreybutler/node-windows) - Run scripts as a native Windows service and log to the Event viewer. 702 | - [supervisor](https://github.com/petruisfan/node-supervisor) - Restart scripts when they crash or restart when a `*.js` file changes. 703 | - [Phusion Passenger](https://github.com/phusion/passenger) - Friendly process manager that integrates directly into Nginx. 704 | 705 | 706 | ### Automation 707 | 708 | - [robotjs](https://github.com/octalmage/robotjs) - Desktop Automation: control the mouse, keyboard and read the screen. 709 | 710 | 711 | ### AST 712 | 713 | - [Acorn](https://github.com/ternjs/acorn) - Tiny, fast JavaScript parser. 714 | - [babel-parser](https://github.com/babel/babel/tree/master/packages/babel-parser) - JavaScript parser used in Babel. 715 | - [cherow](https://github.com/cherow/cherow) - JavaScript parser with focus on performance and stability. 716 | 717 | 718 | ### Static site generators 719 | 720 | - [Wintersmith](https://github.com/jnordberg/wintersmith) - Flexible, minimalistic, multi-platform static site generator. 721 | - [Assemble](https://github.com/assemble/assemble/) - Static site generator for Node.js, Grunt.js, and Yeoman. 722 | - [DocPad](https://github.com/docpad/docpad) - Static site generator with dynamic abilities and huge plugin ecosystem. 723 | - [Phenomic](https://github.com/phenomic/phenomic) - Modern static website generator based on the React and Webpack ecosystem. 724 | - [docsify](https://github.com/QingWei-Li/docsify) - Markdown documentation site generator with no statically built HTML files. 725 | 726 | 727 | ### Content management systems 728 | 729 | - [KeystoneJS](https://github.com/keystonejs/keystone) - CMS and web application platform built on Express and MongoDB. 730 | - [ApostropheCMS](https://github.com/apostrophecms/apostrophe) - Content management system with an emphasis on intuitive front end content editing and administration built on Express and MongoDB. 731 | - [Strapi](https://github.com/strapi/strapi) - Content Management Framework (headless-CMS) to build powerful APIs. 732 | - [Tipe](https://github.com/tipeio/tipe) - Developer-first content management system with GraphQL and REST API from a schema file. 733 | 734 | 735 | ### Forum 736 | 737 | - [nodeBB](https://github.com/NodeBB/NodeBB) - Forum platform for the modern web. 738 | 739 | 740 | ### Blogging 741 | 742 | - [Ghost](https://github.com/TryGhost/Ghost) - Simple, powerful publishing platform. 743 | - [Hexo](https://github.com/hexojs/hexo) - Fast, simple and powerful blogging framework. 744 | 745 | 746 | ### Weird 747 | 748 | - [cows](https://github.com/sindresorhus/cows) - ASCII cows. 749 | - [superb](https://github.com/sindresorhus/superb) - Get superb like words. 750 | - [cat-names](https://github.com/sindresorhus/cat-names) - Get popular cat names. 751 | - [dog-names](https://github.com/sindresorhus/dog-names) - Get popular dog names. 752 | - [superheroes](https://github.com/sindresorhus/superheroes) - Get superhero names. 753 | - [supervillains](https://github.com/sindresorhus/supervillains) - Get supervillain names. 754 | - [cool-ascii-faces](https://github.com/maxogden/cool-ascii-faces) - Get some cool ascii faces. 755 | - [cat-ascii-faces](https://github.com/melaniecebula/cat-ascii-faces) - `₍˄·͈༝·͈˄₎◞ ̑̑ෆ⃛ (=ↀωↀ=)✧ (^・o・^)ノ”`. 756 | - [nerds](https://github.com/SkyHacks/nerds) - Get data from nerdy topics like Harry Potter, Star Wars, and Pokémon. 757 | 758 | 759 | ### Serialization 760 | 761 | - [snappy](https://github.com/kesla/node-snappy) - Native bindings for Google's Snappy compression library. 762 | - [protobuf](https://github.com/dcodeIO/protobuf.js) - Implementation of Protocol Buffers. 763 | - [compactr](https://github.com/compactr/compactr.js) - Implementation of the Compactr protocol. 764 | 765 | 766 | ### Miscellaneous 767 | 768 | - [execa](https://github.com/sindresorhus/execa) - Better `child_process`. 769 | - [cheerio](https://github.com/cheeriojs/cheerio) - Fast, flexible, and lean implementation of core jQuery designed specifically for the server. 770 | - [Electron](https://github.com/atom/electron) - Build cross platform desktop apps with web technologies. *(You might like [awesome-electron](https://github.com/sindresorhus/awesome-electron))* 771 | - [open](https://github.com/sindresorhus/open) - Opens stuff like websites, files, executables. 772 | - [hasha](https://github.com/sindresorhus/hasha) - Hashing made simple. Get the hash of a buffer/string/stream/file. 773 | - [dot-prop](https://github.com/sindresorhus/dot-prop) - Get a property from a nested object using a dot path. 774 | - [onetime](https://github.com/sindresorhus/onetime) - Only run a function once. 775 | - [mem](https://github.com/sindresorhus/mem) - Memoize functions - an optimization technique used to speed up consecutive function calls by caching the result of calls with identical input. 776 | - [import-fresh](https://github.com/sindresorhus/import-fresh) - Import a module while bypassing the cache. 777 | - [strip-bom](https://github.com/sindresorhus/strip-bom) - Strip UTF-8 byte order mark (BOM) from a string/buffer/stream. 778 | - [os-locale](https://github.com/sindresorhus/os-locale) - Get the system locale. 779 | - [ssh2](https://github.com/mscdex/ssh2) - SSH2 client and server module. 780 | - [adit](https://github.com/markelog/adit) - SSH tunneling made simple. 781 | - [import-lazy](https://github.com/sindresorhus/import-lazy) - Import a module lazily. 782 | - [file-type](https://github.com/sindresorhus/file-type) - Detect the file type of a Buffer. 783 | - [Bottleneck](https://github.com/SGrondin/bottleneck) - Rate limiter that makes throttling easy. 784 | - [ow](https://github.com/sindresorhus/ow) - Function argument validation for humans. 785 | - [webworker-threads](https://github.com/audreyt/node-webworker-threads) - Lightweight Web Worker API implementation with native threads. 786 | - [clipboardy](https://github.com/sindresorhus/clipboardy) - Access the system clipboard (copy/paste). 787 | - [node-pre-gyp](https://github.com/mapbox/node-pre-gyp) - Makes it easy to publish and install Node.js C++ addons from binaries. 788 | - [opencv](https://github.com/peterbraden/node-opencv) - Bindings for OpenCV. The defacto computer vision library. 789 | - [dotenv](https://github.com/motdotla/dotenv) - Load environment variables from .env file. 790 | - [remote-git-tags](https://github.com/sindresorhus/remote-git-tags) - Get tags from a remote git repo. 791 | - [semver](https://github.com/npm/node-semver) - Semantic version parser. 792 | - [Faker.js](https://github.com/Marak/Faker.js) - Generate massive amounts of fake data. 793 | - [nodegit](https://github.com/nodegit/nodegit) - Native bindings to Git. 794 | - [json-strictify](https://github.com/pigulla/json-strictify) - Safely serialize a value to JSON without data loss or going into an infinite loop. 795 | - [resolve-from](https://github.com/sindresorhus/resolve-from) - Resolve the path of a module like `require.resolve()` but from a given path. 796 | - [simplecrawler](https://github.com/cgiffard/node-simplecrawler) - Event driven web crawler. 797 | - [jsdom](https://github.com/tmpvar/jsdom) - JavaScript implementation of HTML and the DOM. 798 | - [hypernova](https://github.com/airbnb/hypernova) - Server-side rendering your JavaScript views. 799 | - [@sindresorhus/is](https://github.com/sindresorhus/is) - Type check values. 800 | - [env-dot-prop](https://github.com/simonepri/env-dot-prop) - Get, set, or delete nested properties of process.env using a dot path. 801 | - [emittery](https://github.com/sindresorhus/emittery) - Simple and modern async event emitter. 802 | - [node-video-lib](https://github.com/gkozlenko/node-video-lib) - Pure JavaScript library for working with MP4 and FLV video files and creating MPEG-TS chunks for HLS streaming. 803 | - [basic-ftp](https://github.com/patrickjuchli/basic-ftp) – FTP/FTPS client. 804 | 805 | 806 | ## Resources 807 | 808 | ### Tutorials 809 | 810 | - [Node.js Best Practices](https://github.com/i0natan/nodebestpractices) - Summary and curation of the top-ranked content on Node.js best practices, available in multiple languages. 811 | - [Nodeschool](https://github.com/nodeschool) - Learn Node.js with interactive lessons. 812 | - [The Art of Node](https://github.com/maxogden/art-of-node/#the-art-of-node) - An introduction to Node.js. 813 | - [stream-handbook](https://github.com/substack/stream-handbook) - How to write Node.js programs with streams. 814 | - [module-best-practices](https://github.com/mattdesl/module-best-practices) - Some good practices when writing new npm modules. 815 | - [The Node Way](http://thenodeway.io) - 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. 816 | - [You Don't Know Node.js](https://github.com/azat-co/you-dont-know-node) - Introduction to Node.js core features and asynchronous JavaScript. 817 | - [Portable Node.js guide](https://github.com/ehmicky/portable-node-guide) - Practical guide on how to write portable/cross-platform Node.js code. 818 | - [Bulletproof node.js project architecture ](https://softwareontheroad.com/ideal-nodejs-project-structure/) - How to structure your node.js project to get it ready for scalability. 819 | 820 | ### Discovery 821 | 822 | - [npms](https://npms.io) - Superb package search with deep analysis of package quality using a [myriad of metrics](https://npms.io/about). 823 | - [npm addict](https://npmaddict.com) - Your daily injection of npm packages. 824 | - [npmcompare.com](https://npmcompare.com) - Compare and discover npm packages. 825 | 826 | ### Articles 827 | 828 | - [Error Handling in Node.js](https://www.joyent.com/node-js/production/design/errors) 829 | - [Teach Yourself Node.js in 10 Steps](https://ponyfoo.com/articles/teach-yourself-nodejs-in-10-steps) 830 | - [Mastering the filesystem in Node.js](https://medium.com/@yoshuawuyts/mastering-the-filesystem-in-node-js-4706b7cb0801) 831 | - [Semver: A Primer](https://nodesource.com/blog/semver-a-primer/) 832 | - [Semver: Tilde and Caret](https://nodesource.com/blog/semver-tilde-and-caret/) 833 | - [Why Asynchronous?](https://nodesource.com/blog/why-asynchronous/) 834 | - [Understanding the Node.js Event Loop](https://nodesource.com/blog/understanding-the-nodejs-event-loop/) 835 | - [Understanding Object Streams](https://nodesource.com/blog/understanding-object-streams/) 836 | - [Art of README](https://github.com/noffle/art-of-readme) - Learn the art of writing quality READMEs. 837 | - [You don't need passport.js](https://softwareontheroad.com/nodejs-jwt-authentication-oauth/) - In deep guide to rolling out your own authentication service. 838 | 839 | ### Newsletters 840 | 841 | - [Node Weekly](http://nodeweekly.com) - Weekly e-mail round-up of Node.js news and articles. 842 | - [Node Module Of The Week!](https://nmotw.in) - Weekly dose of hand picked node modules. 843 | 844 | ### Videos 845 | 846 | - [Introduction to Node.js with Ryan Dahl](https://www.youtube.com/watch?v=jo_B4LTHi3I) 847 | - [Hands on with Node.js](https://learn.bevry.me/hands-on-with-node.js/preface) 848 | - [Nodetuts](http://nodetuts.com) - Series of talks, including TCP & HTTP API servers, async programming, and more. 849 | - [V8 Garbage Collector](https://v8.dev/blog/trash-talk) - Trash talk about the V8 garbage collector. 850 | 851 | ### Books 852 | 853 | - [Node.js in Action](https://www.manning.com/books/node-js-in-action-second-edition) 854 | - [Node.js in Practice](http://www.amazon.com/Node-js-Practice-Alex-R-Young/dp/1617290939) 855 | - [Mastering Node](http://visionmedia.github.io/masteringnode/) 856 | - [Node.js 8 the Right Way](https://pragprog.com/book/jwnode2/node-js-8-the-right-way) 857 | - [Professional Node.js: Building Javascript Based Scalable Software](http://www.amazon.com/Professional-Node-js-Building-Javascript-Scalable-ebook/dp/B009L7QETY/) 858 | - [Practical Node.js: Building Real-World Scalable Web Apps](http://practicalnodebook.com) 859 | - [Mixu's Node book](http://book.mixu.net/node/) 860 | - [Web Development with Node and Express](http://shop.oreilly.com/product/0636920032977.do) 861 | - [Pro Express.js](http://proexpressjs.com) 862 | - [Secure Your Node.js Web Application](http://www.amazon.com/Secure-Your-Node-js-Web-Application/dp/1680500856) 863 | - [Express in Action](https://www.manning.com/books/express-in-action) 864 | - [Practical Modern JavaScript](https://www.amazon.com/Practical-Modern-JavaScript-Dive-Future/dp/149194353X) 865 | - [Mastering Modular JavaScript](https://www.amazon.com/Mastering-Modular-JavaScript-Nicolas-Bevacqua/dp/1491955686/) 866 | - [Get Programming with Node.js](https://www.manning.com/books/get-programming-with-node-js) 867 | 868 | ### Blogs 869 | 870 | - [Node.js blog](https://nodejs.org/en/blog/) 871 | - [webapplog.com](http://webapplog.com/tag/node-js/) - Blog posts on Node.js and JavaScript from the author of Practical Node.js and Pro Express.js Azat Mardan. 872 | - [softwareontheroad.com](https://softwareontheroad.com/) - In deep guide to advance topics on Node.js such as authentication, scalability, design patterns, and more... 873 | 874 | ### Courses 875 | 876 | - [Learn to build apps and APIs with Node.js](https://learnnode.com/friend/AWESOME) - Video course by Wes Bos. 877 | - [Real Time Web with Node.js](https://www.codeschool.com/courses/real-time-web-with-node-js) 878 | - [Learn and Understand Node.js](https://www.udemy.com/understand-nodejs) 879 | 880 | ### Cheatsheets 881 | 882 | - [Express.js](https://github.com/azat-co/cheatsheets/blob/master/express4) 883 | - [Stream FAQs](https://github.com/stephenplusplus/stream-faqs) - Answering common questions about streams, covering pagination, events, and more. 884 | - [Strong Node.js](https://github.com/jesusprubio/strong-node) - Checklist for source code security analysis of a Node.js web service. 885 | 886 | ### Tools 887 | 888 | - [OctoLinker](https://chrome.google.com/webstore/detail/octolinker/jlmafbaeoofdegohdhinkhilhclaklkp) - Chrome extension that linkifies dependencies in package.json, .js, .jsx, .coffee and .md files on GitHub. 889 | - [npm-hub](https://chrome.google.com/webstore/detail/npm-hub/kbbbjimdjbjclaebffknlabpogocablj) - Chrome extension to display npm dependencies at the bottom of a repo's readme. 890 | - [RunKit](http://blog.tonicdev.com/2015/09/30/embedded-tonic.html) - Embed a Node.js environment on any website. 891 | - [RequireBin](http://requirebin.com) - Shareable JavaScript programs powered by npm and browserify. 892 | - [github-npm-stats](https://chrome.google.com/webstore/detail/github-npm-stats/oomfflokggoffaiagenekchfnpighcef) - Chrome extension that displays npm download stats on GitHub. 893 | - [npm semver calculator](https://semver.npmjs.com) - Visually explore what versions of a package a semver range matches. 894 | 895 | ### Community 896 | 897 | - [Gitter](https://gitter.im/nodejs/node) 898 | - [`#node.js` on Freenode](http://webchat.freenode.net/?channels=node.js) 899 | - [Stack Overflow](http://stackoverflow.com/questions/tagged/node.js) 900 | - [Reddit](https://www.reddit.com/r/node) 901 | - [Twitter](https://twitter.com/nodejs) 902 | - [Hashnode](https://hashnode.com/n/nodejs) 903 | - [Discord](https://discordapp.com/invite/96WGtJt) 904 | 905 | ### Miscellaneous 906 | 907 | - [nodebots](http://nodebots.io) - Robots powered by JavaScript. 908 | - [node-module-boilerplate](https://github.com/sindresorhus/node-module-boilerplate) - Boilerplate to kickstart creating a node module. 909 | - [generator-nm](https://github.com/sindresorhus/generator-nm) - Scaffold out a node module. 910 | - [Microsoft Node.js Guidelines](https://github.com/Microsoft/nodejs-guidelines) - Tips, tricks, and resources for working with Node.js on Microsoft platforms. 911 | - [Module Requests & Ideas](https://github.com/sindresorhus/module-requests) - Request a JavaScript module you wish existed or get ideas for modules. 912 | 913 | 914 | ## Related lists 915 | 916 | - [awesome-npm](https://github.com/sindresorhus/awesome-npm) - Resources and tips for using npm. 917 | - [awesome-cross-platform-nodejs](https://github.com/bcoe/awesome-cross-platform-nodejs) - Resources for writing and testing cross-platform code. 918 | 919 | 920 | ## License 921 | 922 | [](https://creativecommons.org/publicdomain/zero/1.0/) 923 | 924 | To the extent possible under law, [Sindre Sorhus](https://sindresorhus.com) has waived all copyright and related or neighboring rights to this work. 925 | --------------------------------------------------------------------------------