Course Highlights
  • Build enterprise level Node applications and deploy to the cloud (AWS)
  • Learn to build secure and performant, large scale applications like a senior backend developer
  • Lead NodeJS projects by making good architecture decisions and helping others on your team
  • Using NodeJS, build production grade apps including REST APIs and GraphQL APIs
  • Work with real life data and SpaceX API to build a NASA launch system, discover new planets that may contain life + other projects
  • Authentication, File I/O, Databases (SQL, MongoDB), Express Framework, Sockets, plus many other important topics a backend developer should know
  • Build a MERN (MongoDb, Express, React, Node) fullstack app and deploy to production
  • Load balancing, Monitoring, CI/CD, and Zero Downtime Deployment
  • Become the top 10% Node Developer. Learn REALLY advanced topics!
  • Focus on security best practices throughout the course so you can be confident with your deployments
  • Master the latest ecosystem of a Backend NodeJS Developer from scratch
Skills you will learn!
Curriculum

9 Topics
Course Outline
Join Our Online Classroom!
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 + Resources
ZTM Resources

11 Topics
OPTIONAL: Installing Node.js
OPTIONAL: Windows Installation Tips
The Node.js Release Cycle
The Node.js REPL
Web Developer Monthly
Setting Up Our Developer Environment
Our First Node.js App
Node.js VS JavaScript
The global Object
Introduction to Backend VS Frontend
Monthly Coding Challenges Free Resources and Guides

17 Topics
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

10 Topics
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
Using index.js
Should We Use index.js?

10 Topics
NPM: The Node Package Manager
Creating Our First NPM Package
Packages And The NPM Registry
Using Third Party Modules
The node_modules Folder
Semantic Versioning
package-lock.json and Versioning
Vulnerabilities In Dependencies
Installing NPM Tools: nodemon
LinkedIn Endorsements

10 Topics
Code For This Section
Exploring Planets With Node
Importing Kepler Space Telescope Data
Setting Up Our CSV Parser
Latest Version of CSV Parser
Streaming Large Data Files
Reading Our Planets Data
Parsing Our Planets Data
Finding Habitable Planets
Exploring Habitable Planets

14 Topics
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

19 Topics
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

30 Topics
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 Launches 1
DELETE /launches: Aborting Launches 2
Updating Our Architecture Diagram
Exercise: Imposter Syndrome

5 Topics
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

16 Topics
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
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

35 Topics
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
Creating and Inserting 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

18 Topics
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

33 Topics
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
Experimenting With Fake Sessions
Wrap Up and Next Steps
Resource: Security Cheat Sheet

16 Topics
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

22 Topics
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
Code For This Section

21 Topics
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
GraphiQL
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

25 Topics
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

5 Topics
Thank You!
Become An Alumni
Learning Guideline
LinkedIn Endorsements
Coding Challenges

25 Topics
Quick Note: Upcoming Videos
Why Deno?
Deno Runtime And V8 Engine
Deno Installation
Quick Note: Installing Deno
MAC/LINUX Installation Tips
WINDOWS Installation Tips
Setting Up Our Developer Environment
Quick Note: Official VS Code Plugin
Our First Deno App
Exercise: Our First Deno App
The Most Important Video
Deno Internals And Architecture
Deno Metrics
Exercise: Deno Architecture
Deno 1.5 Compiler Update
Deno Game Changers
Deno Game Changers 2
Will Deno Kill NodeJS?
Single Executable To Rule Them All
Exciting Times: Deno 1.6
Deno Security
Deno Permissions
Deno Permissions 2
Deno Permissions 3

19 Topics
Quick Note: Upcoming Videos
JavaScript Engine
Exercise: Javascript Engine
Inside the Engine
Exercise: JS Engine For All
Interpreters and Compilers
Inside the V8 Engine
Comparing Other Languages
Writing Optimized Code
WebAssembly
Call Stack and Memory Heap
Stack Overflow
Garbage Collection
Memory Leaks
Single Threaded
Exercise: Issue With Single Thread
Javascript Runtime
Node.js
Recommended Path: Back To Node

11 Topics
Quick Note: Upcoming Videos
Section Overview
Promises
ES8 - Async Await
ES9 (ES2018)
ES9 (ES2018) - Async
Job Queue
Parallel Sequence and Race
ES2020: allSettled()
Threads Concurrency and Parallelism
Recommended Path: Back To Node

7 Topics
Quick Note: Upcoming Videos
Pong Project Overview
JS - Create Canvas
JS - RequestAnimationFrame
JS - Game Over
Code Review
Recommended Path: Back to Sockets

22 Topics
Quick Note: Upcoming Videos
Introduction To TypeScript
Dynamic vs Static Typing
Strongly vs Weakly Typed
Static Typing In JavaScript
Quick Note: Upcoming Videos
OPTIONAL: Installing TypeScript Compiler
OPTIONAL: Installing Node.js + TypeScript
TypeScript
TypeScript 2
TypeScript 3
Resources: TypeScript Types
TypeScript 4
TypeScript 5
TypeScript 6
Resources: Type VS Interface
TypeScript 7
Resources: Type Assertion
TypeScript 8
TypeScript 9
TypeScript 10

22 Topics
Quick Note: Upcoming Videos
Exercise: Building Amazon
Exercise: Building Amazon 2
5 Types Of Databases
Exercise: What Is A Database?
SQL Playground
What Is SQL?
What Is A Query?
Exercise: Setting Up Your First Database
Imperative vs Declarative
History of SQL
Optional: History of SQL Deep Dive
Exercises: The Select Statement
SQL Standards
Tables
Columns
Rows
Primary And Foreign Keys
Relational vs NoSQL PostgreSQL vs MongoDB Databases
Scalability
Sharding
Recommended Path: Back to Node

1 Topic
Special Bonus Lecture

  Write a Review

Complete NodeJS Developer (GraphQL, MongoDB, + more)

Go to Paid Course