Node Lessons is a series of exercises aimed to learn the basics of NodeJs and Express.
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.
Just clone the repo and run npm install
to install the needed dependencies.
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.
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 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
Please follow the coding style defined in the .eslintrc.json
file.
Pull requests are welcome.
Node Lessons is free software distributed under the terms of the MIT license.