So, you want to learn Node.js, but you’re fed up of being talked down to?

Too many instructors talk at you like you’ve never programmed before.

I get it…

I’ve been there myself when I was learning Node.js.

It felt like they assumed I was an idiot.

They were too wordy and slow. I ended up watching some tutorials on 2x – I was so bored!

Other instructors gave out-of-date information – the old ways of doing things. There’s nothing worse than paying decent money for a course then regretting it when it doesn’t deliver.

Then there are the instructors who teach you a load of theory (kind of like university lecturers), but there’s nothing hands-on…YAWN! To get good at coding, you have to learn it through practice.

The more practical a course is, the better the learning will stick.

None of the courses out there seemed to be the right fit for me. I had to piece together info from multiple books and training, then come up with my own practical solutions.

It took me much longer than it should have.

That’s why I decided to make a Node.js course that is different.

There’s no B.S.

No waffle. No bumph. No nonsense.

It’s more practical than theoretical.

You'll learn the best practices to apply

...and common mistakes that many Node.js developers make!

Master Node.js

Right from the beginning, you'll jump in and build your first Node.js application within minutes.

  • Node module system
  • Storing complex data in MongoDB
  • Node Package Manager (NPM)
  • Data validation
  • Asynchronous JavaScript
  • Authentication and authorization
  • Building RESTful APIs with Express.js
  • Handling and logging errors
  • Implementing CRUD operations
  • Unit and integration testing

  • Test-driven development (TDD)
  • Deployment

This course is for you if...

You’re a back-end developer who’s used to working with frameworks like 
ASP.NET, Rails, Django, etc. Now, you want to add Node.js to your toolbox.

You’re a front-end developer and want to transition to full-stack development.

Having Node.js on your resume helps you find more jobs and make more money.


You don't need any familiarity with Node, Express or MongoDB. 
You just need some basic familiarity with JavaScript.

Justin Joseph

Justin Joseph

"If you aspire to be a back-end or full-stack JavaScript developer, you can't go wrong having this Node course as a resource. Mosh is an excellent instructor, and his enthusiasm for web technology is infectious. From the basics of how Node works under the hood, to testing your API code, this course delivers great content that will help you land that next career opportunity."
Brian Haller

Brian Haller

"Hi Mosh, I'm really loving your Node and OOP Javascript courses. I’m finally understanding prototypical inheritance and async programming! I'm 8 months into learning how to become a developer, and making very good progress. My previous instruction before your courses on those subjects wasn't thorough enough to be especially useful. I used the supplemental material (the event loop) to understand async and your lessons were very good there as well. The lessons on unit and integration testing are also really beneficial."

Your Instructor

  • Mosh Hamedani

    Software Engineer & Instructor

    Mosh Hamedani

    Hi! My name is Mosh Hamedani. Over the last three years, I've taught over 1M students how to code or how to become a better coder through my online courses and YouTube channel. I've been working as a software engineer for the past 18 years and I love to share my knowledge with you. It’s my mission to make coding accessible to everyone.

