NodeJS - The Complete Guide (incl. MVC, REST APIs, GraphQL)
- Offered byUDEMY
NodeJS - The Complete Guide (incl. MVC, REST APIs, GraphQL) at UDEMY Overview
Duration | 41 hours |
Total fee | ₹12,800 |
Mode of learning | Online |
Difficulty level | Intermediate |
Credential | Certificate |
NodeJS - The Complete Guide (incl. MVC, REST APIs, GraphQL) at UDEMY Highlights
- Compatible on Mobile and TV
- Earn a certificate on successful completion
- Get Full Lifetime Access
- Course Instructor
NodeJS - The Complete Guide (incl. MVC, REST APIs, GraphQL) at UDEMY Course details
- Beginner or advanced web developers who want to dive into backend (server-side) development with NodeJS
- Everyone who's interested in building modern, scalable and high-performing web applications
- Experienced NodeJS developers who want to dive into specific features like using GraphQL with NodeJS
- Work with one of the most in-demand web development programming languages
- Build modern, fast and scalable server-side web applications with NodeJS, databases like SQL or MongoDB and more
- Understand the NodeJS ecosystem and build server-side rendered apps, REST APIs and GraphQL APIs
- Join the most comprehensive Node. Js course on Udemy and learn Node in both a practical as well as theory-based way! Node. Js is probably THE most popular and modern server-side programming language you can dive into these days! Node. Js developers are in high demand and the language is used for everything from traditional web apps with server-side rendered views over REST APIs all the way up to GraphQL APIs and real-time web services . Not to mention its applications in build workflows for projects of all sizes. This course will teach you all of that! From scratch with zero prior knowledge assumed. Though if you do bring some knowledge, you'll of course be able to quickly jump into the course modules that are most interesting to you.
NodeJS - The Complete Guide (incl. MVC, REST APIs, GraphQL) at UDEMY Curriculum
Introduction
Introduction
Introduction
What is Node.js?
Installing Node.js and Creating our First App
Join our Online Learning Community
Installing Node.js and Creating our First App
Understanding the Role & Usage of Node.js
Course Outline
How To Get The Most Out Of The Course
Working with the REPL vs Using FIles
Working with the REPL vs Using FIles
Using the Attached Source Code
Optional: JavaScript - A Quick Refresher
Module Introduction
JavaScript in a Nutshell
Refreshing the Core Syntax
let & const
Understanding Arrow Functions
Working with Objects, Properties & Methods
Arrays & Array Methods
Arrays, Objects & Reference Types
Understanding Spread & Rest Operators
Destructuring
Async Code & Promises
Template Literals
Wrap Up
Useful Resources & Links
Understanding the Basics
Module Introduction
How The Web Works
Creating a Node Server
The Node Lifecycle & Event Loop
Controlling the Node.js Process
Understanding Requests
Sending Responses
Request & Response Headers
Routing Requests
Redirecting Requests
Parsing Request Bodies
Understanding Event Driven Code Execution
Understanding Event Driven Code Execution
Blocking and Non-Blocking Code
Node.js - Looking Behind the Scenes
Using the Node Modules System
Wrap Up
[OPTIONAL] Assignment Solution
Useful Resources & Links
Improved Development Workflow and Debugging
Module Introduction
Understanding NPM Scripts
Installing 3rd Party Packages
Global Features vs Core Modules vs Third-Party Modules
Using Nodemon for Autorestarts
Global & Local npm Packages
Understanding different Error Types
Finding & Fixing Syntax Errors
Dealing with Runtime Errors
Logical Errors
Using the Debugger
Restarting the Debugger Automatically After Editing our App
Debugging Node.js in Visual Studio Code
Changing Variables in the Debug Console
Wrap Up
Useful Resources & Links
Working with Express.js
Module Introduction
What is Express.js?
Installing Express.js
Adding Middleware
How Middleware Works
Express.js - Looking Behind the Scenes
Handling Different Routes
[OPTIONAL] Assignment Solution
Parsing Incoming Requests
Limiting Middleware Execution to POST Requests
Using Express Router
Adding a 404 Error Page
Filtering Paths
Creating HTML Pages
Serving HTML Pages
Returning a 404 Page
Using a Helper Function for Navigation
Styling our Pages
Serving Files Statically
[OPTIONAL] Assignment Solution
Wrap Up
Useful Resources & Links
Working with Dynamic Content & Adding Templating Engines
Module Introduction
Sharing Data Across Requests & Users
Templating Engines - An Overview
Installing & Implementing Pug
Outputting Dynamic Content
Official Pug Docs
Converting HTML Files to Pug
Adding a Layout
Finishing the Pug Template
Avoiding an Error
Working with Handlebars
Converting our Project to Handlebars
Adding the Layout to Handlebars
Working with EJS
Working on the Layout with Partials
Wrap Up
[OPTIONAL] Assignment Solution
Useful Resources & Links
The Model View Controller (MVC)
Module Introduction
What is the MVC?
Adding Controllers
Finishing the Controllers
Adding a Product Model
Storing Data in Files Via the Model
Fetching Data from Files Via the Model
Refactoring the File Storage Code
Wrap Up
Useful Resources & Links
Optional: Enhancing the App
Module Introduction
Creating the Shop Structure
Working on the Navigation
Registering the Routes
Storing Product Data
Displaying Product Data
Editing & Deleting Products
Adding Another Item
Useful Resources & Links
Dynamic Routes & Advanced Models
Module Introduction
Preparations
Applied Changes
Adding the Product ID to the Path
Extracting Dynamic Params
Loading Product Detail Data
Rendering the Product Detail View
Passing Data with POST Requests
Adding a Cart Model
Using Query Params
Pre-Populating the Edit Product Page with Data
Linking to the Edit Page
Editing the Product Data
Adding the Product-Delete Functionality
Deleting Cart Items
Displaying Cart Items on the Cart Page
Deleting Cart Items
Fixing a Delete Product Bug
Wrap Up
Useful Resources & Links
SQL Introduction
Module Introduction
Choosing a Database
NoSQL Introduction
Comparing SQL and NoSQL
Setting Up MySQL
Connecting our App to the SQL Database
Basic SQL & Creating a Table
Retrieving Data
Fetching Products
Fetching Products - Time to Practice
Inserting Data Into the Database
Fetching a Single Product with the "where" Condition
Wrap Up
Useful Resources & Links
Understanding Sequelize
Module Introduction
What is Sequelize?
Connecting to the Database
Defining a Model
Syncing JS Definitions to the Database
Inserting Data & Creating a Product
MUST READ: findById() in Sequelize 5
Retrieving Data & Finding Products
Getting a Single Product with the "where" Condition
Fetching Admin Products
Updating Products
Deleting Products
Creating a User Model
Adding a One-To-Many Relationship
Creating & Managing a Dummy User
Using Magic Association Methods
Fetching Related Products
One-To-Many & Many-To-Many Relations
Creating & Fetching a Cart
Adding New Products to the Cart
Adding Existing Products & Retrieving Cart Items
Deleting Related Items & Deleting Cart Products
Adding an Order Model
Storing Cartitems as Orderitems
Resetting the Cart & Fetching and Outputting Orders
Wrap Up
Useful Resources & Links
Working with NoSQL & Using MongoDB
Module Introduction
What is MongoDB?
Relations in NoSQL
Setting Up MongoDB
Installing the MongoDB Driver
Creating the Database Connection
Finishing the Database Connection
Using the Database Connection
Creating Products
Understanding the MongoDB Compass
Fetching All Products
Fetching a Single Product
Making the "Edit" & "Delete" Buttons Work Again
Working on the Product Model to Edit our Product
Finishing the "Update Product" Code
One Note About Updating Products
Deleting Products
Fixing the "Add Product" Functionality
Creating New Users
Storing the User in our Database
Working on Cart Items & Orders
Adding the "Add to Cart" Functionality
Storing Multiple Products in the Cart
Displaying the Cart Items
Fixing a Bug
Deleting Cart Items
Adding an Order
Adding Relational Order Data
Getting Orders
Removing Deleted Items From the Cart
Wrap Up
Useful Resources & Links
Two Adjustments (behind the scenes)
Working with Mongoose
Module Introduction
What is Mongoose?
Connecting to the MongoDB Server with Mongoose
Creating the Product Schema
Saving Data Through Mongoose
Fetching All Products
Fetching a Single Product
Updating Products
Deleting Products
Adding and Using a User Model
Using Relations in Mongoose
One Important Thing About Fetching Relations
Working on the Shopping Cart
Loading the Cart
Deleting Cart Items
Creating & Getting Orders
Storing All Order Related Data
Clearing the Cart After Storing an Order
Getting & Displaying the Orders
Wrap Up
Useful Resources & Links
Sessions & Cookies
Module Introduction
What is a Cookie?
The Current Project Status
Optional: Creating the Login Form
Adding the Request Driven Login Solution
Setting a Cookie
Manipulating Cookies
Configuring Cookies
What is a Session?
Initializing the Session Middleware
Using the Session Middleware
Using MongoDB to Store Sessions
Sessions & Cookies - A Short Summary
[OPTIONAL] Assignment Solution
Deleting a Cookie
Fixing Some Minor Bugs
Making "Add to Cart" Work Again
Two Tiny Improvements
Wrap Up
Code Adjustments
Code Adjustments
Useful Resources & Links
Adding Authentication
Module Introduction
What is Authentication?
How is Authentication Implemented?
Our Updated Project Status
Implementing an Authentication Flow
Encrypting Passwords
Adding a Tiny Code Improvement
Adding the Signin Functionality
Working on Route Protection
Using Middleware to Protect Routes
Understanding CSRF Attacks
Using a CSRF Token
Adding CSRF Protection
Fixing the Order Button
Providing User Feedback
Optional: Styling Error Messages
Finishing the Flash Messages
Adding Additional Flash Messages
Wrap Up
Useful Resources & Links
Sending Emails
Module Introduction
How Does Sending Emails Work?
Using SendGrid
Using Nodemailer to Send an Email
Potential Limitation for Large Scale Apps
Useful Resources & Links
Advanced Authentication
Module Introduction
Resetting Passwords
Implementing the Token Logic
Creating the Token
Creating the Reset Password Form
Adding Logic to Update the Password
Why we Need Authorization
Adding Authorization
Adding Protection to Post Actions
Why Editing Fails
Wrap Up
Useful Resources & Links
Understanding Validation
Module Introduction
Why Should We Use Validation?
How to Validate Input?
Setup & Basic Validation
Using Validation Error Messages
Built-In & Custom Validators
More Validators
Checking For Field Equality
Adding Async Validation
[OPTIONAL] Assignment Solution
Keeping User Input
Adding Conditional CSS Classes
Adding Validation to Login
Sanitizing Data
Validating Product Addition
Validating Product Editing
Wrap Up
Useful Resources & Links
Error Handling
Module Introduction
Types of Errors & Error Handling
Analyzing the Error Handling in the Current Project
Errors - Some Theory
Throwing Errors in Code
Returning Error Pages
Using the Express.js Error Handling Middleware
Updating the App
Using the Error Handling Middleware Correctly
Status Codes
Available Status Codes
Wrap Up
Useful Resources & Links
File Upload & Download
Module Introduction
Adding a File Picker to the Frontend
Handling Multipart Form Data
Handling File Uploads with Multer
Configuring Multer to Adjust Filename & Filepath
Filtering Files by Mimetype
Storing File Data in the Database
Remove imageUrl from "Add Product"
Serving Images Statically
Downloading Files with Authentication
Setting File Type Headers
Restricting File Access
Streaming Data vs Preloading Data
Using PDFKit for .pdf Generation
Generating .pdf Files with Order Data
Deleting Files
Fixing Invoice Links
Wrap Up
Useful Resources & Links
Adding Pagination
Module Introduction
Adding Pagination Links
Retrieving a Chunk of Data
Skip & Limit with SQL
Preparing Pagination Data on the Server
Adding Dynamic Pagination Buttons
Re-Using the Pagination Logic & Controls
Wrap Up
Useful Resources & Links
Understanding Async Requests
Module Introduction
What are Async Requests?
Adding Client Side JS Code
The JSON Data Format
Sending & Handling Background Requests
Manipulating the DOM
Useful Resources & Links
Adding Payments
Module Introduction
How Payments Work
Adding a Checkout Page
Differing Stripe Integration
Using Stripe in Your App
Migrating Stripe Implementation
Useful Resources & Links
Working with REST APIs - The Basics
Module Introduction
What are REST APIs and why do we use Them?
Accessing Data with REST APIs
Understanding Routing & HTTP Methods
REST APIs - The Core Principles
Creating our REST API Project & Implementing the Route Setup
Sending Requests & Responses and Working with Postman
REST APIs, Clients & CORS Errors
Sending POST Requests
Wrap Up
Useful Resources & Links
Working with REST APIs - The Practical Application
Module Introduction
REST APIs & The Rest Of The Course
Understanding the Frontend Setup
Planning the API
Fetching Lists of Posts
Adding a Create Post Endpoint
Adding Server Side Validation
Setting Up a Post Model
Storing Posts in the Database
Static Images & Error Handling
Fetching a Single Post
Image Names & Windows
Uploading Images
Updating Posts
Deleting Posts
Adding Pagination
Adding a User Model
Adding User Signup Validation
Signing Users Up
How Does Authentication Work?
Starting with User Login
Logging In & Creating JSON Web Tokens (JWTs)
Using & Validating the Token
Adding Auth Middleware to All Routes
Connecting Posts & Users
Adding Authorization Checks
Clearing Post-User Relations
[OPTIONAL] Assignment Solution
Wrap Up
Useful Resources & Links
Understanding Async Await in Node.js
Module Introduction
What is Async Await All About?
Transforming "Then Catch" to "Async Await"
[OPTIONAL] Assignment Solution
The User Name is Missing!
Wrap Up
Useful Resources & Links
Understanding Websockets & Socket.io
Module Introduction
What Are Websockets & Why Would You Use Them?
Websocket Solutions - An Overview
Setting Up Socket.io on the Server
Establishing a Connection From the Client
Identifying Realtime Potential
Sharing the IO Instance Across Files
Synchronizing POST Additions
Fixing a Bug - The Missing Username
Updating Posts On All Connected Clients
Sorting Correctly
Deleting Posts Across Clients
Wrap Up
Useful Resources & Links
Working with GraphQL
Module Introduction
What is GraphQL?
Understanding the Setup & Writing our First Query
Defining a Mutation Schema
Adding a Mutation Resolver & GraphiQL
Adding Input Validation
Handling Errors
Connecting the Frontend to the GraphQL API
Adding a Login Query & a Resolver
Adding Login Functionality
Adding a Create Post Mutation
Extracting User Data From the Auth Token
Sending the "Create Post" Query
Fixing a Bug & Adding New Posts Correctly
Adding a "Get Post" Query & Resolver
Sending "Create Post" and "Get Post" Queries
Adding Pagination
Uploading Images
Fetching the imageUrl
Viewing a Single Post
Updating Posts
Deleting Posts
Adding Posts & Pagination
Managing the User Status
Using Variables
Fixing a Pagination Bug
Wrap Up
Useful Resources & Links
Deploying our App
Module Introduction
Deploying Different Kinds of Apps
Deployment Preparations
Using Environment Variables
Using Production API Keys
Setting Secure Response Headers with Helmet
Compressing Assets
Setting Up Request Logging
More on Logging
Setting Up a SSL Server
Using a Hosting Provider
Understanding the Project & the Git Setup
A Deployment Example with Heroku
Storing User-generated Files on Heroku
Deploying APIs
Useful Resources & Links
Testing Node.js Applications
Module Introduction
What is Testing?
Why & How?
Setup and Writing a First Test
Testing the Auth Middleware
Organizing Multiple Tests
What Not To Test!
Using Stubs
Testing Controllers
Testing Asynchronous Code
Setting up a Testing Database
Testing Code With An Active Database
Cleaning Up
Hooks
Testing Code That Requires Authentication
Wrap Up & Mastering Tests
Useful Resources & Links
Node.js as a Build Tool & Using npm
Module Introduction
npm & Node.js
Using npm
Versioning in package.json
What is a Build Tool?
Using Node.js in Build Processes
Useful Resources & Links
Roundup
Course Roundup
Course Slides
Bonus: More Content!