Course Overview
This course teaches you the latest version of Next.js and covers both the "App Router" and "Pages Router" (and explains what these two approaches are).
Join this bestselling NextJS course and learn how to build highly dynamic, super fast and SEO-ready React apps with React & NextJS!
This course covers both the NextJS "App Router" & the "Pages Router" - two different approaches for building fullstack apps with React! And, of course, you'll learn what these two approaches are, why two different approaches exist and how each approach works!
I created the bestselling Udemy course on React, now I'm super excited to share this NextJS with you - an in-depth course about an amazing React framework that allows you to take the next step as a React developer and build real, production-ready projects with React and Next.js!
Next.js is the production-ready, fullstack-capable framework for ReactJS - the most popular JavaScript library you can learn these days!
Too many buzzwords for your taste?
Fair enough - but indeed, NextJS is a great choice for growing as a React developer and for taking your React apps to the next level!
Because NextJS is growing fast and therefore in high demand. And there are good reasons for that: NextJS allows you to build React apps with built-in server-side rendering and page pre-rendering. Building great user experiences and search engine friendly (SEO!) React apps has never been easier!
In addition, NextJS makes building fullstack React apps (frontend + backend code combined in one project) extremely easy as well! Blend client-side and server-side code and build a NodeJS-based API side-by-side with your frontend React apps. It's a breeze with NextJS!
Want to add authentication? NextJS simplifies that as well and makes user signup, sign in and session management very convenient.
This course will take you from NextJS beginner to advanced level in no time!
We'll start at the very basics, no NextJS knowledge is required at all, and we'll then dive into all the core features that make up NextJS. Both in theory as well as with multiple real projects where all concepts will be applied step-by-step.
For this course, you'll need basic React knowledge, though the course does come with a "React refresher" module in case it's been some time since you last worked with React.
This course also includes a "NextJS Summary" module for the Pages router and a "NextJS Essentials" module for the App router - which allow you to always come back to the course in the future and refresh your knowledge without going through the full course again. Or you just take those summary modules (and skip the rest for now) to learn about all the core features in as little time as possible.
After finishing this course, you'll be well prepared to build your own NextJS projects from the ground up and apply for NextJS positions!
In detail, this course will cover:
What is NextJS? And why would you use it?
Why is just React (in many cases) not enough?
Creating NextJS projects from the ground up & understanding these projects
Working with file-based routing
Adding dynamic routes and catch-all routes
Implementing different forms of page pre-rendering and server-side rendering
Working with data and adding data fetching + pre-fetching to your apps
Handling form submissions with Server Actions
Handling File upload
Pre-generating dynamic and static pages
Adding optimizations like metadata to pages
Optimizing images with the NextJS Image component
Building fullstack apps with API routes or Server Actions
Managing app-wide state with React context (in NextJS apps)
Adding authentication to NextJS apps
Multiple complete apps where we'll apply all these core concepts!
A complete React.js refresher module (so that we're all on the same page)
A NextJS summary module so that you can refresh what you learned or just explore the core features quickly
And much more!
I can't wait to start this journey together with you! :)
FAQ
FAQ area empty
Course curriculum
-
Welcome To The Course!
80 Xem trước -
What Is NextJS? Why Would You Use It?
140 Xem trước -
Key Features & Benefits Of NextJS
160 Xem trước -
Creating a First NextJS App
265 Xem trước -
NextJS vs "Just React" - Analyzing The NextJS Project
150 Xem trước -
Editing The First App
141 -
Pages Router vs App Router - One Framework, Two Approaches
149 Xem trước -
How To Get The Most Out Of This Course
185 Xem trước -
Learning Community & Course Resources
-
Using the Code Snasphots
-
Module Introduction
68 -
What Is React & Why Would You Use It?
337 -
React Projects - Requirements
129 -
Creating React Projects
207 -
Our Starting Project
208 -
Understanding How React Works
466 -
Building A First Custom Component
675 -
Outputting Dynamic Values
303 -
Reusing Components
360 -
Passing Data to Components with Props
375 -
CSS Styling & CSS Modules
607 -
Exercise & Another Component
391 -
Preparing the App For State Management
225 -
Adding Event Listeners
472 -
Working with State
600 -
Lifting State Up
548 -
The Special "children" Prop
441 -
State & Conditional Content
539 -
Adding a Shared Header & More State Management
471 -
Adding Form Buttons
214 -
Handling Form Submission
378 -
Updating State Based On Previous State
330 -
Outputting List Data
398 -
Adding a Backend to the React SPA
370 -
Sending a POST HTTP Request
252 -
Handling Side Effects with useEffect()
546 -
Handle Loading State
263 -
Understanding & Adding Routing
235 -
Adding Routes
336 -
Working with Layout Routes
248 -
Refactoring Route Components & More Nesting
335 -
Linking & Navigating
489 -
Data Fetching via loader()s
547 -
Submitting Data with action()s
667 -
Dynamic Routes
521 -
Module Summary
85 -
IMPORTANT -- LEGACY CONTENT BELOW
-
Module Introduction
87 -
What is ReactJS?
228 -
Why ReactJS & A First Demo
445 -
Building Single-Page Applications (SPAs)
120 -
React Alternatives
186 -
Creating a New React Project
495 -
Setting Up A Code Editor
184 -
React 18
-
Diving Into The Created Project
391 -
How React Works & Understanding Components
456 -
More Component Work & Styling With CSS Classes
334 -
Building & Re-using Components
439 -
Passing Data With Props & Dynamic Content
317 -
Handling Events
400 -
Adding More Components
340 -
Introducing State
498 -
Working with "Event Props"
427 -
Use The Right React Router Version
-
Adding Routing
1012 -
Adding Links & Navigation
320 -
Scoping Component Styles With CSS Modules
345 -
Outputting Lists Of Data & Components
349 -
Adding Even More Components
587 -
Creating "Wrapper" Components
519 -
Working With Forms
538 -
Getting User Input & Handling Form Submission
585 -
Preparing The App For Http Requests & Adding a Backend
411 -
Sending a POST Http Request
318 -
Navigating Programmatically
222 -
Getting Started with Fetching Data
565 -
Using the "useEffect" Hook
607 -
Introducing React Context
662 -
Updating State Based On Previous State
354 -
Using Context In Components
730 -
More Context Usage
414 -
Module Summary
60 -
Module Resources
-
Module Introduction
80 -
Starting Setup
152 -
Understanding File-based Routing & React Server Components
165 -
Adding Another Route via the File System
186 -
Navigating Between Pages - Wrong & Right Solution
252 -
Working with Pages & Layouts
202 -
Reserved File Names, Custom Components & How To Organize A NextJS Project
391 -
Reserved Filenames
-
Configuring Dynamic Routes & Using Route Parameters
377 -
Onwards to the Main Project: The Foodies App
84 -
Exercise: Your Task
123 -
Exercise: Solution
499 -
Revisiting The Concept Of Layouts
230 -
Adding a Custom Component To A Layout
358 -
Styling NextJS Project: Your Options & Using CSS Modules
360 -
Optimizing Images with the NextJS Image Component
297 -
Using More Custom Components
228 -
Populating The Starting Page Content
258 -
Preparing an Image Slideshow
205 -
React Server Components vs Client Components - When To Use What
495 -
Using Client Components Efficiently
667 -
Outputting Meals Data & Images With Unknown Dimensions
631 -
Setting Up A SQLite Database
191 -
Fetching Data By Leveraging NextJS & Fullstack Capabilities
437 -
Adding A Loading Page
240 -
Using Suspense & Streamed Responses For Granular Loading State Management
354 -
Handling Errors
322 -
Handling "Not Found" States
117 -
Loading & Rendering Meal Details via Dynamic Routes & Route Parameters
663 -
Throwing Not Found Errors For Individual Meals
123 -
Getting Started with the "Share Meal" Form
113 -
Getting Started with a Custom Image Picker Input Component
508 -
Adding an Image Preview to the Picker
359 -
Improving the Image Picker Component
-
Introducing & Using Server Actions for Handling Form Submissions
542 -
Storing Server Actions in Separate Files
225 -
Creating a Slug & Sanitizing User Input for XSS Protection
200 -
Storing Uploaded Images & Storing Data in the Database
776 -
Managing the Form Submission Status with useFormStatus
330 -
Adding Server-Side Input Validation
354 -
Using useFormState()
-
Working with Server Action Responses & useFormState
485 -
Building For Production & Understanding NextJS Caching
366 -
Triggering Cache Revalidations
237 -
Don't Store Files Locally On The Filesystem!
133 -
Bonus: Storing Uploaded Images In The Cloud (AWS S3)
-
Adding Static Metadata
227 -
Adding Dynamic Metadata
140 -
Module Summary
265
-
Module Introduction
97 -
Project Setup, Overview & An Exercise!
257 -
Exercise Solution - Part 1
437 -
Exercise Solution - Part 2
296 -
App Styling & Using Dummy Data
539 -
Handling "Not Found" Errors & Showing "Not Found" Pages
279 -
Setting Up & Using Parallel Routes
400 -
Working with Parallel Routes & Nested Routes
770 -
Configuring Catch-All Routes
361 -
Catch-All Fallback Routes & Dealing With Multiple Path Segments
561 -
Throwing (Route-related) Errors
218 -
Handling Errors With Error Pages
182 -
Server vs Client Components
610 -
Nested Routes Inside Dynamic Routes
296 -
Intercepting Navigation & Using Interception Routes
311 -
Combining Parallel & Intercepting Routes
462 -
Replace page.js with default.js
-
Navigating Programmatically
162 -
Defining the Base HTML Document
-
Using & Understanding Route Groups
399 -
Building APIs with Route Handlers
315 -
Using Middleware
340 -
Module Summary
30
-
Module Introduction
56 -
Adding a Backend
166 -
Option 1: Client-side Data Fetching
530 -
Option 2: Server-side Data Fetching
336 -
Why Use A Separate Backend? Fetching Directly From The Source!
374 -
Showing a "Loading" Fallback
290 -
Migrating An Entire Application To A Local Data Source (Database)
799 -
Granular Data Fetching With Suspense
695
-
Module Introduction
71 -
Starting Project & Analyzing Mutation Options
346 -
Setting Up A Form Action
559 -
Creating a Server Action
256 -
Storing Data in Databases
279 -
Providing User Feedback with The useFormStatus Hook
364 -
Using useFormState Hook
-
Validating User Input With Help Of The useFormState Hook
597 -
Adjusting Server Actions for useFormState
460 -
Storing Server Actions In Separate Files
237 -
"use server" Does Not Guarantee Server-side Execution!
-
Uploading & Storing Images
493 -
Alternative Ways of Using, Configuring & Triggering Server Actions
660 -
Revalidating Data To Avoid Caching Problems
285 -
Performing Optimistic Updates With NextJS
702 -
Caching Differences: Development vs Production
373
-
Module Introduction
69 -
Making Sense of NextJS' Caching Types
399 -
Project Setup
105 -
Handling Request Memoization
331 -
Understanding The Data Cache & Cache Settings
451 -
Controlling Data Caching
327 -
Making Sense Of The Full Route Cache
282 -
On-Demand Cache Invalidation with revalidatePath & revalidateTag
363 -
Setting Up Request Memoization For Custom Data Sources
435 -
Setting Up Data Caching For Custom Data Sources
224 -
Invalidating Custom Data Source Data
212 -
Module Summary
104
-
Module Introduction
188 -
Using the NextJS Image Component
223 -
Understanding the NextJS Image Component
315 -
Controlling the Image Size
284 -
Working with Priority Images & More Settings
182 -
Loading Unknown Images
252 -
Configuring CSS For Images With The "fill" Prop
183 -
Using An Image Loader & Cloudinary Resizing
951 -
Page Metadata - An Introduction
64 -
Configuring Static Page Metadata
177 -
Configuring Dynamic Page Metadata
303 -
Understanding Layout Metadata
98
-
Module Introduction
64 -
Project Setup
206 -
User Signup: Extracting & Validating User Input
875 -
Storing Users in a Database - The Wrong Way
270 -
Hashing Passwords & Storing User Data The Right Way
127 -
Checking for Email Duplication
301 -
Theory: How Does User Authentication Work?
321 -
Choosing a Third-Party Auth Package (Lucia)
174 -
Creating a New Lucia Auth Instance
271 -
Configuring A Session & A Session Cookie
371 -
Setting Up An Auth Session
223 -
Verifying An Active Auth Session
435 -
Protecting Routes Against Unauthenticated Access
187 -
Switching Auth Modes With Query Parameters (Search Params)
335 -
Adding User Login (via a Server Action)
334 -
Triggering Different Server Actions via Query Parameters
224 -
Adding an Auth-only Layout
221 -
One Root Layout vs Multiple Root Layouts
-
Adding User Logout
250
-
From App Router To Pages Router
100 -
Using The Code Snapshots
-
Module Introduction
72 -
Our Starting Setup
79 -
What Is "File-based Routing"? And Why Is It Helpful?
322 -
Adding A First Page
241 -
Adding a Named / Static Route File
94 -
Working with Nested Paths & Routes
213 -
Adding Dynamic Paths & Routes
294 -
Extracting Dynamic Path Segment Data (Dynamic Routes)
294 -
Building Nested Dynamic Routes & Paths
432 -
Adding Catch-All Routes
344 -
Navigating with the "Link" Component
344 -
Navigating To Dynamic Routes
221 -
A Different Way Of Setting Link Hrefs
175 -
Navigating Programmatically
230 -
Adding a Custom 404 Page
95 -
Module Summary
351 -
Module Resources
-
Module Introduction
124 -
Planning The Project
255 -
Setting Up The Main Pages
455 -
Adding Dummy Data & Static Files
286 -
Adding Regular React Components
434 -
Adding More React Components & Connecting Components
622 -
Styling Components In Next.js Projects
568 -
<Link> & NextJS 13
-
Adding Buttons & Icons
505 -
Adding the "Event Detail" Page (Dynamic Route)
511 -
Adding a General Layout Wrapper Component
387 -
Working on the "All Events" Page
125 -
Adding a Filter Form for Filtering Events
505 -
Navigating to the "Filtered Events" Page Progammatically
505 -
Extracting Data on the Catch-All Page
534 -
Final Steps
422 -
Module Summary
100 -
Module Resources
-
Module Introduction
145 -
The Problem With Traditional React Apps (and Data Fetching)
315 -
How NextJS Prepares & Pre-renders Pages
338 -
Introducing Static Generation with "getStaticProps"
244 -
NextJS Pre-renders By Default!
188 -
Adding "getStaticProps" To Pages
399 -
Running Server-side Code & Using the Filesystem
461 -
A Look Behind The Scenes
320 -
Utilizing Incremental Static Generation (ISR)
442 -
ISR: A Look Behind The Scenes
225 -
A Closer Look At "getStaticProps" & Configuration Options
259 -
Working With Dynamic Parameters
586 -
Introducing "getStaticPaths" For Dynamic Pages
223 -
Using "getStaticPaths"
206 -
"getStaticPaths" & Link Prefetching: Behind The Scenes
239 -
Working With Fallback Pages
327 -
Loading Paths Dynamically
242 -
Fallback Pages & "Not Found" Pages
353 -
Introducing "getServerSideProps" for Server-side Rendering (SSR)
253 -
Using "getServerSideProps" for Server-side Rendering
245 -
"getServerSideProps" and its Context
260 -
Dynamic Pages & "getServerSideProps"
244 -
"getServerSideProps": Behind The Scenes
205 -
Introducing Client-Side Data Fetching (And When To Use It)
220 -
Implementing Client-Side Data Fetching
887 -
A Note About useSWR
-
Using the "useSWR" NextJS Hook
538 -
Combining Pre-Fetching With Client-Side Fetching
535 -
Module Summary
405 -
Module Resources
-
Module Introduction
64 -
Preparations
301 -
Adding Static Site Generation (SSG) On The Home Page
662 -
Loading Data & Paths For Dynamic Pages
590 -
Optimizing Data Fetching
467 -
Working on the "All Events" Page
167 -
Using Server-side Rendering (SSR)
592 -
Adding Client-Side Data Fetching
655 -
Module Summary
90 -
Module Resources
-
Module Introduction
79 -
Analyzing the Need for "head" Metadata
109 -
Configuring the "head" Content
221 -
Adding Dynamic "head" Content
317 -
Reusing Logic Inside A Component
262 -
Working with the "_app.js" File (and Why)
183 -
Merging "head" Content
197 -
The "_document.js" File (And What It Does)
331 -
A Closer Look At Our Images
119 -
Optimizing Images with the "Next Image" Component & Feature
517 -
Taking A Look At The "Next Image" Documentation
51 -
Module Summary
76 -
Module Resources
-
Module Introduction
50 -
What are "API Routes"?
337 -
Writing Our First API Route
504 -
Preparing the Frontend Form
389 -
Parsing The Incoming Request & Executing Server-side Code
616 -
Sending Requests To API Routes
343 -
Using API Routes To Get Data
476 -
Using API Routes For Pre-Rendering Pages
484 -
Creating & Using Dynamic API Routes
821 -
Exploring Different Ways Of Structuring API Route Files
309 -
Module Summary
104 -
Module Resources
-
Module Introduction
91 -
Starting Setup & A Challenge For You!
315 -
Adding a Newsletter Route
670 -
Adding Comments API Routes
523 -
Connecting the Frontend To the Comments API Routes
659 -
Setting Up A MongoDB Database
342 -
Running MongoDB Queries From Inside API Routes
554 -
Inserting Comments Into The Database
386 -
Getting Data From The Database
271 -
Adding Error Handling
453 -
More Error Handling
647 -
A Final Note On MongoDB Connections
-
Module Summary
105 -
Improvement: Getting Comments For A Specific Event
-
Module Resources
-
Module Introduction
87 -
Our Target State & Starting Project
272 -
Creating a New React Context
337 -
Adding Context State
229 -
Using Context Data In Components
277 -
Example: Triggering & Showing Notifications
395 -
Example: Removing Notifications (Automatically)
391 -
Challenge Solution
442 -
Module Summary
69 -
Module Resources
-
Module Introduction
179 -
Setting Up The Core Pages
310 -
Getting Started With The Home Page
329 -
Adding The "Hero" Component
527 -
Adding Layout & Navigation
525 -
Time To Add Styling & A Logo
198 -
Starting Work On The "Featured Posts" Part
347 -
Adding A Post Grid & Post Items
580 -
Rendering Dummy Post Data
745 -
Adding the "All Posts" Page
239 -
Working On The "Post Detail" Page
610 -
Rendering Markdown As JSX
150 -
Adding Markdown Files As A Data Source
452 -
Adding Functions To Read & Fetch Data From Markdown Files
820 -
Using Markdown Data For Rendering Posts
499 -
Rendering Dynamic Post Pages & Paths
702 -
Rendering Custom HTML Elements with React Markdown
-
Rendering Images With The "Next Image" Component (From Markdown)
766 -
Rendering Code Snippets From Markdown
389 -
Preparing The Contact Form
258 -
Adding The Contact API Route
266 -
Sending Data From The Client To The API Route
446 -
Storing Messages With MongoDB In A Database
532 -
Adding UI Feedback With Notifications
905 -
Adding "head" Data
412 -
Adding A "_document.js" File
175 -
Using React Portals
225 -
Module Summary
84 -
Module Resources
-
Module Introduction
77 -
Building NextJS Apps: Your Options
485 -
Key Deployment Steps
186 -
Checking & Optimizing Our Code
191 -
The NextJS Config File & Working With Environment Variables
865 -
Running a Test Build & Reducing Code Size
441 -
A Full Deployment Example (To Vercel)
1060 -
A Note On Github & Secret Credentials
117 -
Using the "export" Feature
136 -
Module Summary
38 -
Module Resources
-
Module Introduction
76 -
Our Starting Project
105 -
How Does Authentication Work (In React & NextJS Apps)?
863 -
Must Read: Install the Right next-auth Version
-
Using The "next-auth" Library
184 -
Adding A User Signup API Route
779 -
Sending Signup Requests From The Frontend
581 -
Improving Signup With Unique Email Addresses
180 -
Adding the "Credentials Auth Provider" & User Login Logic
848 -
Sending a "Signin" Request From The Frontend
412 -
Managing Active Session (On The Frontend)
357 -
Adding User Logout
138 -
Adding Client-Side Page Guards (Route Protection)
470 -
Adding Server-Side Page Guards (And When To Use Which Approach)
461 -
Protecting the "Auth" Page
346 -
Using the "next-auth" Session Provider Component
314 -
Analyzing Further Authentication Requirements
222 -
Protecting API Routes
397 -
Adding the "Change Password" Logic
636 -
Sending a "Change Password" Request From The Frontend
556 -
Module Summary & Final Steps
209 -
Module Resources
-
Module Introduction
183 -
What is NextJS?
285 -
Key Feature: Server-side (Pre-) Rendering of Pages
398 -
Key Feature: File-based Routing
193 -
Key Feature: Build Fullstack Apps With Ease
110 -
Creating a NextJS Project & IDE Setup
374 -
About the "App Router"
167 -
Analyzing the Created Project
172 -
Adding First Pages To The Project
365 -
Adding Nested Pages / Paths
227 -
Creating Dynamic Pages
216 -
Extracting Dynamic Route Data
247 -
Linking Between Pages
433 -
Onwards To A Bigger Project!
212 -
Preparing Our Project Pages
222 -
Rendering A List Of (Dummy) Meetups
303 -
Adding A Form For Adding Meetups
234 -
The "_app.js" File & Wrapper Components
377 -
Programmatic Navigation
227 -
Adding Custom Components & Styling With CSS Modules
600 -
How NextJS Page Pre-Rendering Actually Works
352 -
Introducing Data Fetching For Page Generation (getStaticProps)
536 -
More Static Site Generation (SSG) With getStaticProps
344 -
Exploring getServerSideProps
387 -
Working With Dynamic Path Params In getStaticProps
314 -
Dynamic Pages & getStaticProps & getStaticPaths
436 -
Introducing API Routes
380 -
Connecting & Querying a MongoDB Database
572 -
Sending HTTP Requests To API Routes
409 -
Getting Data From The Database (For Page Pre-Rendering)
429 -
Getting Meetup Detail Data & Paths
581 -
Adding "head" Metadata To Pages
559 -
Deploying NextJS Projects
746 -
Working With Fallback Pages & Re-Deploying
253 -
Module Summary
131 -
Module Resources
Requirment
-
ReactJS knowledge is strongly recommended, but the course also includes a complete React refresher module
-
NO prior NextJS knowledge is required
Outcomes
-
Learn how to build fullstack React apps with NextJS 15 & the App Router
-
Build real projects and apply what you learned with hands-on projects and examples
-
Learn about different ways of building NextJS app - App Router vs Pages Router
-
Get started with React Server Components, Client Components, data fetching & more!
-
Handle data submissions via Server Actions
-
Learn all key NextJS features like pre-rendering, SSR, data fetching, file-based routing and authentication
-
Take the full course or the "NextJS Summary" module for a quickstart if you have limited time
0 Student
3 Courses
0 review