Course curriculum

  • 01
    Getting Started
    Show details
    • Welcome
    • What is Node
    • Node Architecture
    • How Node Works
    • Installing Node
    • Your First Node Program
    • Course Structure
    • Recap
  • 02
    Node Module System
    Show details
    • Introduction
    • Global Object
    • Modules
    • Creating a Module
    • Loading a Module
    • Module Wrapper Function
    • Path Module
    • OS Module
    • File System Module
    • Events Module
    • Event Arguments
    • Extending EventEmitter
    • HTTP Module
    • Recap
  • 03
    Node Package Manager (NPM)
    Show details
    • Introduction
    • Package.json
    • Installing a Node Package
    • Using a Package
    • Package Dependencies
    • NPM Packages and Source Control
    • Semantic Versioning
    • Listing the Installed Packages
    • Viewing Registry info for a Package
    • Installing a Specific Version of a Package
    • Updating Local Packages
    • DevDependencies
    • Uninstalling a Package
    • Working with Global Packages
    • Publishing a Package
    • Updating a Published Package
    • Recap
  • 04
    Building RESTful APIs Using Express
    Show details
    • Introduction
    • Express Source
    • RESTful Services
    • Introducing Express
    • Building Your First Web Server
    • Nodemon
    • Environment Variables
    • Route Parameters
    • Handling HTTP GET Requests
    • Handling HTTP POST Requests
    • Calling Endpoints Using Postman
    • Input Validation
    • Handling HTTP PUT Requests
    • Handling HTTP DELETE Requests
    • Project- Build the Genres API
    • Project- Genres Endpoint
    • Recap
  • 05
    Express- Advanced Topics
    Show details
    • Introduction
    • Middleware
    • Creating Custom Middleware
    • Built-in Middleware
    • Third-party Middleware
    • Environments
    • Configuration
    • Debugging
    • Templating Engines
    • Authentication
    • Structuring Express Applications
    • Project- Restructure the App
    • Project- Restructure the App
    • Recap
  • 06
    Asynchronous JavaScript
    Show details
    • Synchronous vs Asynchronous Code
    • Asynchronous JavaScript Source
    • Patterns for Dealing with Asynchronous Code
    • Callbacks
    • Callback Hell
    • Named Functions to Rescue
    • Promises
    • Replacing Callbacks with Promises
    • Replacing Promises
    • Consuming Promises
    • Creating Settled Promises
    • Running Parallel Promises
    • Async and Await
    • Async and Await Source
    • Exercise
  • 07
    CRUD Operations using Mongoose and MongoDB
    Show details
    • Introducing MongoDB
    • Installing MongoDB on Mac
    • Installing MongoDB on Windows
    • Connecting to MongoDB
    • Schemas
    • Models
    • Saving a Document
    • Querying Documents
    • Comparison Query Operators
    • Logical Query Operators
    • Regular Expressions
    • Counting
    • Pagination
    • Exercise 1
    • Exercise 1 Source
    • Exercise 2
    • Exercise 2 Source
    • Exercise 3
    • Exercise 3 Source
    • Updating Documents- Query First
    • Updating a Document- Update First
    • Removing Documents
    • CRUD Operations with Mongoose and MongoDB Recap
  • 08
    Mongoose- Data Validation
    Show details
    • Validation
    • Built-in Validators
    • Custom Validators
    • Async Validators
    • Validation Errors
    • SchemaType Options
    • Project- Add Persistence to Genres API
    • Project - Add Persistence to Genres API Source
    • Project- Build the Customers API
    • Project- Build the Customers API Source
    • Restructuring the Project
    • Project- Restructure the Project Source
    • Recap
  • 09
    Mongoose- Modeling Relationships between Connected Data
    Show details
    • Modeling Relationships
    • Referencing Documents
    • Referencing Documents Source
    • Population
    • Embedding Documents
    • Embedding Documents Source
    • Using an Array of Sub-documents
    • Project- Build the Movies API
    • Project- Build the Movies API Source
    • Project- Build the Rentals API
    • Project- Build the Rentals API
    • Transactions
    • ObjectID
    • Validating ObjectIDs
    • Validating ObjectIDs Source
    • A Better Implementation
    • Recap
  • 10
    Authentication and Authorization
    Show details
    • Introduction
    • Authentication and Authorization Source
    • Creating the User Model
    • Registering Users
    • Using Lodash
    • Hashing Passwords
    • Authenticating Users
    • Testing the Authentication
    • JSON Web Tokens
    • Generating Authentication Tokens
    • Storing Secrets in Environment Variables
    • Setting Response Headers
    • Encapsulating Logic in Mongoose Models
    • Authorization Middleware
    • Protecting Routes
    • Getting the Current User
    • Logging Out Users
    • Role-based Authorization
    • Testing the Authorization
    • Recap
  • 11
    Handling and Logging Errors
    Show details
    • Introduction
    • Handling and Logging Errors Source
    • Handling Rejected Promises
    • Express Error Middleware
    • Removing Try_Catch Blocks
    • Express Async Errors
    • Logging Errors
    • Logging to MongoDB
    • Uncaught Exceptions
    • Unhandled Promise Rejections
    • Error Handling Recap
    • Refactoring Index.js- Extracting Routes
    • Extracting the Db Logic
    • Logging
    • Config
    • Validation
    • Showing Unhandled Exceptions on the Console
    • Recap
  • 12
    Unit Testing
    Show details
    • What is Automated Testing
    • Unit Testing Source
    • Benefits of Automated Testing
    • Types of Tests
    • Test Pyramid
    • Tooling
    • Writing Your First Unit Test
    • Testing Numbers
    • Grouping Tests
    • Refactoring with Confidence
    • Testing Strings
    • Testing Objects
    • Testing Exceptions
    • Continuously Running Tests
    • Exercise- Testing the FizzBuz
    • Creating Simple Mock Functions
    • Interaction Testing
    • Jest Mock Functions
    • What to Unit Test
    • Exercise
    • Recap
  • 13
    Integration Testing
    Show details
    • Introduction to Integration Testing
    • Integration Testing Source
    • Preparing the App
    • Setting Up the Test Db
    • Your First Integration Test
    • Populating the Test Db
    • Testing Routes with Parameters
    • Validating ObjectIDs
    • Refactoring with Confidence
    • Testing the Authorization
    • Testing Invalid Inputs
    • Testing the Happy Path
    • Writing Clean Tests
    • Testing the Auth Middleware
    • Code Coverage
    • Exercise
    • Integration Testing Recap
  • 14
    Test-driven Development
    Show details
    • What is Test-driven Development
    • Test-driven Development Source
    • Implementing the Returns
    • Test Cases
    • Populating the Database
    • Testing the Authorization
    • Testing the Input
    • Refactoring Tests
    • Looking Up an Object
    • Testing if Rental Processed
    • Testing the Valid Request
    • Testing the ReturnDate
    • Testing the RentalFee
    • Testing the Movie Stock
    • Testing the Response
    • Refactoring the Validation Logic
    • Mongoose Static Methods
    • Refactoring the Domain Logic
  • 15
    Show details
    • Introduction
    • Deployment Source
    • Preparing the App for Production
    • Getting Started with Heroku
    • Preparing the App for Deployment
    • Adding the Code to a Git Repository
    • Deploying to Heroku
    • Viewing Logs
    • Setting Environment Variables
    • MongoDB in the Cloud

Frequently Asked Questions

  • When does the course start and finish?

    The course starts now and never ends! It is a completely self-paced online course - you decide when you start and when you finish.

  • How long do I have access to the course?

    How does lifetime access sound? After enrolling, you have unlimited access to this course for as long as you like - across any and all devices you own.

  • What if I am unhappy with the course?

    We would never want you to be unhappy! If you are unsatisfied with your purchase, contact us in the first 10 days and we will give you a full refund.

Do you want to become a Node rockstar?

Stop wasting your time jumping from one tutorial to another. Enroll in the course to get:

  • Unlimited access
  • Downloadable source code
  • Learn at your own pace
  • Watch on any devices
  • Certificate of completion

  • 15 hours of HD videos
  • Exercises and solutions
  • Little known expert tips
  • Best practices to apply
  • Common mistakes to avoid