Урок 1.
00:02:56
A Little Setup
Урок 2.
00:04:55
What is React
Урок 3.
00:14:16
Building an App With Vanilla JS
Урок 4.
00:02:19
Discussing the Annoyances We Faced
Урок 5.
00:18:29
Building the Same App With ReactJS
Урок 6.
00:12:32
Creating a React App
Урок 7.
00:09:52
Exploring the Files and Folders
Урок 8.
00:08:51
State and Event Handling
Урок 9.
00:02:59
Project Intro
Урок 10.
00:07:40
Class vs ClassName
Урок 11.
00:07:53
Building the JSX Structure
Урок 12.
00:02:42
Listing Out Everything We Need to Work On
Урок 13.
00:10:26
Two Way Binding
Урок 14.
00:11:52
Defining an Array State
Урок 15.
00:05:26
Iterating Through the List to Render Elements
Урок 16.
00:04:22
The Key Prop
Урок 17.
00:05:14
Computing the Quantity
Урок 18.
00:04:09
Conditionally Render JSX Elements
Урок 19.
00:06:24
Deleting an Item
Урок 20.
00:07:38
Two Way Binding a List Item
Урок 21.
00:10:10
The useEffect Hook
Урок 22.
00:07:28
Project Introduction
Урок 23.
00:10:07
Building the JSX Structure
Урок 24.
00:08:24
Two Way Binding
Урок 25.
00:07:13
A Cleaner and DRYer Way of Two Way Binding
Урок 26.
00:08:21
Input Validation and Conditional Styling
Урок 27.
00:12:38
Storing Store List and Map Through List to Render Elements
Урок 28.
00:07:14
Installing Dependencies
Урок 29.
00:07:29
Computing a New State
Урок 30.
00:06:58
Project Introduction
Урок 31.
00:12:55
Building the JSX Structure for the Home Page
Урок 32.
00:10:32
Dividing Our JSX into Components
Урок 33.
00:10:51
Passing Props to Components
Урок 34.
00:09:46
Understanding Routing
Урок 35.
00:12:07
How React Renders Content to the Browser (CSR vs SSR)
Урок 36.
00:05:05
Installing react-router-dom
Урок 37.
00:05:38
Defining Our Routing Rules
Урок 38.
00:03:23
Adding Another Page to Our App
Урок 39.
00:08:27
Nested Routes for Common Elements
Урок 40.
00:07:14
Link Based Navigation
Урок 41.
00:05:32
Defining Dynamic Routes
Урок 42.
00:08:00
The useParams Hook for Extracting the Params
Урок 43.
00:05:56
The useNavigate Hook for Programmatic Navigation
Урок 44.
00:07:01
Where Will the Data Come From
Урок 45.
00:06:22
Fetching Data From an API With Our React App
Урок 46.
00:08:08
Iterating Through the Fetched Data
Урок 47.
00:05:33
Encapsulating the Fetch Logic in a Custom Hook
Урок 48.
00:07:07
Handling a Loading State
Урок 49.
00:04:22
Handling an Error State
Урок 50.
00:12:01
Querying for Data by Keyword
Урок 51.
00:02:34
A Quick Fix
Урок 52.
00:07:41
Another Custom Hook
Урок 53.
00:13:26
Traversing and Rendering the Data
Урок 54.
00:06:42
The Children Prop
Урок 55.
00:08:12
Building the Recipe Info Component
Урок 56.
00:03:34
Potentials Issues With the State We Defined
Урок 57.
00:14:19
The useReducer Hook
Урок 58.
00:09:47
Adding Query Params
Урок 59.
00:06:16
Handling Error State with an Error Message
Урок 60.
00:05:24
A 404 Error Page
Урок 61.
00:06:28
More Nested Pages
Урок 62.
00:07:03
Passing Data to an Outlet With useOutletContext
Урок 63.
00:03:55
Wrapping Things Up
Урок 64.
00:07:07
Deploying the Application
Урок 65.
00:01:30
Viewing Our Deployment
Урок 66.
00:03:23
React Has Many Hooks
Урок 67.
00:01:45
The useRef Hook
Урок 68.
00:09:45
Building a Mini Project With useState
Урок 69.
00:07:55
Improving Performance With useRef
Урок 70.
00:08:42
Referencing Elements with useRef
Урок 71.
00:13:14
The useMemo Hook
Урок 72.
00:07:43
Memo and Props
Урок 73.
00:15:01
The useCallback Hook
Урок 74.
00:03:48
An Intro to TypeScript
Урок 75.
00:04:32
Creating a TypeScript React App
Урок 76.
00:16:09
A Quick TypeScript Lesson
Урок 77.
00:05:23
Exploring the Starter Code
Урок 78.
00:07:03
State with TypeScript
Урок 79.
00:07:34
Props with TypeScript
Урок 80.
00:15:41
Params with TypeScript
Урок 81.
00:02:51
Installing Packages with TypeScript
Урок 82.
00:08:45
Major Project Introduction
Урок 83.
00:02:31
Creating a TypeScript React App
Урок 84.
00:08:08
Tailwind Integration
Урок 85.
00:12:00
Building the NavBar
Урок 86.
00:11:45
Building the Home Page
Урок 87.
00:09:39
Building the Login Page
Урок 88.
00:14:57
Building the Plans Page
Урок 89.
00:24:23
Building the Browse Page
Урок 90.
00:07:50
Building the Watch Page
Урок 91.
00:09:16
Implementing Page Navigation
Урок 92.
00:06:46
How Will We Get the Data?
Урок 93.
00:09:21
Building an Express Server
Урок 94.
00:03:21
Create a Movies List GET Endpoint
Урок 95.
00:15:47
useReducer with TypeScript
Урок 96.
00:08:51
Fetching the Data From the Hook
Урок 97.
00:06:27
Consuming the Data in Our Browse Page
Урок 98.
00:01:09
Fixing the Card Styles
Урок 99.
00:04:21
Conditionally Adding a NavBar Background
Урок 100.
00:02:41
Navigating to the Watch Page
Урок 101.
00:02:57
Creating a Movie GET Endpoint
Урок 102.
00:08:53
Fetching and Rendering the Data From React
Урок 103.
00:03:49
Introduction to Pagination
Урок 104.
00:05:17
Types of Pagination
Урок 105.
00:04:35
Offsets and Limits
Урок 106.
00:03:05
Returning Paginated Data From the Server
Урок 107.
00:13:13
Intersection Obersever API to Detecting the Visibility of an Element
Урок 108.
00:06:14
Appending the Data Instead of Replacing
Урок 109.
00:07:28
Adding a Loading State
Урок 110.
00:08:14
Prevent Refetching When Client Has All the Data
Урок 111.
00:05:54
Introduction to Database Solutions
Урок 112.
00:04:37
Spinning Up a Postgres Database
Урок 113.
00:06:12
Raw SQL vs ORM
Урок 114.
00:11:18
Defining Our Schema & Connecting to the DB
Урок 115.
00:10:16
Writing and Executing a Seed Script
Урок 116.
00:09:12
Refactoring Our Endpoints to Fetch Data With Prisma
Урок 117.
00:04:52
Introduction to Authentication
Урок 118.
00:07:32
Refactoring Common Endpoints to Separate Files
Урок 119.
00:14:46
Validating the User Inputs
Урок 120.
00:04:13
Validating That the User Doesn't Already Exist
Урок 121.
00:06:21
Three Different Ways to Store a Password
Урок 122.
00:05:39
Hashing and Saving the Password
Урок 123.
00:02:34
Saving the User
Урок 124.
00:08:32
Forming and Returning a JSON Web Token
Урок 125.
00:09:39
The Sign In Endpoint
Урок 126.
00:09:04
The Me Endpoint
Урок 127.
00:01:33
Back to the Client
Урок 128.
00:06:43
Fixing the Form Card
Урок 129.
00:02:13
The React Hook Form Library
Урок 130.
00:07:06
Setting Up the Form With the useForm Hook
Урок 131.
00:08:14
Managing State and Two Way Binding
Урок 132.
00:09:24
Validating the Form Input Values
Урок 133.
00:06:14
Handling Error States
Урок 134.
00:02:32
Bring Things Together
Урок 135.
00:06:08
Creating a useAuth Hook
Урок 136.
00:07:06
Making the HTTP Requests
Урок 137.
00:08:55
Handling Auth Errors
Урок 138.
00:03:36
Navigating to the Browse Page Upon Successful Authentication
Урок 139.
00:05:42
Storing the JWT in the Browser's Cookie
Урок 140.
00:12:38
Introduction to Redux Toolkit
Урок 141.
00:06:24
Defining Our Global State
Урок 142.
00:10:48
Persisting the Authentication State
Урок 143.
00:07:14
Defining Private Routes
Урок 144.
00:04:44
Adding the Logout Logic
Урок 145.
00:02:53
Time to Make Some Money
Урок 146.
00:02:56
Adding Products to Stripe
Урок 147.
00:08:08
Connecting Our Server to Stripe
Урок 148.
00:05:04
Defining the Products Endpoint
Урок 149.
00:12:38
The usePlans Hook
Урок 150.
00:12:22
Rendering the Plans
Урок 151.
00:11:34
Defining a Session Endpoint
Урок 152.
00:12:34
Purchasing a Subscription From the Client
Урок 153.
00:04:37
Walking Through All User Flows
Урок 154.
00:01:36
Show the Plans Page Only if You Are Authenticated
Урок 155.
00:11:49
A Check Auth Middleware
Урок 156.
00:08:26
Creating a My Subscription Endpoint
Урок 157.
00:14:16
Redirect Users that Have Plans to the Manage Plans Page
Урок 158.
00:04:47
Manage Page Redirection
Урок 159.
00:11:05
Add Permission Logic to the Movie List Endpoint
Урок 160.
00:04:34
Redirect User to the Plan Page if They Don't Have a Subscription
Урок 161.
00:09:36
Premium Plan Permissions