Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Zero To Mastery

Complete Node.js Developer

via Zero To Mastery

Overview

Learn Node.js from two industry experts. This is the only Node JS course you need to learn Node, build advanced large-scale apps from scratch, and get hired as a Backend Developer or Node JS Developer this year. Go from Zero to Node Mastery.
  • Build enterprise-level Node applications and deploy to the cloud (AWS)
  • Lead Node JS projects by making good architecture decisions and helping others on your team
  • Work with real-life data and the SpaceX API to build a NASA launch system to discover new planets that may contain life + other projects
  • Build a MERN (MongoDb, Express, React, Node) fullstack app and deploy to production
  • Become a top 10% Node Developer by learning advanced topics most courses don't cover
  • Master the latest ecosystem of a Backend Node JS Developer from scratch
  • Learn to build secure and performant, large-scale applications like a Senior Backend Developer
  • Use Node JS to build production grade apps including REST APIs and GraphQL APIs
  • Authentication, File I/O, Databases (SQL, MongoDB), Express Framework, Sockets, plus many other important topics a Backend Developer should know
  • Load balancing, Monitoring, CI/CD, and Zero Downtime Deployment
  • Learn security best practices throughout the course so you can be confident with your deployments

Syllabus

  •   Introduction
    • Complete Node.js Developer: Zero to Mastery
    • Course Outline
    • Exercise: Meet Your Classmates and Instructor
    • Node.js - How We Got Here
    • Node.js Runtime
    • How To Succeed In The Course
    • Latest Version Of Node.js
    • Course Projects + Code + Cheatsheet
    • Understanding Your Video Player (notes, video speed, subtitles + more)
    • Set Your Learning Streak Goal
  •   Node.js Fundamentals: Foundations and Environment Setup
    • OPTIONAL: Installing Node.js
    • OPTIONAL: Windows Installation Tips
    • Node.js Release Cycle
    • The Node.js REPL
    • Setting Up Our Developer Environment
    • Our First Node App
    • Node.js VS JavaScript
    • The global Object
    • Introduction to Backend VS Frontend
    • Monthly Coding Challenges, Free Resources and Guides
  •   Node.js Fundamentals: Internals
    • What Node.js Includes
    • Node Internals Deep Dive
    • libuv Internals Deep Dive
    • Synchronous vs Asynchronous
    • Asynchronous Callbacks
    • Non-Blocking Input & Output
    • Exercise: Is JavaScript Asynchronous?
    • Multi-Threading, Processes, and Threads
    • Is Node.js Multi-Threaded?
    • The Event Loop
    • Callback Queues
    • Phases of the Event Loop
    • Comparing Node With PHP and Python
    • What Is Node.js Best At?
    • Observer Design Pattern
    • The Node Event Emitter
    • Recommended Path: Asynchronous JavaScript
    • Let's Have Some Fun (+ Free Resources)
  •   Node.js Fundamentals: Module System
    • The require Function
    • Making HTTP Requests
    • Why Use Modules?
    • Creating Our Own Modules
    • Exporting From Modules
    • CommonJS vs ECMAScript Modules
    • Creating Our Own ECMAScript Modules
    • Module Caching
    • Importing Core Modules
    • Using index.js
    • Should We Use index.js?
    • Unlimited Updates
  •   Node.js Fundamentals: Package Management
    • NPM: The Node Package Manager
    • Creating Our First NPM Package
    • Do We Need package.json?
    • Packages And The NPM Registry
    • Using Third Party Modules
    • The node_modules Folder
    • Semantic Versioning
    • package-lock.json and Versioning
    • Vulnerabilities In Dependencies
    • The Node Fetch Function
    • Installing NPM Tools: nodemon
    • Course Check-In
  •   Node.js File I/O - Planets Project
    • Code For This Section
    • Exploring Planets With Node
    • Importing Kepler Space Telescope Data
    • Latest Version of CSV Parser
    • Setting Up Our CSV Parser
    • Streaming Large Data Files
    • Reading Our Planets Data
    • Parsing Our Planets Data
    • Finding Habitable Planets
    • Exploring Habitable Planets
    • Implement a New Life System
  •   Web Servers with Node.js
    • Code For This Section
    • What is a Web Server?
    • Introduction to HTTP Responses and Requests
    • HTTP Requests
    • HTTP Responses
    • Our First Webserver
    • HTTP APIs and Routing
    • Parameterized URLs
    • Same Origin Policy
    • Exercise: Same Origin Policy
    • Cross Origin Resource Sharing (CORS)
    • POSTing Data to the Server
    • Requests and Responses as Streams
    • Web Servers Recap
  •   First Express.js API
    • Code For This Section
    • Why Express?
    • Introduction to Express
    • Express vs Next.js vs Koa
    • Route Parameters
    • Postman and Insomnia
    • Development Dependencies
    • Middleware
    • Writing Our Own Logging Middleware
    • POST Requests in Express
    • Model View Controller (MVC)
    • Model View Controller in Express
    • Express Routers
    • RESTful APIs
    • Create Read Update and Delete (CRUD)
    • Sending Files
    • Serving Websites With Node
    • Templating Engines
    • Layouts and Separation of Concerns
  •   NASA Project
    • Code For This Section
    • Introduction & Architecture
    • NASA Dashboard Front End Setup
    • NASA Dashboard Functionality
    • What You Need To Know
    • React.js Front End Code Walkthrough
    • API Server Setup
    • Environment Variables On Windows
    • GET /planets
    • CORS Middleware
    • Models vs Controllers vs Routers
    • The Planets Model
    • Loading Data On Startup
    • Common Issues With NPM Scripts
    • Automating Full Stack Applications With NPM
    • Serving React.js Front End In Production
    • Setting BUILD_PATH On Windows
    • Logging Requests With Morgan
    • The Launches Model
    • GET /launches
    • Serving Applications With Client Side Routing
    • Working With Data Models: Building a Data Access Layer
    • POST /launches: Creating Launches 1
    • POST /launches: Creating Launches 2
    • POST /launches: Validation For POST Requests
    • Connecting POST /launches With Front End Dashboard
    • DELETE /launches: Aborting a Launch 1
    • DELETE /launches: Aborting a Launch 2
    • Updating Our Architecture Diagram
  •   Testing APIs
    • Testing In Node
    • Testing APIs With Jest
    • Testing API Endpoints With Supertest: GET
    • Testing API Endpoints With Supertest: POST
    • Testing API Endpoints With Supertest: Error Cases
    • Exercise: Imposter Syndrome
  •   Improving Node Performance
    • Code For This Section
    • Node Server Performance
    • Building A Simple Blocking Server
    • Real Life Blocking Functions
    • Running Multiple Node Processes
    • The Node Cluster Module
    • Clustering In Action
    • Naming Updates
    • Operating System Schedulers
    • Maximizing Cluster Performance
    • Load Balancing
    • The PM2 Tool
    • Using PM2 To Create Clusters
    • Managing Live Clusters With PM2
    • Zero Downtime Restart
    • Improving Performance Of Our NASA Project
    • Worker Threads
    • Worker Threads In Action
  •   Databases
    • Introduction to Databases
    • Recommended Path: SQL
    • Comparing SQL vs NoSQL
    • Database Schemas & Schemaless Databases
    • Choosing a Database for our NASA Project
    • SQL vs MongoDB: Trends and Object-Relational Impedance Mismatch
    • SQL vs MongoDB: Schemas, References, and ACID Transactions
    • Setting up MongoDB Atlas
    • Connecting to MongoDB
    • Connecting with the Latest Version of Mongoose
    • Mongoose
    • Creating Mongoose Schema for Launches
    • Exercise: Creating Mongoose Schema for Planets
    • Reminder: Destination Planets Dropdown
    • Creating Models From Schemas
    • Mongoose Models vs MVC Models
    • Inserting And Updating Documents
    • Finding Documents
    • The Upsert Operation
    • Exploring Data Using Atlas
    • Updating Project Architecture
    • ObjectIDs
    • Excluding Fields From The Response
    • Saving Launches
    • Listing All Launches
    • Referential Integrity
    • Auto Increment In MongoDB
    • Getting Latest Flight Number
    • Scheduling New Launches
    • Investigating A Mongoose Mystery
    • Aborting Launches
    • Aborting with the Latest MongoDB Driver
    • Updating Tests For Mongoose 1
    • Updating Tests For Mongoose 2
    • Fixing A Bug In Jest: Open Handles
  •   Working With REST APIs - SpaceX Project
    • Working With SpaceX
    • The SpaceX API
    • Versioning Node APIs
    • Updating Our API Tests
    • Exploring SpaceX Launches API
    • Running Search Queries
    • Loading SpaceX Data In Our API
    • Mapping SpaceX Data To Our Database
    • Using Paginated APIs
    • Minimizing API Load
    • Persisting SpaceX Launches
    • Paginating Our Endpoints 1
    • Paginating Our Endpoints 2
    • Sorting Paginated Data
    • Cleaning Up Launch Data
    • Managing Secrets With Dotenv
    • Running API Tests With Dotenv
    • Securing Leaked Secrets
  •   Node Security + Authentication
    • Code For This Section
    • Security and Authentication Overview
    • Encrypted Connections with SSL and TLS
    • Digital Certificates, Signing, and Man In The Middle Attacks
    • Setting Up Our Security Example
    • HTTPS With Node, Self Signed Certificates, and Public Key Cryptography
    • Helmet.js
    • Authentication vs Authorization
    • Social Sign In
    • API Keys
    • JWT Tokens
    • The OAuth Standard
    • OAuth 2.0 Authorization Code Flow
    • OAuth In Action with Single Sign On
    • Registering with the Google Authorization Server
    • Authentication Endpoints With Middleware
    • Passport.js
    • Dotenv for Client Secrets
    • Authentication With Google And OAuth 1
    • Authentication With Google And OAuth 2
    • Cookie Based Authentication
    • Sessions
    • Server VS Client Side Sessions With Cookies
    • Session Middleware in Express
    • Setting Up OAuth Cookie Session
    • Sessions with the Latest Version of Passport.js
    • Reading and Writing the OAuth Session 1
    • Reading and Writing the OAuth Session 2
    • Restricting Access to Endpoints
    • Implementing Logout
    • Asynchronous Logout
    • Experimenting With Fake Sessions
    • Wrap Up and Next Steps
    • Resource: Security Cheat Sheet
  •   Continuous Integration and Delivery
    • Introduction to CI and CD
    • Continuous Integration
    • Continuous Delivery
    • Continuous Deployment
    • Pipelines
    • GitHub Actions
    • Setting Up GitHub Actions
    • Continuous Integration: Build Pipeline
    • Keeping Our Pipeline Updated
    • Build Pipeline In Action
    • Common Build Pipeline Errors
    • GitHub Actions Marketplace
    • Continuous Integration: Test Pipeline
    • Mocking Out Databases
    • Databases With Continuous Integration
    • Populating Data For Continuous Integration
  •   Node Production and the Cloud (Docker + AWS)
    • Deploying to the Cloud
    • Serverless vs Containers
    • Virtual Machines
    • What is a Container?
    • Installing Docker
    • Running Our first Docker Container
    • Your DockerHub Account
    • Creating a Dockerfile
    • Improving Our Dockerfile With Layers
    • Installing Only Production Dependencies
    • Updating Our API URL
    • Building NASA Project Docker Image
    • Running NASA Project in a Container
    • Pushing Images to Docker Hub
    • Exploring Amazon Web Services
    • Creating an EC2 Instance 1
    • Creating an EC2 Instance 2: Security
    • What is SSH?
    • Connecting To Our EC2 Instance With SSH
    • Setting Up Our EC2 Server
    • Deploying Our NASA API
  •   GraphQL
    • Code For This Section
    • GraphQL Overview
    • Our First GraphQL Query
    • GraphQL Queries In Action
    • GraphQL vs REST: Over-fetching & Under-fetching
    • GraphQL vs REST Summary
    • Exploring GraphQL Implementations
    • GraphQL In Node
    • Working With Deprecated Packages
    • Recommended: Migrating GraphQL Packages
    • GraphiQL
    • Populating E-Commerce Data
    • Designing An E-Commerce Schema
    • GraphQL Tools
    • Modularizing Large GraphQL Projects: Schemas
    • GraphQL Tools Update
    • Resolvers
    • Modularizing Large GraphQL Projects: Resolvers
    • Filtering with Queries and Resolvers
    • Exercise: Query Products By ID
    • Mutations In Action
    • Implementing Mutations on the Server
    • Exercise: Add New Product Review
    • GraphQL With Apollo
    • Building an Apollo Server with Node.js - Part 1
    • Building an Apollo Server with Node.js - Part 2
    • Building an Apollo Server with Node.js - Part 3
  •   Sockets with Node.js
    • Code For This Section
    • Introduction to Sockets
    • Polling
    • What is a Socket?
    • Sockets VS Polling
    • WebSockets
    • Introduction to socket.io
    • socket.io Client and Server APIs
    • Multiplayer Pong Overview
    • Recommended Path: Pong Front End
    • Reviewing Our Pong Front End
    • Multiplayer Pong Message Sequence
    • Setting Up a socket.io Server
    • Connecting to socket.io
    • Handling CORS With Sockets
    • Identifying Connected Clients
    • Listening for Events in the Pong Server
    • Broadcasting Events
    • Handling Events in the Pong Client
    • Implementing the Game Logic: Paddle
    • Implementing the Game Logic: Ball
    • What Happens When You Disconnect?
    • Using Socket.io with Express
    • Namespaces
    • Rooms
  •   Where To Go From Here?
    • Thank You!
    • Review This Course!
    • Become An Alumni
    • Learning Guideline
    • LinkedIn Endorsements
    • Coding Challenges
  •   Bonus: Deno vs Node.js
    • Watch Deno Fundamentals Sections
  •   Appendix: How JavaScript Works
    • Watch JavaScript Foundation Section
    • Recommended Path: Back To Node
  •   Appendix: Asynchronous JavaScript
    • Watch Asynchronous JavaScript Section
    • Recommended Path: Back To Node
  •   Appendix: Pong Front End
    • Watch Building Pong Section
    • Recommended Path: Back to Sockets
  •   Appendix: TypeScript
    • Watch TypeScript Section
  •   Appendix: SQL
    • Watch SQL Sections
    • Recommended Path: Back to Node

Taught by

Adam Odziemkowski and Andrei Neagoie

Reviews

Start your review of Complete Node.js Developer

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.