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
Slides from lectures
Project repository
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. |
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. |
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. |
Library | Desciption |
---|---|
jsonwebtoken | Library generating JSON web tokens. |
bcrypt | Most popular library for password hahing. |
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. |
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. |
Library | Desciption |
---|---|
istanbul | Tests coverage generator. |
nyc | Istanbul's wrapper. |
Library | Desciption |
---|---|
newrelic | Nice easy-to-use package for server monitoring. |
Library | Desciption |
---|---|
bull | Easy-to-use package for queues (uses Redis). |
amqplib | RabbitMQ queue client. |
Library | Desciption |
---|---|
sharp | Nice package for image resizing. |
Library | Desciption |
---|---|
nodemailer | Supports all kinds of email providers. |
sendgrid-mailer | Sendgrid client, wrapper of the sendgrid package. |
Library | Desciption |
---|---|
stripe | Stripe payment system client. |
braintree | Braintree payment system client. |
iap | In-app purchases validation. |
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.). |