Skip to content

Node Lessons are a series of exercises aimed to learn the basics of NodeJs and Express.

License

Notifications You must be signed in to change notification settings

micheleangioni/node-lessons

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Node Lessons

Node Lessons is a series of exercises aimed to learn the basics of NodeJs and Express.

Introduction

Even for experienced Javascript programmers, learning the basics of NodeJs can be tough. The number of guides, tutorials and articles can be overwhelming and, even though after years of crazy and almost hysteric development NodeJs has entered a more mature era of its life, the number of libraries, plugins and frameworks to choose from can leave new users quite disorient.

These lessons act as a guide aimed to explore the potential of Express, the most used framework to build Web Back-ends with NodeJs. Since its low level nature, it will soon become important to rely on various external npm packages to avoid drowning in the complexities of low level Javascript.

The target of this course are Javascript programmers of all experience and level. Nevertheless, it is required a certain understanding of several basic Javascript and general concepts, such as:

  • Basic array and object manipulation
  • Promises
  • CommonJs Javascript module format
  • Basic understanding of REST APIs
  • Basic knowledge of MongoDB and Redis

In order to practice with Node Lessons the following software are needed to be installed:

  • NodeJs v8+
  • MongoDB server
  • Redis server

In later lessons, the integration of various Amazon Web Services (AWS) will be presented.

In order to follow these lesson, it is suggested to create a new AWS account to benefit of the initial free tier. Nevertheless, it is possible to incur in some costs (they shouldn't be more than a few euros, if no serious errors are done while experimenting). In any case we do NOT take any responsability for any cost readers could be subject to.

Installation

Just clone the repo and run npm install to install the needed dependencies.

Lessons

The /lessons folder contains the list of lessons of this course. Each lesson contains a readme file with the detailed explanation of the lesson itself and an implemetation of the code required to fulfill the requirements.

Each lesson has an exhaustive description, a list of goals, a list of allowed npm packages, some requirements and a few suggestions.

Moreover, each lesson inherits the goals of all previous lessons, but a completely new list of allowed npm packages and requirements is given.

As a general advice, once understood the mission and the goals of a lesson, try to implement the requirements one by one.

Suggestions can be read before starting to code or only after getting stuck, it is up to the reader.

Lessons:

Lesson 1: Create a base Github Jobs inspector

Lesson 2: Use 'request-promise' instead of NodeJs' 'https' as HTTP client

Lesson 3: Add an Express Middleware which logs each incoming request

Lesson 4: Use Axios as HTTP client

Lesson 5: Split our single-file application into different modules

Lesson 6: Use Mongoose to connect to a Mongo database

Lesson 7: Build a simple Users REST API

Lesson 8: Add Authentication

Lesson 9: Add a Logout endpoint

Lesson 10: Add Web Sockets with SocketIo

Lesson 11: Create a UserMakeAdmin Cli Command

Lesson 12: Create a socket.io room for Admin Users

Lesson 13: Allow for image profile upload using AWS to store them

Lesson 14: Switch to AWS DynamoDB in place of MongoDB

Lesson 15: Use AWS Lambda to process Admin statistics

Contribution guidelines

Please follow the coding style defined in the .eslintrc.json file.

Pull requests are welcome.

License

Node Lessons is free software distributed under the terms of the MIT license.

About

Node Lessons are a series of exercises aimed to learn the basics of NodeJs and Express.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published