strvcom / nodejs-nights-2017

Resources created during Node.js Nights course.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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:

About

Resources created during Node.js Nights course.


Languages

Language:JavaScript 100.0%