Node.js Nights Course
This repository contains resources from STRV Node.js Nights course. Here is the list of covered topics:
1. JavaScript
2. Node.js introduction
3. NPM, TCP & HTTP servers, REST API
4. Koa
5. Errors, validation, Docker
6. PG client, sequelize ORM
7. Password hashing, tests, tests coverage
8. Deployment
9. Workers
Links:
Slides from lectures
Project repository
List of packages:
REST API
Library |
Desciption |
koa |
Main framework for building REST APIs. |
koa-body |
Koa middleware for parsing request bodies. |
kcors |
Koa middleware which allows setup of access control headers. |
koa-compose |
Koa helper to compose multiple middleware functions into one. |
koa-router |
Koa package for REST API routes definition. |
koa-static2 |
Package for static files serving. |
koa-compress |
Koa package for request/response compression. |
express |
Koa framework alternative. |
hapi |
Koa framework alternative. |
Data validation
Library |
Desciption |
joi |
Popular validation library. |
ajv |
Claimed to be the fastest validation library, uses JSON schema. |
jsonschema |
Another validation library which uses JSON schema. |
Logging
Library |
Desciption |
bunyan |
Very popular logging library, it allows sending logs to multiple output streams. |
pino |
Logging library with the same API as bunyan. It is claimed to be much faster than other logging libraries. |
Authorization & hashing
Library |
Desciption |
jsonwebtoken |
Library generating JSON web tokens. |
bcrypt |
Most popular library for password hahing. |
Databases
Library |
Desciption |
pg |
Client for the Postgres database. |
pg-promise |
pg package wrapper adding Promise interface. |
sequelize |
Very popular ORM for Postgres, MySql and other SQL databases. |
objection |
Alternative to sequelize package. |
mongodb |
Official Node.js client for MongoDB. |
mongoose |
MongoDB ORM library. |
Tests
Library |
Desciption |
mocha |
Favorite test runner. |
mocha-http-detect |
Mocha addon to detect whether tests are sending request to external systems. |
chai |
Probably the most favorite assertion library (use expect syntax). |
dirty-chai |
Library which converts chai property access assertions to method calls. |
chai-as-promised |
Chai addon adding Promise assertions. |
chai-shallow-deep-equal |
Chai addon adding assertion for shalow comparison of two objects keys and values. |
tape |
Another tests runner, mocha alternative. |
jest |
Tests runner from Facebook, very popular on frontend but it can be used on backend too. |
ava |
Another tests runner, mocha alternative. |
sinon |
Popular mocking library. |
sinon-chai |
Chai addon adding assertions on sinon stubs and mocks. |
supertest-koa-agent |
Package that can start Koa app instance and send requests to it. |
chance |
Package for fake data generating. |
faker |
Package for fake data generating. |
Tests coverage
Library |
Desciption |
istanbul |
Tests coverage generator. |
nyc |
Istanbul's wrapper. |
Server monitoring
Library |
Desciption |
newrelic |
Nice easy-to-use package for server monitoring. |
Queues
Library |
Desciption |
bull |
Easy-to-use package for queues (uses Redis). |
amqplib |
RabbitMQ queue client. |
Image resizing
Library |
Desciption |
sharp |
Nice package for image resizing. |
Sending emails
Library |
Desciption |
nodemailer |
Supports all kinds of email providers. |
sendgrid-mailer |
Sendgrid client, wrapper of the sendgrid package. |
Payments
Library |
Desciption |
stripe |
Stripe payment system client. |
braintree |
Braintree payment system client. |
iap |
In-app purchases validation. |
Other
Library |
Desciption |
uuid |
Unique identifier generator. |
lodash |
Package with all kinds of utilities on JavaScript objects and collections. |
request |
Allows sending HTTP requests. |
request-promise |
Wrapper of the request package adding Promise interface. |
twilio |
Twilio client, allows sending SMS. |
bluebird |
Promise implementation. Requires less memory than native Promise, adds bunch of useful methods. |
xml2js |
Package for generating and parsing XML data (if you really have to). |
cheerio |
Package for web scraping. |
dotenv |
Package allowing loading configuration of process.env variables from .env file. |
moment |
Date manipulation. |
nodestream |
File uploads/downloads. |
randomstring |
Random string generator. |
shortid |
Short ID generator. |
async |
Async control flow (run functions is parallel, series, iterations, simple workers etc.). |
Other resources: