NodeJS - The Complete Guide (incl. Deno.js, REST APIs, GraphQL)
Master Node JS, build REST APIs with Node.js, GraphQL APIs, add Authentication, use MongoDB, SQL & much more!
Start course---
This course was updated to also include sections on Deno.js.
---
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.
Here's what you'll learn in this course:
- Node.js Basics & Basic Core Modules
- Parsing Requests & Sending Responses
- Rendering HTML Dynamically (on the Server)
- Using Express.js
- Working with Files and generating PDFs on the Server (on-the-fly)
- File Up- and Download
- Using the Model-View-Controller (MVC) Pattern
- Using Node.js with SQL (MySQL) and Sequelize
- Using Node.js with NoSQL (MongoDB) and Mongoose
- Working with Sessions & Cookies
- User Authentication and Authorization
- Sending E-Mails
- Validating User Input
- Data Pagination
- Handling Payments with Stripe.js
- Building REST APIs
- Authentication in REST APIs
- File Upload in REST APIs
- Building GraphQL APIs
- Authentication in GraphQL APIs
- File Upload in GraphQL APIs
- Building a Realtime Node.js App with Websockets
- Automated Testing (Unit Tests)
- Deploying a Node.js Application
- And Way More!
Does this look like a lot of content? It certainly is!
This is not a short course but it is the "Complete Guide" on Node.js after all. We'll dive into a lot of topics and we'll not just scratch the surface.
We'll also not just walk through boring theory and some slides. Instead, we'll build two major projects: An online shop (including checkout + payments) and a blog.
All topics and features of the course will be shown and used in these projects and you'll therefore learn about them in a realistic environment.
Is this course for you?
If you got no Node.js experience, you'll love this course because it starts with zero knowledge assumed. It's the perfect course to become a Node.js developer.
If you got basic Node.js experience, this course is also a perfect match because you can go through the basic modules quickly and you'll benefit from all the deep dives and advanced topics the course covers.
Are you an advanced Node.js user ? Check the curriculum then. Maybe you found no other course that shows how to use SQL with Node.js. Or you're interested in GraphQL. Chances are, that you'll get a lot of value out of this course, too!
Course content
Section 1Getting Started
- Introduction1:55
- What is Node.js?4:42
- Installing Node.js and Creating our First App7:41
- Join our Online Learning Community1:00
- Understanding the Role & Usage of Node.js7:32
- Course Outline7:31
- How To Get The Most Out Of The Course3:54
- Working with the REPL vs Using FIles2:58
- Using the Attached Source Code1:00
Section 2Optional: JavaScript - A Quick Refresher
- Module IntroductionPremium1:36
- JavaScript in a NutshellPremium2:35
- Refreshing the Core SyntaxPremium4:34
- let & constPremium2:27
- Understanding Arrow FunctionsPremium5:17
- Working with Objects, Properties & MethodsPremium3:19
- Arrays & Array MethodsPremium4:16
- Arrays, Objects & Reference TypesPremium2:13
- Understanding Spread & Rest OperatorsPremium6:40
- DestructuringPremium5:37
- Async Code & PromisesPremium10:28
- Template LiteralsPremium1:00
- Wrap UpPremium0:50
- Useful Resources & LinksPremium1:00
Section 3Understanding the Basics
- Module IntroductionPremium1:50
- How The Web Works4:11
- Creating a Node Server13:22
- The Node Lifecycle & Event Loop4:53
- Understanding RequestsPremium3:10
- Sending ResponsesPremium5:37
- Controlling the Node.js ProcessPremium1:00
- Routing RequestsPremium5:48
- Redirecting RequestsPremium4:10
- Parsing Request BodiesPremium11:12
- Understanding Event Driven Code ExecutionPremium6:00
- Blocking and Non-Blocking CodePremium5:04
- Node.js - Looking Behind the ScenesPremium12:01
- Using the Node Modules SystemPremium10:05
- Wrap UpPremium5:15
- Assignment - Basics (Problem)Premium2:32
- Assignment - Basics (Solution)Premium11:32
- Useful Resources & LinksPremium1:00
Section 4Improved Development Workflow and Debugging
- Module IntroductionPremium0:40
- Understanding NPM ScriptsPremium7:03
- Installing 3rd Party PackagesPremium8:20
- Global Features vs Core Modules vs Third-Party ModulesPremium1:00
- Using Nodemon for AutorestartsPremium1:36
- Global & Local npmPackagesPremium1:00
- Understanding different Error TypesPremium1:49
- Finding & Fixing Syntax ErrorsPremium3:10
- Dealing with Runtime ErrorsPremium2:47
- Logical ErrorsPremium6:32
- Using the DebuggerPremium3:10
- Restarting the Debugger Automatically After Editing our AppPremium6:21
- Changing Variables in the Debug ConsolePremium1:26
- Wrap UpPremium3:14
- Useful Resources & LinksPremium1:00
Section 5Working with Express.js
- Module IntroductionPremium2:15
- What is Express.js?Premium3:43
- Installing Express.jsPremium3:47
- Adding MiddlewarePremium5:13
- How Middleware WorksPremium2:58
- Express.js - Looking Behind the ScenesPremium3:42
- Handling Different RoutesPremium4:59
- Assignment - Express.js (Problem)Premium1:52
- Assignment - Express.js (Solution)Premium6:21
- Parsing Incoming RequestsPremium8:00
- Limiting Middleware Execution to POST RequestsPremium1:48
- Using Express RouterPremium8:04
- Adding a 404 Error PagePremium2:30
- Filtering PathsPremium3:38
- Creating HTML PagesPremium5:09
- Serving HTML PagesPremium7:19
- Returning a 404 PagePremium2:00
- Using a Helper Function for NavigationPremium3:37
- Styling our PagesPremium13:58
- Serving Files StaticallyPremium7:49
- Assignment - Navigation (Problem)Premium1:11
- Assignment - Navigation (Solution)Premium8:32
- Wrap UpPremium3:36
- Useful Resources & LinksPremium1:00
Section 6Working with Dynamic Content & Adding Templating Engines
- Module IntroductionPremium2:31
- Sharing Data Across Requests & UsersPremium8:05
- Templating Engines - An OverviewPremium4:40
- Installing & Implementing PugPremium11:04
- Outputting Dynamic ContentPremium11:02
- Converting HTML Files to PugPremium5:55
- Adding a LayoutPremium5:35
- Finishing the Pug TemplatePremium5:50
- Working with HandlebarsPremium5:08
- Converting our Project to HandlebarsPremium7:41
- Adding the Layout to HandlebarsPremium8:41
- Working with EJSPremium8:19
- Working on the Layout with PartialsPremium9:33
- Wrap UpPremium3:46
- Assignment - Templating Engines (Problem)Premium1:36
- Assignment - Templating Engines (Solution)Premium25:02
- Useful Resources & LinksPremium1:00
Section 7The Model View Controller (MVC)
- Module IntroductionPremium0:52
- What is the MVC?Premium2:48
- Adding ControllersPremium9:20
- Finishing the ControllersPremium2:37
- Adding a Product ModelPremium8:05
- Storing Data in Files Via the ModelPremium9:39
- Fetching Data from Files Via the ModelPremium3:55
- Refactoring the File Storage CodePremium4:25
- Wrap UpPremium2:15
- Useful Resources & LinksPremium1:00
Section 8Optional: Enhancing the App
- Module IntroductionPremium1:21
- Creating the Shop StructurePremium5:34
- Working on the NavigationPremium2:49
- Registering the RoutesPremium11:04
- Storing Product DataPremium5:15
- Displaying Product DataPremium3:02
- Editing & Deleting ProductsPremium4:47
- Adding Another ItemPremium2:08
- Useful Resources & LinksPremium1:00
Section 9Dynamic Routes & Advanced Models
- Module IntroductionPremium1:07
- PreparationsPremium1:23
- Adding the Product ID to the PathPremium4:34
- Extracting Dynamic ParamsPremium4:32
- Loading Product Detail DataPremium4:52
- Rendering the Product Detail ViewPremium5:26
- Passing Data with POST RequestsPremium7:19
- Adding a Cart ModelPremium12:29
- Using Query ParamsPremium7:54
- Pre-Populating the Edit Product Page with DataPremium6:46
- Linking to the Edit PagePremium2:20
- Editing the Product DataPremium8:58
- Adding the Product-Delete FunctionalityPremium5:34
- Deleting Cart ItemsPremium8:11
- Displaying Cart Items on the Cart PagePremium8:45
- Deleting Cart ItemsPremium5:24
- Fixing a Delete Product BugPremium1:31
- Wrap UpPremium1:46
- Useful Resources & LinksPremium1:00
Section 10SQL Introduction
- Module IntroductionPremium1:33
- Choosing a DatabasePremium4:17
- NoSQL IntroductionPremium4:20
- Comparing SQL and NoSQLPremium5:06
- Setting Up MySQLPremium7:16
- Connecting our App to the SQL DatabasePremium6:50
- Basic SQL & Creating a TablePremium4:07
- Retrieving DataPremium3:00
- Fetching ProductsPremium6:30
- Fetching Products - Time to PracticePremium1:04
- Inserting Data Into the DatabasePremium4:12
- Fetching a Single Product with the "where" ConditionPremium2:57
- Wrap UpPremium1:24
- Useful Resources & LinksPremium1:00
Section 11Understanding Sequelize
- Module IntroductionPremium1:26
- What is Sequelize?Premium2:35
- Connecting to the DatabasePremium3:57
- Defining a ModelPremium5:47
- Syncing JS Definitions to the DatabasePremium4:29
- Inserting Data & Creating a ProductPremium4:49
- Retrieving Data & Finding ProductsPremium3:01
- Getting a Single Product with the "where" ConditionPremium4:30
- Fetching Admin ProductsPremium1:25
- Updating ProductsPremium5:18
- Deleting ProductsPremium2:48
- Creating a User ModelPremium2:48
- Adding a One-To-Many RelationshipPremium5:54
- Creating & Managing a Dummy UserPremium6:01
- Using Magic Association MethodsPremium3:42
- Fetching Related ProductsPremium2:46
- One-To-Many & Many-To-Many RelationsPremium6:03
- Creating & Fetching a CartPremium5:45
- Adding New Products to the CartPremium6:42
- Adding Existing Products & Retrieving Cart ItemsPremium4:55
- Deleting Related Items & Deleting Cart ProductsPremium2:24
- Adding an Order ModelPremium4:19
- Storing Cartitems as OrderitemsPremium8:19
- Resetting the Cart & Fetching and Outputting OrdersPremium9:53
- Wrap UpPremium1:49
- Useful Resources & LinksPremium1:00
Section 12Working with NoSQL & Using MongoDB
- Module IntroductionPremium1:17
- What is MongoDB?Premium3:57
- Relations in NoSQLPremium3:58
- Setting Up MongoDBPremium4:28
- Installing the MongoDB DriverPremium7:01
- Creating the Database ConnectionPremium3:25
- Finishing the Database ConnectionPremium4:21
- Using the Database ConnectionPremium5:14
- Creating ProductsPremium2:08
- Understanding the MongoDB CompassPremium2:38
- Fetching All ProductsPremium4:34
- Fetching a Single ProductPremium7:45
- Making the "Edit" & "Delete" Buttons Work AgainPremium2:21
- Working on the Product Model to Edit our ProductPremium7:14
- Finishing the "Update Product" CodePremium3:57
- One Note About Updating ProductsPremium1:46
- Deleting ProductsPremium3:30
- Fixing the "Add Product" FunctionalityPremium1:28
- Creating New UsersPremium7:00
- Storing the User in our DatabasePremium5:40
- Working on Cart Items & OrdersPremium7:13
- Adding the "Add to Cart" FunctionalityPremium6:14
- Storing Multiple Products in the CartPremium7:01
- Displaying the Cart ItemsPremium9:20
- Fixing a BugPremium1:02
- Deleting Cart ItemsPremium4:02
- Adding an OrderPremium4:36
- Adding Relational Order DataPremium6:21
- Getting OrdersPremium3:20
- Removing Deleted Items From the CartPremium2:58
- Wrap UpPremium2:19
- Useful Resources & LinksPremium1:00
Section 13Working with Mongoose
- Module IntroductionPremium1:23
- What is Mongoose?Premium2:04
- Connecting to the MongoDB Server with MongoosePremium4:47
- Creating the Product SchemaPremium4:21
- Saving Data Through MongoosePremium6:10
- Fetching All ProductsPremium2:27
- Fetching a Single ProductPremium1:24
- Updating ProductsPremium4:14
- Deleting ProductsPremium1:19
- Adding and Using a User ModelPremium6:36
- Using Relations in MongoosePremium3:44
- One Important Thing About Fetching RelationsPremium3:53
- Working on the Shopping CartPremium5:25
- Loading the CartPremium5:12
- Deleting Cart ItemsPremium2:45
- Creating & Getting OrdersPremium9:56
- Storing All Order Related DataPremium1:52
- Clearing the Cart After Storing an OrderPremium1:59
- Getting & Displaying the OrdersPremium3:40
- Wrap UpPremium1:37
- Useful Resources & LinksPremium1:00
Section 14Sessions & Cookies
- Module IntroductionPremium0:45
- What is a Cookie?Premium1:58
- The Current Project StatusPremium2:18
- Optional: Creating the Login FormPremium6:22
- Adding the Request Driven Login SolutionPremium7:40
- Setting a CookiePremium5:55
- Manipulating CookiesPremium1:58
- Configuring CookiesPremium5:43
- What is a Session?Premium2:58
- Initializing the Session MiddlewarePremium2:43
- Using the Session MiddlewarePremium4:14
- Using MongoDB to Store SessionsPremium5:59
- Sessions & Cookies - A Short SummaryPremium1:53
- Assignment - Sessions & Cookies (Problem)Premium1:37
- Assignment - Sessions & Cookies (Solution)Premium7:24
- Deleting a CookiePremium4:35
- Fixing Some Minor BugsPremium4:27
- Making "Add to Cart" Work AgainPremium6:45
- Two Tiny ImprovementsPremium3:11
- Wrap UpPremium3:43
- Useful Resources & LinksPremium1:00
Section 15Adding Authentication
- Module IntroductionPremium1:22
- What is Authentication?Premium2:25
- How is Authentication Implemented?Premium2:05
- Our Updated Project StatusPremium2:25
- Implementing an Authentication FlowPremium7:34
- Encrypting PasswordsPremium4:36
- Adding a Tiny Code ImprovementPremium1:21
- Adding the Signin FunctionalityPremium6:21
- Working on Route ProtectionPremium2:12
- Using Middleware to Protect RoutesPremium4:38
- Understanding CSRF AttacksPremium3:23
- Using a CSRF TokenPremium6:56
- Adding CSRF ProtectionPremium4:23
- Fixing the Order ButtonPremium1:16
- Providing User FeedbackPremium7:10
- Optional: Styling Error MessagesPremium3:32
- Finishing the Flash MessagesPremium2:20
- Adding Additional Flash MessagesPremium2:20
- Wrap UpPremium2:32
- Useful Resources & LinksPremium1:00
Section 16Sending Emails
- Module IntroductionPremium0:46
- How Does Sending Emails Work?Premium1:33
- Using SendGridPremium1:24
- Using Nodemailer to Send an EmailPremium5:09
- Potential Limitation for Large Scale AppsPremium1:29
- Useful Resources & LinksPremium1:00
Section 17Advanced Authentication
- Module IntroductionPremium0:42
- Resetting PasswordsPremium3:03
- Implementing the Token LogicPremium7:41
- Creating the TokenPremium1:27
- Creating the Reset Password FormPremium5:27
- Adding Logic to Update the PasswordPremium6:35
- Why we Need AuthorizationPremium1:58
- Adding AuthorizationPremium2:07
- Adding Protection to Post ActionsPremium3:43
- Why Editing FailsPremium1:06
- Wrap UpPremium1:44
- Useful Resources & LinksPremium1:00
Section 18Understanding Validation
- Module IntroductionPremium1:03
- Why Should We Use Validation?Premium2:28
- How to Validate Input?Premium4:04
- Setup & Basic ValidationPremium10:44
- Using Validation Error MessagesPremium2:11
- Built-In & Custom ValidatorsPremium3:55
- More ValidatorsPremium4:26
- Checking For Field EqualityPremium3:14
- Adding Async ValidationPremium4:46
- Assignment - Validation (Problem)Premium1:18
- Assignment - Validation (Solution)Premium6:25
- Keeping User InputPremium4:11
- Adding Conditional CSS ClassesPremium5:29
- Adding Validation to LoginPremium5:36
- Sanitizing DataPremium3:41
- Validating Product AdditionPremium11:40
- Validating Product EditingPremium6:57
- Wrap UpPremium1:23
- Useful Resources & LinksPremium1:00
Section 19Error Handling
- Module IntroductionPremium0:45
- Types of Errors & Error HandlingPremium5:14
- Analyzing the Error Handling in the Current ProjectPremium2:22
- Errors - Some TheoryPremium6:43
- Throwing Errors in CodePremium2:42
- Returning Error PagesPremium6:54
- Using the Express.js Error Handling MiddlewarePremium5:47
- Updating the AppPremium3:09
- Using the Error Handling Middleware CorrectlyPremium4:54
- Status CodesPremium5:57
- Wrap UpPremium2:21
- Useful Resources & LinksPremium1:00
Section 20File Upload & Download
- Module IntroductionPremium0:54
- Adding a File Picker to the FrontendPremium3:06
- Handling Multipart Form DataPremium5:15
- Handling File Uploads with MulterPremium4:51
- Configuring Multer to Adjust Filename & FilepathPremium4:29
- Filtering Files by MimetypePremium2:28
- Storing File Data in the DatabasePremium7:42
- Serving Images StaticallyPremium4:25
- Downloading Files with AuthenticationPremium7:33
- Setting File Type HeadersPremium2:35
- Restricting File AccessPremium3:19
- Streaming Data vs Preloading DataPremium3:20
- Using PDFKit for .pdf GenerationPremium5:32
- Generating .pdf Files with Order DataPremium6:50
- Deleting FilesPremium5:57
- Fixing Invoice LinksPremium0:35
- Wrap UpPremium1:31
- Useful Resources & LinksPremium1:00
Section 21Adding Pagination
- Module IntroductionPremium0:48
- Adding Pagination LinksPremium4:08
- Retrieving a Chunk of DataPremium3:47
- Preparing Pagination Data on the ServerPremium3:52
- Adding Dynamic Pagination ButtonsPremium8:07
- Re-Using the Pagination Logic & ControlsPremium3:41
- Wrap UpPremium1:02
- Useful Resources & LinksPremium1:00
Section 22Understanding Async Requests
- Module IntroductionPremium0:49
- What are Async Requests?Premium2:07
- Adding Client Side JS CodePremium7:24
- Sending & Handling Background RequestsPremium9:26
- Manipulating the DOMPremium3:01
- Useful Resources & LinksPremium1:00
Section 23Adding Payments
- Module IntroductionPremium0:58
- How Payments WorkPremium2:04
- Adding a Checkout PagePremium6:00
- Using Stripe in Your AppPremium19:23
- Useful Resources & LinksPremium1:00
Section 24Working with REST APIs - The Basics
- Module IntroductionPremium1:25
- What are REST APIs and why do we use Them?Premium7:01
- Accessing Data with REST APIsPremium5:41
- Understanding Routing & HTTP MethodsPremium5:25
- REST APIs - The Core PrinciplesPremium4:09
- Creating our REST API Project & Implementing the Route SetupPremium6:41
- Sending Requests & Responses and Working with PostmanPremium13:28
- REST APIs, Clients & CORS ErrorsPremium10:33
- Sending POST RequestsPremium6:32
- Wrap UpPremium2:14
- Useful Resources & LinksPremium1:00
Section 25Working with REST APIs - The Practical Application
- Module IntroductionPremium1:10
- REST APIs & The Rest Of The CoursePremium3:59
- Understanding the Frontend SetupPremium4:18
- Planning the APIPremium3:02
- Fetching Lists of PostsPremium6:19
- Adding a Create Post EndpointPremium7:36
- Adding Server Side ValidationPremium6:19
- Setting Up a Post ModelPremium5:14
- Storing Posts in the DatabasePremium3:32
- Static Images & Error HandlingPremium6:53
- Fetching a Single PostPremium7:48
- Uploading ImagesPremium8:56
- Updating PostsPremium14:02
- Deleting PostsPremium4:17
- Adding PaginationPremium6:20
- Adding a User ModelPremium4:08
- Adding User Signup ValidationPremium6:29
- Signing Users UpPremium7:24
- How Does Authentication Work?Premium3:10
- Starting with User LoginPremium3:51
- Logging In & Creating JSON Web Tokens (JWTs)Premium7:53
- Using & Validating the TokenPremium9:43
- Adding Auth Middleware to All RoutesPremium1:52
- Connecting Posts & UsersPremium6:13
- Adding Authorization ChecksPremium3:50
- Clearing Post-User RelationsPremium2:54
- Assignment - REST API (Problem)Premium0:59
- Assignment - REST API (Solution)Premium8:16
- Wrap UpPremium2:28
- Useful Resources & LinksPremium1:00
Section 26Understanding Async Await in Node.js
- Module IntroductionPremium0:58
- What is Async Await All About?Premium4:08
- Transforming "Then Catch" to "Async Await"Premium4:26
- Assignment - Async Await (Problem)Premium0:39
- Assignment - Async Await (Solution)Premium9:56
- Wrap UpPremium3:03
- Useful Resources & LinksPremium1:00
Section 27Understanding Websockets & Socket.io
- Module IntroductionPremium0:55
- What Are Websockets & Why Would You Use Them?Premium4:17
- Websocket Solutions - An OverviewPremium1:35
- Setting Up Socket.io on the ServerPremium3:56
- Establishing a Connection From the ClientPremium2:27
- Identifying Realtime PotentialPremium2:42
- Sharing the IO Instance Across FilesPremium2:46
- Synchronizing POST AdditionsPremium7:14
- Fixing a Bug - The Missing UsernamePremium1:44
- Updating Posts On All Connected ClientsPremium3:58
- Sorting CorrectlyPremium0:59
- Deleting Posts Across ClientsPremium2:31
- Wrap UpPremium1:48
- Useful Resources & LinksPremium1:00
Section 28Working with GraphQL
- Module IntroductionPremium0:57
- What is GraphQL?Premium9:17
- Understanding the Setup & Writing our First QueryPremium11:15
- Defining a Mutation SchemaPremium5:42
- Adding a Mutation Resolver & GraphiQLPremium9:42
- Adding Input ValidationPremium4:19
- Handling ErrorsPremium3:45
- Connecting the Frontend to the GraphQL APIPremium6:49
- Adding a Login Query & a ResolverPremium6:20
- Adding Login FunctionalityPremium4:57
- Adding a Create Post MutationPremium7:23
- Extracting User Data From the Auth TokenPremium5:48
- Sending the "Create Post" QueryPremium4:46
- Fixing a Bug & Adding New Posts CorrectlyPremium2:53
- Adding a "Get Post" Query & ResolverPremium4:53
- Sending "Create Post" and "Get Post" QueriesPremium5:13
- Adding PaginationPremium4:28
- Uploading ImagesPremium10:26
- Viewing a Single PostPremium6:07
- Updating PostsPremium9:32
- Deleting PostsPremium9:25
- Managing the User StatusPremium9:17
- Using VariablesPremium16:06
- Fixing a Pagination BugPremium2:48
- Wrap UpPremium3:36
- Useful Resources & LinksPremium1:00
Section 29Deploying our App
- Module IntroductionPremium1:16
- Deploying Different Kinds of AppsPremium1:39
- Deployment PreparationsPremium4:52
- Using Environment VariablesPremium11:12
- Using Production API KeysPremium1:19
- Setting Secure Response Headers with HelmetPremium2:40
- Compressing AssetsPremium2:33
- Setting Up Request LoggingPremium3:34
- Setting Up a SSL ServerPremium9:55
- Using a Hosting ProviderPremium4:25
- Understanding the Project & the Git SetupPremium4:03
- A Deployment Example with HerokuPremium10:26
- Deploying APIsPremium2:52
- Useful Resources & LinksPremium1:00
Section 30Testing Node.js Applications
- Module IntroductionPremium0:43
- What is Testing?Premium2:42
- Why & How?Premium3:25
- Setup and Writing a First TestPremium9:40
- Testing the Auth MiddlewarePremium12:33
- Organizing Multiple TestsPremium4:12
- What Not To Test!Premium8:02
- Using StubsPremium8:38
- Testing ControllersPremium8:03
- Testing Asynchronous CodePremium5:53
- Setting up a Testing DatabasePremium6:33
- Testing Code With An Active DatabasePremium6:33
- Cleaning UpPremium3:29
- HooksPremium4:34
- Testing Code That Requires AuthenticationPremium12:37
- Wrap Up & Mastering TestsPremium4:22
- Useful Resources & LinksPremium1:00
- New LecturePremium1:00
Section 31Node.js as a Build Tool & Using npm
- Module IntroductionPremium1:01
- npm & Node.jsPremium1:42
- Using npmPremium7:52
- What is a Build Tool?Premium5:01
- Using Node.js in Build ProcessesPremium5:50
- Useful Resources & LinksPremium1:00
Section 32Modern JavaScript & NodeJS
- Module IntroductionPremium2:28
- What is this Module About?Premium2:19
- Using ES ModulesPremium9:32
- More on ES ModulesPremium6:26
- Node Core Modules & PromisesPremium5:18
- Module ResourcesPremium1:00
Section 33Bonus: Node & TypeScript
- Module IntroductionPremium1:22
- TypeScript: What & WhyPremium6:02
- TypeScript SetupPremium4:09
- Assigning TypesPremium3:29
- Type Inference & Type CastingPremium6:10
- Configuring TypeScriptPremium5:01
- Working with Union TypesPremium4:23
- Using Object and Array TypesPremium6:17
- Type Aliases & InterfacesPremium3:22
- Understanding Generic TypesPremium5:09
- TypeScript: A SummaryPremium0:34
- TypeScript & Node: SetupPremium2:14
- Getting Started with TypeScript & NodePremium9:31
- Writing TypeScript Express.js CodePremium3:59
- Adding REST Routes with TSPremium6:42
- Finishing the REST RoutesPremium5:53
- Testing the APIPremium4:52
- Using Type CastingPremium4:21
- Moving to a Better Project StructurePremium3:44
- Wrap UpPremium2:50
- Module ResourcesPremium1:00
Section 34DenoJS - An Introduction
- Module IntroductionPremium1:35
- What is Deno?Premium3:09
- Why Deno?Premium1:55
- Deno SetupPremium5:50
- Writing First Deno CodePremium4:18
- The Deno Runtime (Namespace) APIPremium3:13
- Using the Runtime APIPremium5:26
- Working with Deno PermissionsPremium4:31
- Repeating the Example with NodePremium4:16
- How Deno Features Are OrganizedPremium4:28
- Using the Standard Library ModulesPremium8:30
- Creating a WebserverPremium2:54
- Using the Oak Framework with DenoPremium9:48
- More on Module URLsPremium1:00
- Creating an Example Node REST APIPremium12:15
- Re-building the REST API with DenoPremium16:18
- Should You Switch From Node To Deno?Premium5:05
- Module ResourcesPremium1:00
Section 35Deno & MongoDB
- Module IntroductionPremium1:00
- App SetupPremium4:06
- Deno & CORSPremium7:16
- Establishing a MongoDB ConnectionPremium8:05
- Using the Mongo ModulePremium10:34
- Finishing the CRUD OperationsPremium5:29
- Wrap UpPremium1:10
- Module ResourcesPremium1:00
Section 36Roundup
- Course RoundupPremium2:40
Course instructor
Maximilian Schwarzmüller
As a self-taught professional I really know the hard parts and the difficult topics when learning new or improving on already-known languages. This background and experience enable me to focus on the most relevant key concepts and topics. My track record of many 5-star rated courses, more than 1,000,000 students worldwide as well as a successful YouTube channel is the best proof for that.
The most rewarding experience for me is to see how people find new, better jobs, build awesome web applications, work on amazing projects or simply enjoy their hobby with the help of my content. That's why, together with Manuel Lorenz, I founded Academind to offer the best possible learning experience and to share the pleasure of learning with our students.