| route-pattern | /:user_id/:repository |
| route-controller | files |
| route-action | disambiguate |
| fetch-nonce | v2:69fd3ba9-07e4-a720-8c1e-14abf2e883ac |
| current-catalog-service-hash | f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb |
| request-id | D7A4:9D969:1C1ABA1:243CDB5:697FBD88 |
| html-safe-nonce | 4fd9b7a1147ef2c916f4e5b2a2116475dd5c644d44b8aa2eecbf5f19a9b670e0 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEN0E0OjlEOTY5OjFDMUFCQTE6MjQzQ0RCNTo2OTdGQkQ4OCIsInZpc2l0b3JfaWQiOiIxMzk3NTk2MjE5NzQ3ODQzNDY0IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | c0df149a3f0c50b2315b125ca2bcd3dd8f096a1e193e04dd020fb0ed94031a48 |
| hovercard-subject-tag | repository:184535415 |
| github-keyboard-shortcuts | repository,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | // |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/orpms/nodebestpractices |
| twitter:image | https://opengraph.githubassets.com/9590c135651b51b681c04320e697475ee09e2070576f2055908525ace888634c/orpms/nodebestpractices |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/9590c135651b51b681c04320e697475ee09e2070576f2055908525ace888634c/orpms/nodebestpractices |
| og:image:alt | :white_check_mark: The largest Node.js best practices list (April 2019) - orpms/nodebestpractices |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | 60279d4097367e16897439d16d6bbe4180663db828c666eeed2656988ffe59f6 |
| turbo-cache-control | no-preview |
| go-import | github.com/orpms/nodebestpractices git https://github.com/orpms/nodebestpractices.git |
| octolytics-dimension-user_id | 46227983 |
| octolytics-dimension-user_login | orpms |
| octolytics-dimension-repository_id | 184535415 |
| octolytics-dimension-repository_nwo | orpms/nodebestpractices |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | true |
| octolytics-dimension-repository_parent_id | 103633984 |
| octolytics-dimension-repository_parent_nwo | goldbergyoni/nodebestpractices |
| octolytics-dimension-repository_network_root_id | 103633984 |
| octolytics-dimension-repository_network_root_nwo | goldbergyoni/nodebestpractices |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 7c85641c598ad130c74f7bcc27f58575cac69551 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
| Skip to content | https://patch-diff.githubusercontent.com/orpms/nodebestpractices#start-of-content |
|
| https://patch-diff.githubusercontent.com/ |
|
Sign in
| https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2Forpms%2Fnodebestpractices |
| GitHub CopilotWrite better code with AI | https://github.com/features/copilot |
| GitHub SparkBuild and deploy intelligent apps | https://github.com/features/spark |
| GitHub ModelsManage and compare prompts | https://github.com/features/models |
| MCP RegistryNewIntegrate external tools | https://github.com/mcp |
| ActionsAutomate any workflow | https://github.com/features/actions |
| CodespacesInstant dev environments | https://github.com/features/codespaces |
| IssuesPlan and track work | https://github.com/features/issues |
| Code ReviewManage code changes | https://github.com/features/code-review |
| GitHub Advanced SecurityFind and fix vulnerabilities | https://github.com/security/advanced-security |
| Code securitySecure your code as you build | https://github.com/security/advanced-security/code-security |
| Secret protectionStop leaks before they start | https://github.com/security/advanced-security/secret-protection |
| Why GitHub | https://github.com/why-github |
| Documentation | https://docs.github.com |
| Blog | https://github.blog |
| Changelog | https://github.blog/changelog |
| Marketplace | https://github.com/marketplace |
| View all features | https://github.com/features |
| Enterprises | https://github.com/enterprise |
| Small and medium teams | https://github.com/team |
| Startups | https://github.com/enterprise/startups |
| Nonprofits | https://github.com/solutions/industry/nonprofits |
| App Modernization | https://github.com/solutions/use-case/app-modernization |
| DevSecOps | https://github.com/solutions/use-case/devsecops |
| DevOps | https://github.com/solutions/use-case/devops |
| CI/CD | https://github.com/solutions/use-case/ci-cd |
| View all use cases | https://github.com/solutions/use-case |
| Healthcare | https://github.com/solutions/industry/healthcare |
| Financial services | https://github.com/solutions/industry/financial-services |
| Manufacturing | https://github.com/solutions/industry/manufacturing |
| Government | https://github.com/solutions/industry/government |
| View all industries | https://github.com/solutions/industry |
| View all solutions | https://github.com/solutions |
| AI | https://github.com/resources/articles?topic=ai |
| Software Development | https://github.com/resources/articles?topic=software-development |
| DevOps | https://github.com/resources/articles?topic=devops |
| Security | https://github.com/resources/articles?topic=security |
| View all topics | https://github.com/resources/articles |
| Customer stories | https://github.com/customer-stories |
| Events & webinars | https://github.com/resources/events |
| Ebooks & reports | https://github.com/resources/whitepapers |
| Business insights | https://github.com/solutions/executive-insights |
| GitHub Skills | https://skills.github.com |
| Documentation | https://docs.github.com |
| Customer support | https://support.github.com |
| Community forum | https://github.com/orgs/community/discussions |
| Trust center | https://github.com/trust-center |
| Partners | https://github.com/partners |
| GitHub SponsorsFund open source developers | https://github.com/sponsors |
| Security Lab | https://securitylab.github.com |
| Maintainer Community | https://maintainers.github.com |
| Accelerator | https://github.com/accelerator |
| Archive Program | https://archiveprogram.github.com |
| Topics | https://github.com/topics |
| Trending | https://github.com/trending |
| Collections | https://github.com/collections |
| Enterprise platformAI-powered developer platform | https://github.com/enterprise |
| GitHub Advanced SecurityEnterprise-grade security features | https://github.com/security/advanced-security |
| Copilot for BusinessEnterprise-grade AI features | https://github.com/features/copilot/copilot-business |
| Premium SupportEnterprise-grade 24/7 support | https://github.com/premium-support |
| Pricing | https://github.com/pricing |
| Search syntax tips | https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax |
| documentation | https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax |
|
Sign in
| https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2Forpms%2Fnodebestpractices |
|
Sign up
| https://patch-diff.githubusercontent.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&source=header-repo&source_repo=orpms%2Fnodebestpractices |
| Reload | https://patch-diff.githubusercontent.com/orpms/nodebestpractices |
| Reload | https://patch-diff.githubusercontent.com/orpms/nodebestpractices |
| Reload | https://patch-diff.githubusercontent.com/orpms/nodebestpractices |
|
orpms
| https://patch-diff.githubusercontent.com/orpms |
| nodebestpractices | https://patch-diff.githubusercontent.com/orpms/nodebestpractices |
| goldbergyoni/nodebestpractices | https://patch-diff.githubusercontent.com/goldbergyoni/nodebestpractices |
|
Notifications
| https://patch-diff.githubusercontent.com/login?return_to=%2Forpms%2Fnodebestpractices |
|
Fork
2
| https://patch-diff.githubusercontent.com/login?return_to=%2Forpms%2Fnodebestpractices |
|
Star
0
| https://patch-diff.githubusercontent.com/login?return_to=%2Forpms%2Fnodebestpractices |
| twitter.com/nodepractices/ | https://twitter.com/nodepractices/ |
|
CC-BY-SA-4.0 license
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/LICENSE |
|
0
stars
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/stargazers |
|
10.7k
forks
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/forks |
|
Branches
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/branches |
|
Tags
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/tags |
|
Activity
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/activity |
|
Star
| https://patch-diff.githubusercontent.com/login?return_to=%2Forpms%2Fnodebestpractices |
|
Notifications
| https://patch-diff.githubusercontent.com/login?return_to=%2Forpms%2Fnodebestpractices |
|
Code
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices |
|
Pull requests
0
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/pulls |
|
Actions
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/actions |
|
Projects
0
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/projects |
|
Security
0
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/security |
|
Insights
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/pulse |
|
Code
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices |
|
Pull requests
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/pulls |
|
Actions
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/actions |
|
Projects
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/projects |
|
Security
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/security |
|
Insights
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/pulse |
| Branches | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/branches |
| Tags | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/tags |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/branches |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/tags |
| 1,001 Commits | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/commits/master/ |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/commits/master/ |
| .github | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/tree/master/.github |
| .github | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/tree/master/.github |
| .operations | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/tree/master/.operations |
| .operations | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/tree/master/.operations |
| assets | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/tree/master/assets |
| assets | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/tree/master/assets |
| sections | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/tree/master/sections |
| sections | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/tree/master/sections |
| .gitignore | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/.gitignore |
| .gitignore | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/.gitignore |
| .travis.yml | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/.travis.yml |
| .travis.yml | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/.travis.yml |
| LICENSE | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/LICENSE |
| LICENSE | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/LICENSE |
| README.brazilian-portuguese.md | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/README.brazilian-portuguese.md |
| README.brazilian-portuguese.md | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/README.brazilian-portuguese.md |
| README.chinese.md | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/README.chinese.md |
| README.chinese.md | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/README.chinese.md |
| README.korean.md | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/README.korean.md |
| README.korean.md | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/README.korean.md |
| README.md | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/README.md |
| README.md | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/README.md |
| README | https://patch-diff.githubusercontent.com/orpms/nodebestpractices |
| CC-BY-SA-4.0 license | https://patch-diff.githubusercontent.com/orpms/nodebestpractices |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#nodejs-best-practices |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/banner-2.jpg |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-- |
| https://camo.githubusercontent.com/cafcbe9e6591e650c1eb566a75584e2d89e572963c4cd73ac00df941682c3956/68747470733a2f2f696d672e736869656c64732e696f2f62616467652fe29a992532304974656d253230636f756e742532302d2532303832253230426573742532305072616374696365732d626c75652e737667 |
| https://camo.githubusercontent.com/b3fbf1892cb05a45b38480c819edbea671a068f6028a7ceb3ebcbe856f7369c9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f2546302539462539332538352532304c6173742532307570646174652532302d2532304170722532303133253230323031392d677265656e2e737667 |
| https://camo.githubusercontent.com/41a78ed524ad134c7f7ec42c384694c04bca04aad8f7fd982c7e0614f85b8946/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f2025453225394325393425323055706461746564253230466f7225323056657273696f6e2532302d2532304e6f646525323031302e31352e332532304c54532d627269676874677265656e2e737667 |
| https://twitter.com/nodepractices/ |
| @nodepractices | https://twitter.com/nodepractices/ |
| CN | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/README.chinese.md |
| BR | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/README.brazilian-portuguese.md |
| (ES, FR, HE, KR, RU and TR in progress!) | https://patch-diff.githubusercontent.com/orpms/nodebestpractices#translations |
| Steering Committee | https://patch-diff.githubusercontent.com/orpms/nodebestpractices#steering-committee |
| Collaborators | https://patch-diff.githubusercontent.com/orpms/nodebestpractices#collaborators |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#built-and-maintained-by-our-steering-committee-and-collaborators |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#latest-best-practices-and-news |
| Avoid test-fixtures, add data per test | https://github.com/i0natan/nodebestpractices#4-testing-and-overall-quality-practices |
| Avoid publishing secrets to the npm registry | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/avoid_publishing_secrets.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/flags/BR.png |
| Brazilian Portuguese | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/README.brazilian-portuguese.md |
| Marcelo Melo | https://github.com/marcelosdm |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#welcome-3-things-you-ought-to-know-first |
| writing guidelines here | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/.operations/writing-guidelines.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#table-of-contents |
| Project Structure Practices (5) | https://patch-diff.githubusercontent.com/orpms/nodebestpractices#1-project-structure-practices |
| Error Handling Practices (11) | https://patch-diff.githubusercontent.com/orpms/nodebestpractices#2-error-handling-practices |
| Code Style Practices (12) | https://patch-diff.githubusercontent.com/orpms/nodebestpractices#3-code-style-practices |
| Testing And Overall Quality Practices (11) | https://patch-diff.githubusercontent.com/orpms/nodebestpractices#4-testing-and-overall-quality-practices |
| Going To Production Practices (18) | https://patch-diff.githubusercontent.com/orpms/nodebestpractices#5-going-to-production-practices |
| Security Practices (25) | https://patch-diff.githubusercontent.com/orpms/nodebestpractices#6-security-best-practices |
| Performance Practices (1) (In Progress️ ✍️) | https://patch-diff.githubusercontent.com/orpms/nodebestpractices#7-performance-best-practices |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#1-project-structure-practices |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-11-structure-your-solution-by-components |
| Read More: structure by components | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/projectstructre/breakintcomponents.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-12-layer-your-components-keep-express-within-its-boundaries |
| Read More: layer your app | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/projectstructre/createlayers.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-13-wrap-common-utilities-as-npm-packages |
| Read More: Structure by feature | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/projectstructre/wraputilities.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-14-separate-express-app-and-server |
| Express | https://expressjs.com/ |
| Read More: separate Express 'app' and 'server' | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/projectstructre/separateexpress.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-15-use-environment-aware-secure-and-hierarchical-config |
| rc | https://www.npmjs.com/package/rc |
| nconf | https://www.npmjs.com/package/nconf |
| config | https://www.npmjs.com/package/config |
| Read More: configuration best practices | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/projectstructre/configguide.md |
| ⬆ Return to top | https://patch-diff.githubusercontent.com/orpms/nodebestpractices#table-of-contents |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#2-error-handling-practices |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-21-use-async-await-or-promises-for-async-error-handling |
| Read More: avoiding callbacks | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/errorhandling/asyncerrorhandling.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-22-use-only-the-built-in-error-object |
| Read More: using the built-in error object | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/errorhandling/useonlythebuiltinerror.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-23-distinguish-operational-vs-programmer-errors |
| Read More: operational vs programmer error | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/errorhandling/operationalvsprogrammererror.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-24-handle-errors-centrally-not-within-an-express-middleware |
| Read More: handling errors in a centralized place | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/errorhandling/centralizedhandling.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-25-document-api-errors-using-swagger-or-graphql |
| Read More: documenting API errors in Swagger or GraphQL | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/errorhandling/documentingusingswagger.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-26-exit-the-process-gracefully-when-a-stranger-comes-to-town |
| Forever | https://www.npmjs.com/package/forever |
| PM2 | http://pm2.keymetrics.io/ |
| Read More: shutting the process | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/errorhandling/shuttingtheprocess.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-27-use-a-mature-logger-to-increase-error-visibility |
| Winston | https://www.npmjs.com/package/winston |
| Bunyan | https://github.com/trentm/node-bunyan |
| Log4js | http://stritti.github.io/log4js/ |
| Read More: using a mature logger | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/errorhandling/usematurelogger.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-28-test-error-flows-using-your-favorite-test-framework |
| Read More: testing error flows | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/errorhandling/testingerrorflows.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-29-discover-errors-and-downtime-using-apm-products |
| Read More: using APM products | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/errorhandling/apmproducts.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-210-catch-unhandled-promise-rejections |
| Read More: catching unhandled promise rejection | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/errorhandling/catchunhandledpromiserejection.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-211-fail-fast-validate-arguments-using-a-dedicated-library |
| Read More: failing fast | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/errorhandling/failfast.md |
| ⬆ Return to top | https://patch-diff.githubusercontent.com/orpms/nodebestpractices#table-of-contents |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#3-code-style-practices |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-31-use-eslint |
| ESLint | https://eslint.org |
| prettier | https://www.npmjs.com/package/prettier |
| beautify | https://www.npmjs.com/package/js-beautify |
| Read More: Using ESLint and Prettier | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/codestylepractices/eslint_prettier.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-32-nodejs-specific-plugins |
| eslint-plugin-node | https://www.npmjs.com/package/eslint-plugin-node |
| eslint-plugin-mocha | https://www.npmjs.com/package/eslint-plugin-mocha |
| eslint-plugin-node-security | https://www.npmjs.com/package/eslint-plugin-security |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-33-start-a-codeblocks-curly-braces-on-the-same-line |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#code-example |
| Read more: "Why do results vary based on curly brace placement?" (StackOverflow) | https://stackoverflow.com/questions/3641519/why-does-a-results-vary-based-on-curly-brace-placement |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-34-dont-forget-the-semicolon |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#code-example-1 |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-35-name-your-functions |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-36-use-naming-conventions-for-variables-constants-functions-and-classes |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#code-example-2 |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-37-prefer-const-over-let-ditch-the-var |
| shouldn't be used in ES6 | https://hackernoon.com/why-you-shouldnt-use-var-anymore-f109a58b9b70 |
| Read more: JavaScript ES6+: var, let, or const? | https://medium.com/javascript-scene/javascript-es6-var-let-or-const-ba58b8dcde75 |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-38-require-modules-first-not-inside-functions |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-39-require-modules-by-folders-opposed-to-the-files-directly |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#code-example-3 |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-310-use-the--operator |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#code-example-4 |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-311-use-async-await-avoid-callbacks |
| Read more: Guide to async await 1.0 | https://github.com/yortus/asyncawait |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-312-use-arrow-function-expressions- |
| Read more: It’s Time to Embrace Arrow Functions | https://medium.com/javascript-scene/familiarity-bias-is-holding-you-back-its-time-to-embrace-arrow-functions-3d37e1a9bb75 |
| ⬆ Return to top | https://patch-diff.githubusercontent.com/orpms/nodebestpractices#table-of-contents |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#4-testing-and-overall-quality-practices |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-41-at-the-very-least-write-api-component-testing |
| Postman | https://www.getpostman.com/ |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-42-include-3-parts-in-each-test-name |
| Read More: Include 3 parts in each test name | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/testingandquality/3-parts-in-name.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-43-detect-code-issues-with-a-linter |
| Section 3 | https://github.com/i0natan/nodebestpractices#3-code-style-practices |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-44-avoid-global-test-fixtures-and-seeds-add-data-per-test |
| Read More: Avoid global test fixtures | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/testingandquality/avoid-global-test-fixture.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-45-constantly-inspect-for-vulnerable-dependencies |
| npm audit | https://docs.npmjs.com/cli/audit |
| snyk.io | https://snyk.io |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-46-tag-your-tests |
| Mocha | https://mochajs.org/ |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-47-check-your-test-coverage-it-helps-to-identify-wrong-test-patterns |
| Istanbul/NYC | https://github.com/gotwarlost/istanbul |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-48-inspect-for-outdated-packages |
| npm-check-updates | https://www.npmjs.com/package/npm-check-updates |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-49-use-docker-compose-for-e2e-testing |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-410-refactor-regularly-using-static-analysis-tools |
| Sonarqube | https://www.sonarqube.org/ |
| stars | https://github.com/SonarSource/sonarqube |
| Code Climate | https://codeclimate.com/ |
| stars | https://github.com/codeclimate/codeclimate |
| Read More: Refactoring! | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/testingandquality/refactoring.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-411-carefully-choose-your-ci-platform-jenkins-vs-circleci-vs-travis-vs-rest-of-the-world |
| Jenkins | https://jenkins.io/ |
| CircleCI | https://circleci.com |
| Read More: Choosing CI platform | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/testingandquality/citools.md |
| ⬆ Return to top | https://patch-diff.githubusercontent.com/orpms/nodebestpractices#table-of-contents |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#5-going-to-production-practices |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-51-monitoring |
| Read More: Monitoring! | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/production/monitoring.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-52-increase-transparency-using-smart-logging |
| Read More: Increase transparency using smart logging | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/production/smartlogging.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-53-delegate-anything-possible-eg-gzip-ssl-to-a-reverse-proxy |
| Read More: Delegate anything possible (e.g. gzip, SSL) to a reverse proxy | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/production/delegatetoproxy.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-54-lock-dependencies |
| Read More: Lock dependencies | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/production/lockdependencies.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-55-guard-process-uptime-using-the-right-tool |
| Read More: Guard process uptime using the right tool | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/production/guardprocess.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-56-utilize-all-cpu-cores |
| Read More: Utilize all CPU cores | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/production/utilizecpu.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-57-create-a-maintenance-endpoint |
| Read More: Create a ‘maintenance endpoint’ | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/production/createmaintenanceendpoint.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-58-discover-errors-and-downtime-using-apm-products |
| Read More: Discover errors and downtime using APM products | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/production/apmproducts.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-59-make-your-code-production-ready |
| Read More: Make your code production-ready | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/production/productioncode.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-510-measure-and-guard-the-memory-usage |
| Walmart | https://www.joyent.com/blog/walmart-node-js-memory-leak |
| Read More: Measure and guard the memory usage | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/production/measurememory.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-511-get-your-frontend-assets-out-of-node |
| Read More: Get your frontend assets out of Node | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/production/frontendout.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-512-be-stateless-kill-your-servers-almost-every-day |
| Read More: Be stateless, kill your Servers almost every day | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/production/bestateless.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-513-use-tools-that-automatically-detect-vulnerabilities |
| Read More: Use tools that automatically detect vulnerabilities | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/production/detectvulnerabilities.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-514-assign-a-transaction-id-to-each-log-statement |
| Read More: Assign ‘TransactionId’ to each log statement | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/production/assigntransactionid.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-515-set-node_envproduction |
| Read More: Set NODE_ENV=production | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/production/setnodeenv.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-516-design-automated-atomic-and-zero-downtime-deployments |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-517-use-an-lts-release-of-nodejs |
| Read More: Use an LTS release of Node.js | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/production/LTSrelease.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-518-dont-route-logs-within-the-app |
| Read More: Log Routing | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/production/logrouting.md |
| ⬆ Return to top | https://patch-diff.githubusercontent.com/orpms/nodebestpractices#table-of-contents |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#6-security-best-practices |
| https://camo.githubusercontent.com/06a7004640c6066f8b138350acf4fe351c79d135419d290f7c5ec652004bbcfe/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4f57415350253230546872656174732d546f7025323031302d677265656e2e737667 |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-61-embrace-linter-security-rules |
| https://www.owasp.org/index.php/Top_10-2017_A1-Injection |
| https://www.owasp.org/index.php/Top_10-2017_A7-Cross-Site_Scripting_(XSS) |
| eslint-plugin-security | https://github.com/nodesecurity/eslint-plugin-security |
| Read More: Lint rules | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/lintrules.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-62-limit-concurrent-requests-using-a-middleware |
| https://www.owasp.org/index.php/Denial_of_Service |
| express-rate-limit | https://www.npmjs.com/package/express-rate-limit |
| Read More: Implement rate limiting | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/limitrequests.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-63-extract-secrets-from-config-files-or-use-packages-to-encrypt-them |
| https://www.owasp.org/index.php/Top_10-2017_A6-Security_Misconfiguration |
| https://www.owasp.org/index.php/Top_10-2017_A3-Sensitive_Data_Exposure |
| Read More: Secret management | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/secretmanagement.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-64-prevent-query-injection-vulnerabilities-with-ormodm-libraries |
| https://www.owasp.org/index.php/Top_10-2017_A1-Injection |
| Sequelize | https://github.com/sequelize/sequelize |
| Knex | https://github.com/tgriesser/knex |
| mongoose | https://github.com/Automattic/mongoose |
| Read More: Query injection prevention using ORM/ODM libraries | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/ormodmusage.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-65-collection-of-generic-security-best-practices |
| Read More: Common security best practices | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/commonsecuritybestpractices.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-66-adjust-the-http-response-headers-for-enhanced-security |
| https://www.owasp.org/index.php/Top_10-2017_A6-Security_Misconfiguration |
| helmet | https://www.npmjs.com/package/helmet |
| Read More: Using secure headers in your application | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/secureheaders.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-67-constantly-and-automatically-inspect-for-vulnerable-dependencies |
| https://www.owasp.org/index.php/Top_10-2017_A9-Using_Components_with_Known_Vulnerabilities |
| npm audit | https://docs.npmjs.com/cli/audit |
| snyk | https://snyk.io/ |
| Read More: Dependency security | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/dependencysecurity.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-68-avoid-using-the-nodejs-crypto-library-for-handling-passwords-use-bcrypt |
| https://www.owasp.org/index.php/Top_10-2017_A2-Broken_Authentication |
| Read More: Use Bcrypt | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/bcryptpasswords.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-69-escape-html-js-and-css-output |
| https://www.owasp.org/index.php/Top_10-2017_A7-Cross-Site_Scripting_(XSS) |
| Read More: Escape output | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/escape-output.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-610-validate-incoming-json-schemas |
| https://www.owasp.org/index.php/Top_10-2017_A7-Cross-Site_Scripting_(XSS) |
| https://www.owasp.org/index.php/Top_10-2017_A8-Insecure_Deserialization |
| jsonschema | https://www.npmjs.com/package/jsonschema |
| joi | https://www.npmjs.com/package/joi |
| Read More: Validate incoming JSON schemas | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/validation.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-611-support-blacklisting-jwts |
| https://www.owasp.org/index.php/Top_10-2017_A2-Broken_Authentication |
| Passport.js | https://github.com/jaredhanson/passport |
| Read More: Blacklist JSON Web Tokens | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/expirejwt.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-612-prevent-brute-force-attacks-against-authorization |
| https://www.owasp.org/index.php/Top_10-2017_A2-Broken_Authentication |
| Read More: Login rate limiting | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/login-rate-limit.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-613-run-nodejs-as-non-root-user |
| https://www.owasp.org/index.php/Top_10-2017_A5-Broken_Access_Control |
| Read More: Run Node.js as non-root user | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/non-root-user.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-614-limit-payload-size-using-a-reverse-proxy-or-a-middleware |
| https://www.owasp.org/index.php/Top_10-2017_A8-Insecure_Deserialization |
| https://www.owasp.org/index.php/Top_10-2017_A1-Injection |
| express body parser | https://github.com/expressjs/body-parser |
| Read More: Limit payload size | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/requestpayloadsizelimit.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-615-avoid-javascript-eval-statements |
| https://www.owasp.org/index.php/Top_10-2017_A7-Cross-Site_Scripting_(XSS) |
| https://www.owasp.org/index.php/Top_10-2017_A1-Injection |
| https://www.owasp.org/index.php/Top_10-2017_A4-XML_External_Entities_(XXE) |
| Read More: Avoid JavaScript eval statements | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/avoideval.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-616-prevent-evil-regex-from-overloading-your-single-thread-execution |
| https://www.owasp.org/index.php/Denial_of_Service |
| validator.js | https://github.com/chriso/validator.js |
| safe-regex | https://github.com/substack/safe-regex |
| Read More: Prevent malicious RegEx | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/regex.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-617-avoid-module-loading-using-a-variable |
| https://www.owasp.org/index.php/Top_10-2017_A7-Cross-Site_Scripting_(XSS) |
| https://www.owasp.org/index.php/Top_10-2017_A1-Injection |
| https://www.owasp.org/index.php/Top_10-2017_A4-XML_External_Entities_(XXE) |
| Eslint-plugin-security | https://www.npmjs.com/package/eslint-plugin-security |
| Read More: Safe module loading | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/safemoduleloading.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-618-run-unsafe-code-in-a-sandbox |
| https://www.owasp.org/index.php/Top_10-2017_A7-Cross-Site_Scripting_(XSS) |
| https://www.owasp.org/index.php/Top_10-2017_A1-Injection |
| https://www.owasp.org/index.php/Top_10-2017_A4-XML_External_Entities_(XXE) |
| Read More: Run unsafe code in a sandbox | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/sandbox.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-619-take-extra-care-when-working-with-child-processes |
| https://www.owasp.org/index.php/Top_10-2017_A7-Cross-Site_Scripting_(XSS) |
| https://www.owasp.org/index.php/Top_10-2017_A1-Injection |
| https://www.owasp.org/index.php/Top_10-2017_A4-XML_External_Entities_(XXE) |
| Read More: Be cautious when working with child processes | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/childprocesses.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-620-hide-error-details-from-clients |
| https://www.owasp.org/index.php/Top_10-2017_A6-Security_Misconfiguration |
| Read More: Hide error details from client | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/hideerrors.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-621-configure-2fa-for-npm-or-yarn |
| https://www.owasp.org/index.php/Top_10-2017_A6-Security_Misconfiguration |
| Have you heard about the eslint developer who's password was hijacked? | https://medium.com/@oprearocks/eslint-backdoor-what-it-is-and-how-to-fix-the-issue-221f58f1a8c8 |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-622-modify-session-middleware-settings |
| https://www.owasp.org/index.php/Top_10-2017_A6-Security_Misconfiguration |
| Read More: Cookie and session security | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/sessions.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-623-avoid-dos-attacks-by-explicitly-setting-when-a-process-should-crash |
| https://www.owasp.org/index.php/Denial_of_Service |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-624-prevent-unsafe-redirects |
| https://www.owasp.org/index.php/Top_10-2017_A1-Injection |
| Read More: Prevent unsafe redirects | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/saferedirects.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-625-avoid-publishing-secrets-to-the-npm-registry |
| https://www.owasp.org/index.php/Top_10-2017_A6-Security_Misconfiguration |
| Read More: Avoid publishing secrets | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/security/avoid_publishing_secrets.md |
| ⬆ Return to top | https://patch-diff.githubusercontent.com/orpms/nodebestpractices#table-of-contents |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#7-performance-best-practices |
| Would you like to join? | https://github.com/i0natan/nodebestpractices/issues/256 |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#our-contributors-are-working-on-this-section-would-you-like-to-join |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/checkbox-small-blue.png |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#-71-prefer-native-js-methods-over-user-land-utils-like-lodash |
| Read More: Native over user land utils | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/sections/performance/nativeoverutil.md |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#milestones |
| milestones | https://github.com/i0natan/nodebestpractices/milestones |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#translations |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#completed-translations |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/flags/BR.png |
| Brazilian Portuguese | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/README.brazilian-portuguese.md |
| Marcelo Melo | https://github.com/marcelosdm |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/flags/CN.png |
| Chinese | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/README.chinese.md |
| Matt Jin | https://github.com/mattjin |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#translations-in-progress |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/flags/FR.png |
| French | https://github.com/gaspaonrocks/nodebestpractices/blob/french-translation/README.french.md |
| Discussion | https://github.com/i0natan/nodebestpractices/issues/129 |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/flags/HE.png |
| Discussion | https://github.com/i0natan/nodebestpractices/issues/156 |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/flags/KR.png |
| Korean | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/README.korean.md |
| Sangbeom Han | https://github.com/uronly14me |
| Discussion | https://github.com/i0natan/nodebestpractices/issues/94 |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/flags/RU.png |
| Russian | https://github.com/i0natan/nodebestpractices/blob/russian-translation/README.russian.md |
| Discussion | https://github.com/i0natan/nodebestpractices/issues/105 |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/flags/ES.png |
| Spanish | https://github.com/i0natan/nodebestpractices/blob/spanish-translation/README.spanish.md |
| Discussion | https://github.com/i0natan/nodebestpractices/issues/95 |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/flags/TR.png |
| Discussion | https://github.com/i0natan/nodebestpractices/issues/139 |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#steering-committee |
| Github projects | https://github.com/i0natan/nodebestpractices/projects |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/members/yoni.png |
| Yoni Goldberg | https://github.com/i0natan |
| https://twitter.com/goldbergyoni |
| https://goldbergyoni.com |
| goldbergyoni.com | https://goldbergyoni.com |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/members/bruno.png |
| Bruno Scheufler | https://github.com/BrunoScheufler |
| https://brunoscheufler.com/ |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/members/kyle.png |
| Kyle Martin | https://github.com/js-kyle |
| https://twitter.com/kylemartin_93 |
| https://www.linkedin.com/in/kylemartinnz |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/assets/images/members/sagir.png |
| Sagir Khan | https://github.com/sagirk |
| https://twitter.com/sagir_k |
| https://sagirk.com |
| https://linkedin.com/in/sagirk |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#collaborators |
| contributor guidelines | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/blob/master/.operations/CONTRIBUTING.md |
| https://github.com/idori |
| https://github.com/TheHollidayInn |
| Ido Richter (Founder) | https://github.com/idori |
| Keith Holliday | https://github.com/TheHollidayInn |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#past-collaborators |
| https://github.com/refack |
| Refael Ackermann | https://github.com/refack |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#thank-you-notes |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#flowers |
| Kevin Rambaud | https://github.com/kevinrambaud |
| Michael Fine | https://github.com/mfine15 |
| Shreya Dahal | https://github.com/squgeim |
| ChangJoo Park | https://github.com/ChangJoo-Park |
| Matheus Cruz Rocha | https://github.com/matheusrocha89 |
| Yog Mehta | https://github.com/BitYog |
| Kudakwashe Paradzayi | https://github.com/kudapara |
| t1st3 | https://github.com/t1st3 |
| mulijordan1976 | https://github.com/mulijordan1976 |
| Matan Kushner | https://github.com/matchai |
| Fabio Hiroki | https://github.com/fabiothiroki |
| James Sumners | https://github.com/jsumners |
| Chandan Rai | https://github.com/crowchirp |
| Dan Gamble | https://github.com/dan-gamble |
| PJ Trainor | https://github.com/trainorpj |
| Remek Ambroziak | https://github.com/reod |
| Yoni Jah | https://github.com/yonjah |
| Misha Khokhlov | https://github.com/hazolsky |
| Evgeny Orekhov | https://github.com/EvgenyOrekhov |
| Gediminas Petrikas | https://github.com/gediminasml |
| Isaac Halvorson | https://github.com/hisaac |
| Vedran Karačić | https://github.com/vkaracic |
| lallenlowe | https://github.com/lallenlowe |
| Nathan Wells | https://github.com/nwwells |
| Paulo Vítor S Reis | https://github.com/paulovitin |
| syzer | https://github.com/syzer |
| David Sancho | https://github.com/davesnx |
| Robert Manolea | https://github.com/pupix |
| Xavier Ho | https://github.com/spaxe |
| Aaron Arney | https://github.com/ocularrhythm |
| Jan Charles Maghirang Adona | https://github.com/septa97 |
| Allen Fang | https://github.com/AllenFang |
| Leonardo Villela | https://github.com/leonardovillela |
| Michal Zalecki | https://github.com/MichalZalecki |
| Chris Nicola | https://github.com/chrisnicola |
| Alejandro Corredor | https://github.com/aecorredor |
| Ye Min Htut | https://github.com/ymhtut |
| cwar | https://github.com/cwar |
| Yuwei | https://github.com/keyfoxth |
| Utkarsh Bhatt | https://github.com/utkarshbhatt12 |
| Duarte Mendes | https://github.com/duartemendes |
| Sagir Khan | https://github.com/sagirk |
| Jason Kim | https://github.com/serv |
| Mitja O. | https://github.com/Max101 |
| Sandro Miguel Marques | https://github.com/SandroMiguel |
| Gabe Kuslansky | https://github.com/GabeKuslansky |
| Ron Gross | https://github.com/ripper234 |
| Valeri Karpov | https://github.com/vkarpov15 |
| Sergio | https://github.com/imsergiobernal |
| Duarte Mendes | https://github.com/duartemendes |
| Nikola Telkedzhiev | https://github.com/ntelkedzhiev |
| Vitor Godoy | https://github.com/vitordagamagodoy |
| Manish Saraan | https://github.com/manishsaraan |
| Sangbeom Han | https://github.com/uronly14me |
| blackmatch | https://github.com/blackmatch |
| Joe Reeve | https://github.com/ISNIT0 |
| Marcelo Melo | https://github.com/marcelosdm |
| Ryan Busby | https://github.com/BusbyActual |
| Iman Mohamadi | https://github.com/ImanMh |
| Remek Ambroziak | https://github.com/reod |
| Sergii Paryzhskyi | https://github.com/HeeL |
| Kapil Patel | https://github.com/kapilepatel |
| 迷渡 | https://github.com/justjavac |
| Hozefa | https://github.com/hozefaj |
| Ethan | https://github.com/el-ethan |
| Sam | https://github.com/milkdeliver |
| Arlind | https://github.com/ArlindXh |
| Teddy Toussaint | https://github.com/ttous |
| Lewis | https://github.com/LewisArdern |
| DouglasMV | https://github.com/DouglasMV |
| Corey Cleary | https://github.com/coreyc |
| Mehmet Perk | https://github.com/mperk |
| Ryan Ouyang | https://github.com/ryanouyang |
| Gabriel Lidenor | https://github.com/GabrielLidenor |
| Roman | https://github.com/animir |
| Francozeira | https://github.com/Francozeira |
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#stars |
| Kyle Martin | https://github.com/js-kyle |
| Keith Holliday | https://github.com/TheHollidayInn |
| Corey Cleary | https://github.com/coreyc |
| Maximilian Berkmann | https://github.com/Berkmann18 |
| DouglasMV | https://github.com/DouglasMV |
| Marcelo Melo | https://github.com/marcelosdm |
| Mehmet Perk | https://github.com/mperk |
| Ryan Ouyang | https://github.com/ryanouyang |
| twitter.com/nodepractices/ | https://twitter.com/nodepractices/ |
|
Readme
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#readme-ov-file |
|
CC-BY-SA-4.0 license
| https://patch-diff.githubusercontent.com/orpms/nodebestpractices#CC-BY-SA-4.0-1-ov-file |
| Please reload this page | https://patch-diff.githubusercontent.com/orpms/nodebestpractices |
|
Activity | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/activity |
|
Custom properties | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/custom-properties |
|
0
stars | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/stargazers |
|
0
watching | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/watchers |
|
2
forks | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/forks |
|
Report repository
| https://patch-diff.githubusercontent.com/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2Forpms%2Fnodebestpractices&report=orpms+%28user%29 |
| Releases | https://patch-diff.githubusercontent.com/orpms/nodebestpractices/releases |
| Packages
0 | https://patch-diff.githubusercontent.com/orgs/orpms/packages?repo_name=nodebestpractices |
|
| https://github.com |
| Terms | https://docs.github.com/site-policy/github-terms/github-terms-of-service |
| Privacy | https://docs.github.com/site-policy/privacy-policies/github-privacy-statement |
| Security | https://github.com/security |
| Status | https://www.githubstatus.com/ |
| Community | https://github.community/ |
| Docs | https://docs.github.com/ |
| Contact | https://support.github.com?tags=dotcom-footer |