Урок 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