Responsible Nguyễn Trung Dũng
Last Update 04/13/2023
Completion Time 3 days 20 hours 1 minute
Members 3
  • 01 Welcome
    • 001 Welcome to the Class!
    • 002 Grab the PDF Guide
  • 02 Installing and Exploring Node.js
    • 003 Section Intro_ Installing and Exploring Node.js
    • 004 Installing Node.js and Visual Studio Code
    • 005 What is Node.js_
    • 006 Why Should I Use Node.js_
    • 007 Your First Node.js Script
  • 03 Node.js Module System (Notes App)
    • 008 Section Intro_ Node.js Module System
    • 009 Importing Node.js Core Modules
    • 010 Importing Your Own Files
    • 011 Importing npm Modules
    • 012 Printing in Color
    • 013 Global npm Modules and nodemon
  • 04 File System and Command Line Args (Notes App)
    • 014 Section Intro_ File System and Command Line Args
    • 015 Getting Input from Users
    • 016 Argument Parsing with Yargs_ Part I
    • 017 Argument Parsing with Yargs_ Part II
    • 018 Storing Data with JSON.en
    • 019 Adding a Note
    • 020 Removing a Note
    • 021 ES6 Aside_ Arrow Functions
    • 022 Refactoring to Use Arrow Functions
    • 023 Listing Notes
    • 024 Reading a Note
  • 05 Debugging Node.js (Notes Apps)
    • 025 Section Intro_ Debugging Node.js
    • 026 Debugging Node.js
    • 027 Error Messages
  • 06 Asynchronous Node.js (Weather App)
    • 028 Section Intro_ Asynchronous Node.js
    • 029 Asynchronous Basics
    • 030 Call Stack, Callback Queue, and Event Loop
    • 031 Making HTTP Requests
    • 032 Customizing HTTP Requests
    • 033 An HTTP Request Challenge
    • 034 Handling Errors
    • 036 Callback Abstraction
    • 037 Callback Abstraction Challenge
    • 038 Callback Chaining
    • 039 ES6 Aside_ Object Property Shorthand and Destructuring
    • 040 Destructuring and Property Shorthand Challenge
    • 041 Bonus_ HTTP Requests Without a Library
    • 035 The Callback Function
  • 07 Web Servers (Weather App)
    • 042 Section Intro_ Web Servers
    • 043 Hello Express!
    • 044 Serving up HTML and JSON
    • 045 Serving up Static Assets
    • 046 Serving up CSS, JS, Images, and More
    • 047 Dynamic Pages with Templating
    • 048 Customizing the Views Directory
    • 049 Advanced Templating
    • 050 404 Pages
    • 051 Styling the Application_ Part I
    • 052 Styling the Application_ Part II
  • 08 Accessing API from Browser (Weather App)
    • 053 Section Intro_ Accessing API from Browser
    • 054 The Query String
    • 055 Building a JSON HTTP Endpoint
    • 056 ES6 Aside_ Default Function Parameters
    • 057 Browser HTTP Requests with Fetch
    • 058 Creating a Search Form
    • 059 Wiring up the User Interface
  • 09 Application Deployment (Weather App)
    • 060 Section Intro_ Application Deployment
    • 061 Joining Heroku and GitHub
    • 062 Version Control with Git
    • 063 Exploring Git
    • 064 Integrating Git
    • 065 Setting up SSH Keys
    • 066 Pushing Code to GitHub
    • 067 Deploying Node.js to Heroku
    • 068 New Feature Deployment Workflow
    • 069 Avoiding Global Modules
  • 10 MongoDB and Promises (Task app)
    • 070 Section Intro_ Databases and Advanced Asynchronous Development
    • 071 MongoDB and NoSQL Databases
    • 072 Installing MongoDB on macOS and Linux
    • 073 Installing MongoDB on Windows.en
    • 074 Installing Database GUI Viewer
    • 075 Connecting and Inserting Documents
    • 076 Inserting Documents
    • 077 The ObjectID.en
    • 078 Querying Documents
    • 079 Promises.en
    • 080 Updating Documents.en
    • 081 Deleting Documents
  • 11 REST APls and Mongoose (Task App)
    • 082 Section Intro_ REST APIs and Mongoose
    • 083 Setting up Mongoose
    • 084 Creating a Mongoose Model
    • 085 Data Validation and Sanitization_ Part I
    • 086 Data Validation and Sanitization_ Part II
    • 087 Structuring a REST API
    • 088 Installing Postman
    • 089 Resource Creation Endpoints_ Part I
    • 090 Resource Creation Endpoints_ Part II
    • 091 Resource Reading Endpoints_ Part I
    • 092 Resource Reading Endpoints_ Part II
    • 093 Promise Chaining
    • 094 Promise Chaining Challenge
    • 095 Async_Await
    • 096 Async_Await_ Part II
    • 097 Integrating Async_Await
    • 098 Resource Updating Endpoints_ Part I
    • 099 Resource Updating Endpoints_ Part II
    • 100 Resource Deleting Endpoints
    • 101 Separate Route Files
  • 12 API Authentication and Security (Task App)
    • 102 Section Intro_ API Authentication and Security
    • 103 Securely Storing Passwords_ Part I
    • 104 Securely Storing Passwords_ Part II
    • 105 Logging in Users
    • 106 JSON Web Tokens
    • 107 Generating Authentication Tokens
    • 108 Express Middleware
    • 109 Accepting Authentication Tokens.en
    • 110 Advanced Postman
    • 111 Logging Out
    • 112 Hiding Private Data
    • 113 Authenticating User Endpoints
    • 113 Authenticating User Endpoints
    • 115 Authenticating Task Endpoints
    • 116 Cascade Delete Tasks
  • 13 Sorting, Pagination, and Filtering (Task App)
    • 117 Section Intro_ Sorting, Pagination, and Filtering
    • 118 Working with Timestamps
    • 119 Filtering Data
    • 120 Paginating Data
    • 121 Sorting Data
  • 14 File Uploads (Task App)
    • 122 Section Intro_ File Uploads
    • 123 Adding Support for File Uploads
    • 124 Validating File Uploads
    • 125 Validation Challenge
    • 126 Handling Express Errors
    • 127 Adding Images to User Profile
    • 128 Serving up Files
    • 129 Auto-Cropping and Image Formatting
  • 15 Sending Emails (Task App)
    • 130 Section Intro_ Sending Emails
    • 131 Exploring SendGrid
    • 132 Sending Welcome and Cancelation Emails
    • 133 Environment Variables
    • 134 Creating a Production MongoDB Database
    • 135 Heroku Deployment
  • 16 Testing Node.js (Task App)
    • 136 Section Intro_ Testing Node.js
    • 137 Jest Testing Framework
    • 138 Writing Tests and Assertions.en
    • 139 Writing Your Own Tests
    • 140 Testing Asynchronous Code
    • 141 Testing an Express Application_ Part I
    • 142 Testing an Express Application_ Part II
    • 143 Jest Setup and Teardown.en
    • 144 Testing with Authentication
    • 145 Advanced Assertions
    • 146 Mocking Libraries
    • 147 Wrapping up User Tests.en
    • 148 Setup Task Test Suite
    • 149 Testing with Task Data.en
    • 150 Bonus_ Extra Test Ideas
  • 17 Real-Time Web Applications with Socket.io (Chat App)
    • 151 Section Intro_ Real-Time Web Applications with Socket.io
    • 152 Creating the Chat App Project
    • 153 WebSockets
    • 154 Getting Started with Socket.io
    • 155 Socket.io Events
    • 156 Socket.io Events Challenge
    • 157 Broadcasting Events
    • 158 Sharing Your Location
    • 159 Event Acknowledgements
    • 160 Form and Button States
    • 161 Rendering Messages
    • 162 Rendering Location Messages
    • 163 Working with Time
    • 164 Timestamps for Location Messages
    • 165 Styling the Chat App
    • 166 Join Page
    • 167 Socket.io Rooms
    • 168 Storing Users_ Part I
    • 169 Storing Users_ Part II
    • 170 Tracking Users Joining and Leaving
    • 171 Sending Messages to Rooms
    • 172 Rendering User List
    • 173 Automatic Scrolling
    • 174 Deploying the Chat Application
  • 18 Wapping Up
    • 175 Section Intro
    • 176 New Feature Ideas
    • 177 Bonus_ What should I learn next_