Урок 1. 00:04:00
01. Intro to Full Stack Foundations Workshop
Урок 2. 00:02:44
02. Intro to Styling
Урок 3. 00:01:46
03. Manage Asset Links in a Remix Application
Урок 4. 00:03:07
04. Using Remix's Links Component
Урок 5. 00:04:16
05. Asset Import Caching Issue
Урок 6. 00:03:55
06. Caching the Favicon
Урок 7. 00:00:50
07. Add Custom Fonts to the Global CSS
Урок 8. 00:02:35
08. Adding Global Styles to a Remix App
Урок 9. 00:01:38
09. Using PostCSS and Tailwind CSS in Remix
Урок 10. 00:05:18
10. PostCSS and Tailwind CSS Configuration
Урок 11. 00:01:40
11. Bundling CSS in Remix
Урок 12. 00:06:13
12. Configure CSS Bundling
Урок 13. 00:00:19
13. Dad Joke Break
Урок 14. 00:08:45
14. Intro to Routing
Урок 15. 00:01:40
15. Routing in Remix
Урок 16. 00:08:24
16. Creating User Profile and Notes Pages with Remix Routes
Урок 17. 00:00:51
17. Adding Navigation Links
Урок 18. 00:05:34
18. Adding Absolute and Relative Links
Урок 19. 00:00:56
19. Adding Dynamic Parameter Support
Урок 20. 00:03:58
20. Access Params with useParams
Урок 21. 00:02:48
21. Adding a Resource Route
Урок 22. 00:06:41
22. Example Resource Route Usage
Урок 23. 00:00:33
23. Dad Joke Break_2
Урок 24. 00:03:41
24. Intro to Loading
Урок 25. 00:01:37
25. Loading Data to Your Database
Урок 26. 00:11:31
26. Efficient Data Loading in a Remix App
Урок 27. 00:01:17
27. Handling Error Messages
Урок 28. 00:05:36
28. Handling Error Responses with Remix
Урок 29. 00:00:30
29. Dad Joke Break Loading
Урок 30. 00:07:43
30. Intro to Mutations
Урок 31. 00:00:53
31. Building Forms
Урок 32. 00:03:53
32. Creating Form Components with Remix
Урок 33. 00:01:04
33. Handling POST Requests for Form Submission
Урок 34. 00:06:26
34. Handling Form Submissions and Mutations
Урок 35. 00:01:30
35. Handling Form Errors and User Mistakes
Урок 36. 00:04:26
36. Form Data Types and Validation
Урок 37. 00:01:04
37. Button Forms Data
Урок 38. 00:03:34
38. Form Submissions and Mutations
Урок 39. 00:01:01
39. Handling Multiple Actions in a Single Action Function
Урок 40. 00:04:00
40. Leveraging Name and Value in Buttons for Multiple Form Submissions
Урок 41. 00:00:17
41. Dad Joke Break Mutations
Урок 42. 00:05:28
42. Intro to Scripting
Урок 43. 00:02:25
43. JavaScript in Remix- From Optional to Essential
Урок 44. 00:05:37
44. Improving User Experience with Client-Side JavaScript
Урок 45. 00:01:29
45. Page Navigation with Scroll Behavior
Урок 46. 00:02:04
46. Enhancing Scroll Restoration
Урок 47. 00:07:24
47. Environment Variables for Client-Side and Server-Side
Урок 48. 00:06:45
48. Exposing Environment Variables in a Web Application
Урок 49. 00:02:09
49. Optimizing Resource Loading with JavaScript Prefetching
Урок 50. 00:04:26
50. Enhancing User Experience with Prefetching
Урок 51. 00:01:55
51. Improve the UX with Pending UI
Урок 52. 00:06:37
52. Adding Pending State to Form Submissions with Remix
Урок 53. 00:00:28
53. Dad Joke Break Scripting
Урок 54. 00:03:43
54. Intro to Search Engine Optimization (SEO)
Урок 55. 00:00:52
55. Configuring Meta Tags
Урок 56. 00:02:18
56. Meta Tags for Better SEO and UX
Урок 57. 00:00:36
57. Dynamic Metadata for Different Routes
Урок 58. 00:04:51
58. Managing Meta Tags and Descriptions in RemixRunReact
Урок 59. 00:01:24
59. Customizing Meta Tags with Dynamic Data
Урок 60. 00:03:02
60. Handling Dynamic Data with Remix's Meta Function
Урок 61. 00:01:41
61. Optimizing Metadata for User Info
Урок 62. 00:08:41
62. Implementing Dynamic Meta Data for Routes in a TypeScript Application
Урок 63. 00:00:29
63. Dad Joke Break - SEO
Урок 64. 00:02:57
64. Intro to Error Handling
Урок 65. 00:00:38
65. Improving Error Handling and UI on User Profile Page
Урок 66. 00:05:38
66. Error Handling and Error Boundaries
Урок 67. 00:01:55
67. Handling Expected Errors with Error Boundaries
Урок 68. 00:02:28
68. Improving Error Messages for User
Урок 69. 00:01:31
69. Streamlining Error Handling in Routes with a General Error Boundary
Урок 70. 00:05:38
70. Error Boundaries and Handling in Nested Routes
Урок 71. 00:02:11
71. Improving Error Handling with a Document Component
Урок 72. 00:02:53
72. Refactoring App Components for Better Error Handling
Урок 73. 00:02:01
73. Handling 404 Errors in React Router with Splat Routes
Урок 74. 00:04:09
74. Handling 404 Errors with Splat Routes in Remix
Урок 75. 00:00:32
75. Dad Joke Break_3
Урок 76. 00:01:00
76. Outro to Full Stack Foundations Workshop
Урок 77. 00:02:11
01. Intro to Professional Web Forms Workshop
Урок 78. 00:01:32
02. Intro to Form Validation
Урок 79. 00:00:52
03. Required Field Validation for User Input
Урок 80. 00:01:52
04. Form Validation for Accessibility
Урок 81. 00:01:20
05. Server-side Validation and Custom Error Messages
Урок 82. 00:09:42
06. Server-Side Form Validation and Error Handling
Урок 83. 00:00:49
07. Dynamic Error Validation with Hooks
Урок 84. 00:02:44
08. Form Validation with Client-Side Hydration
Урок 85. 00:00:21
09. Dad Joke Break From Validation
Урок 86. 00:07:56
10. Intro to Accessibility
Урок 87. 00:01:10
11. Fixing Form Reset Button and Accessibility Issues
Урок 88. 00:06:12
12. Improving Accessibility and Form Associations
Урок 89. 00:02:02
13. Error Messages and Accessibility with ARIA Attributes
Урок 90. 00:05:51
14. Accessible Forms with ARIA Attributes
Урок 91. 00:01:23
15. Focus Management for Better User Experience
Урок 92. 00:07:34
16. Managing Focus for Form Errors
Урок 93. 00:00:40
17. Dad Break Joke Accessibility
Урок 94. 00:06:44
18. Intro to Schema Validation
Урок 95. 00:00:30
19. Schema Validation
Урок 96. 00:03:50
20. Schema Validation with Zod
Урок 97. 00:01:09
21. Form Data Parsing with Conform
Урок 98. 00:03:21
22. Form Submission and Error Handling with Conform & Zod
Урок 99. 00:00:30
23. Type Safety with Conform
Урок 100. 00:08:15
24. Simplifying Form Handling with Conform and Schema Validation
Урок 101. 00:00:39
25. Dad Joke Break Schema Validation
Урок 102. 00:05:09
26. Intro to File Upload
Урок 103. 00:01:19
27. File Upload Functionality
Урок 104. 00:12:27
28. Image Upload with Form Data and Memory Upload Handling
Урок 105. 00:00:37
29. TypeScript Integration
Урок 106. 00:05:43
30. Validating File Uploads with Zod Schema in a Web Application
Урок 107. 00:01:00
31. Dad Joke Break File Upload
Урок 108. 00:06:07
32. Intro to Complex Structures
Урок 109. 00:00:47
33. Grouping and Managing Related Fields in Form Objects
Урок 110. 00:10:42
34. Implementing Image Field Set with Conform and TypeScript
Урок 111. 00:01:12
35. Multiple Image Uploading
Урок 112. 00:04:57
36. Dynamic Image Lists with Field Sets
Урок 113. 00:02:30
37. Interactive Image Management
Урок 114. 00:10:21
38. Dynamically Delete and Add Buttons
Урок 115. 00:00:29
39. Dad Joke Break Complex Structures
Урок 116. 00:04:03
40. Intro to Honeypot
Урок 117. 00:01:01
41. Adding a Honeypot to Protect Against Spam Bots
Урок 118. 00:06:14
42. Honeypot Fields in Sign Up Forms
Урок 119. 00:04:41
43. Honeypot Fields for Form Security
Урок 120. 00:00:52
44. Honeypots for Form Security
Урок 121. 00:04:01
45. Honeypot Protection
Урок 122. 00:01:27
46. Consistent Encryption with Honeypot Server
Урок 123. 00:03:10
47. Setting Up Honeypot Security for Server Environment Variables
Урок 124. 00:00:33
48. Dad Joke Break Honeypot
Урок 125. 00:05:08
49. Intro to CSRF
Урок 126. 00:01:12
50. CSRF Protection with Cookies
Урок 127. 00:09:05
51. Creating and Managing CSRF Tokens With Node.js
Урок 128. 00:01:06
52. Authenticity With Token Protection
Урок 129. 00:05:21
53. Security with Authenticity Token and CSRF Validation
Урок 130. 00:00:14
54. Dad Joke Break CSRF
Урок 131. 00:02:12
55. Intro to Rate Limit
Урок 132. 00:01:14
56. Optimizing Your Express Server with Rate Limiting Middleware
Урок 133. 00:04:33
57. Safeguarding Your Server- Adding Rate Limit Configuration
Урок 134. 00:01:24
58. Tiered Rate Limiting with Custom Middleware
Урок 135. 00:04:45
59. Applying Rate Limiting
Урок 136. 00:00:34
60. Dad Joke Break Rate Limit
Урок 137. 00:00:52
61. Outro to Professional Web Forms Workshop
Урок 138. 00:02:11
01. Intro to Data Modeling Deep Dive Workshop
Урок 139. 00:03:21
02. Intro to Database Schema
Урок 140. 00:00:42
03. Setting Up the Database with Prisma
Урок 141. 00:09:33
04. Database with Prisma and SQLite
Урок 142. 00:00:32
05. Dad Joke Break Database Schema
Урок 143. 00:06:16
06. Intro to Data Relationships
Урок 144. 00:01:41
07. One-to-Many Relationships
Урок 145. 00:06:26
08. One-to-Many Relationships in Prisma
Урок 146. 00:05:50
09. Database Design
Урок 147. 00:08:17
10. One-to-One and One-to-Many Relationships in Prisma
Урок 148. 00:00:37
11. Dad Joke Break Data Relationships
Урок 149. 00:05:22
12. Intro to Data Migrations
Урок 150. 00:00:40
13. Creating Migration Files for Database Management with Prisma
Урок 151. 00:05:22
14. Database Migrations with Prisma
Урок 152. 00:00:35
15. Dad Joke Break Data Migrations
Урок 153. 00:03:41
16. Intro to Seeding Data
Урок 154. 00:00:35
17. Configuring Prisma for Seed Script Execution
Урок 155. 00:03:55
18. Creating and Managing Data with Prisma Seed Scripts
Урок 156. 00:01:09
19. Optimizing Queries with Nested Mutations in Prisma
Урок 157. 00:01:53
20. Nested Queries in Database Operations
Урок 158. 00:00:58
21. Dad Joke Break Seeding Data
Урок 159. 00:01:53
22. Intro to Generating Seed Data
Урок 160. 00:00:30
23. Generating Fake Data for Efficient Testing
Урок 161. 00:01:43
24. Generating Random User Data with Faker.js for Database Seeding
Урок 162. 00:02:20
25. Dynamically Generating Data
Урок 163. 00:05:51
26. Generating Dynamic Seed Data
Урок 164. 00:01:03
27. Creating Unique User Data with Enforce Unique Library
Урок 165. 00:04:59
28. Generating Unique and Valid Usernames in Seed Data
Урок 166. 00:00:31
29. Dad Joke Break Generating Seed Data
Урок 167. 00:05:24
30. Intro to Querying Data
Урок 168. 00:01:01
31. Connecting to a Real Database with Prisma and SQLite
Урок 169. 00:07:29
32. Optimizing Prisma Client for Efficient Database Operations
Урок 170. 00:00:35
33. Transitioning to Real Database with Prisma API
Урок 171. 00:03:29
34. Using Prisma to Retrieve User Data from a SQLite Database
Урок 172. 00:00:30
35. Database Queries and Migrating to Prisma
Урок 173. 00:02:46
36. Efficient Data Retrieval with Prisma and Subselects
Урок 174. 00:00:58
37. Dad Joke Break Querying Data
Урок 175. 00:02:59
38. Intro to Updating Data
Урок 176. 00:00:39
39. Mutating Data with Prisma
Урок 177. 00:00:55
40. Deleting Data with Prisma
Урок 178. 00:03:27
41. Updating Page Mutations for Images and Notes with Efficient Cache Control
Урок 179. 00:05:13
42. Efficiently Updating and Deleting Data in a Form with Prisma
Урок 180. 00:02:00
43. Implementing Transactions for Reliable Data Operations
Урок 181. 00:02:50
44. Implementing Transactions with Prisma for Atomic Database Operations
Урок 182. 00:00:38
45. Optimizing Database Calls with Nested Queries in Prisma
Урок 183. 00:04:27
46. Efficient Database Updates with Prisma's Nested Queries
Урок 184. 00:00:26
47. Dad Joke Break Updating Data
Урок 185. 00:04:31
48. Intro to SQL
Урок 186. 00:01:22
49. SQL Queries for User Search in Prisma
Урок 187. 00:02:48
50. User Search with Prisma and SQL
Урок 188. 00:01:28
51. Handling TypeScript Errors and Runtime Type Checking with Prisma and Zod
Урок 189. 00:06:16
52. Runtime Type Checking and Parsing in Prisma with Raw Queries
Урок 190. 00:03:10
53. Working with Joins in SQL
Урок 191. 00:02:24
54. Left Joins with Prisma and SQLite
Урок 192. 00:01:24
55. Sorting Users by Recent Entry with Raw SQL
Урок 193. 00:03:57
56. Leveraging AI Assistance for Writing SQL Queries
Урок 194. 00:00:29
57. Dad Joke Break SQL
Урок 195. 00:12:19
58. Intro to Query Optimization
Урок 196. 00:00:54
59. Optimizing Query Performance with Indexes in Prisma
Урок 197. 00:05:07
60. Optimizing Database Queries with Indexes
Урок 198. 00:02:29
61. Optimizing User Search Query Performance with Indexing
Урок 199. 00:13:56
62. Query Performance with Indexes in SQLite
Урок 200. 00:00:47
63. Dad Joke Break Query Optimization
Урок 201. 00:00:28
64. Outro to Data Modeling Deep Dive Workshop
Урок 202. 00:04:44
01. Intro to Authentication Strategies & Implementation Workshop
Урок 203. 00:04:41
02. Intro to Cookies
Урок 204. 00:01:48
03. Implementing Theme Switching with Conform and UseFetcher
Урок 205. 00:03:58
04. Creating a Theme Switcher with Form Submission and Fetcher in React
Урок 206. 00:00:41
05. Adding User Preference for Dark Mode
Урок 207. 00:09:46
06. Implementing Cookies for Theme Selection
Урок 208. 00:01:17
07. Implementing Optimistic UI for Theme Switching
Урок 209. 00:05:16
08. Implementing Optimistic UI with Remix
Урок 210. 00:00:38
09. Dad Joke Break Cookies
Урок 211. 00:04:01
10. Intro to Session Storage
Урок 212. 00:01:46
11. Toast Messages with Cookies
Урок 213. 00:04:54
12. Configuring Cookie Session Storage for Toast Messages
Урок 214. 00:00:46
13. Adding Toast Notifications to Delete Functionality
Урок 215. 00:04:57
14. Managing Toast Messages with Cookie Sessions
Урок 216. 00:00:39
15. Improving Note Deletion Functionality with Multiple Cookies
Урок 217. 00:04:59
16. Efficiently Updating and Serializing Cookies
Урок 218. 00:00:47
17. Implementing Flash Messages for Temporary Notifications
Урок 219. 00:00:48
18. Efficiently Removing Toast Messages with Flash API
Урок 220. 00:00:16
19. Dad Joke Break Session Storage
Урок 221. 00:00:49
20. Intro to User Sessions
Урок 222. 00:00:23
21. Managing User Sessions with Separate Cookies
Урок 223. 00:01:15
22. Secure Cookie Session Storage
Урок 224. 00:01:18
23. User Authentication and Session Management
Урок 225. 00:06:21
24. User Authentication and Session Management with Login Forms
Урок 226. 00:00:21
25. Load User Avatars
Урок 227. 00:02:38
26. Handling User Authentication and Session Management with Prisma
Урок 228. 00:00:30
27. Dad Joke Break User Sessions
Урок 229. 00:04:46
28. Intro to Password
Урок 230. 00:00:37
29. Creating an Optional Password Model in Prisma Schema
Урок 231. 00:02:52
30. Model Relationships and Handling Passwords in Database Schema
Урок 232. 00:00:58
31. Generating Passwords for Secure User Creation
Урок 233. 00:03:41
32. Secure Password Creation with Prisma
Урок 234. 00:00:21
33. Enhancing User Creation by Adding Passwords
Урок 235. 00:01:47
34. Creating and Hashing Passwords for User Sign-Up
Урок 236. 00:00:22
35. Dad Joke Break Password
Урок 237. 00:03:59
36. Intro to Login
Урок 238. 00:00:18
37. Secure Password Authentication with bcrypt Compare in Node.js
Урок 239. 00:03:40
38. Implementing Secure Password Verification in User Login
Урок 240. 00:00:45
39. Securing UI Elements
Урок 241. 00:00:28
40. Dad Joke Break Login
Урок 242. 00:08:40
41. Leveraging Utility Functions for User Data Handling and UI Customization
Урок 243. 00:01:08
42. Intro to Logout
Урок 244. 00:00:33
43. Transforming a Logout Link into a Secure Logout Form
Урок 245. 00:03:55
44. Logout Functionality with Session Storage and CSRF Protection
Урок 246. 00:02:59
45. Implementing Remember Me Functionality for Login Sessions
Урок 247. 00:05:04
46. Implementing Remember Me Functionality
Урок 248. 00:00:59
47. Managing Inactive User Sessions
Урок 249. 00:01:31
48. Destroying Sessions and Handling Weird States
Урок 250. 00:03:04
49. Implementing Automatic Logout with Modals
Урок 251. 00:06:08
50. Auto-Logout Functionality
Урок 252. 00:00:42
51. Dad Joke Break Logout
Урок 253. 00:01:54
52. Intro to Protecting Routes
Урок 254. 00:00:49
53. Creating Protected Routes
Урок 255. 00:02:54
54. Creating an Auth Utility
Урок 256. 00:01:06
55. Building a Profile Page
Урок 257. 00:03:57
56. User Authentication and Authorization
Урок 258. 00:01:22
57. Securing User Access
Урок 259. 00:04:33
58. Authorization and User Authentication
Урок 260. 00:02:05
59. Redirect Functionality
Урок 261. 00:08:20
60. Handling Redirects Safely in User Authentication
Урок 262. 00:00:32
61. Dad Joke Break Protecting Routes
Урок 263. 00:03:38
62. Intro to Permissions
Урок 264. 00:00:51
63. Role-Based Access Control with Prisma
Урок 265. 00:06:36
64. Modeling Permissions and Roles in Prisma Database
Урок 266. 00:01:54
65. Managing Roles and Permissions
Урок 267. 00:07:51
66. Seed Data
Урок 268. 00:01:34
67. Implementing User Permissions and Authorization Logic
Урок 269. 00:10:35
68. Implementing Role-Based Permissions
Урок 270. 00:01:13
69. Securing Admin Pages with User Permissions
Урок 271. 00:09:44
70. Implementing Role-based Access Control and Permissions
Урок 272. 00:00:39
71. Dad Joke Break Permissions
Урок 273. 00:00:59
72. Intro to Man Sessions
Урок 274. 00:00:53
73. Managing User Sessions and Allowing Data Downloads
Урок 275. 00:01:57
74. Integrating User Sessions into the Login Process
Урок 276. 00:00:49
75. Implementing Session-Based Authentication
Урок 277. 00:06:44
76. Authentication Logic with Session IDs and User Creation
Урок 278. 00:00:30
77. Improving Login and Signup Flows with Session Management
Урок 279. 00:02:46
78. Updating Login and Signup Routes to Use Sessions instead of User IDs
Урок 280. 00:01:18
79. Proactive Session Management
Урок 281. 00:04:49
80. Managing Sessions and Sign Out in Web Applications
Урок 282. 00:00:30
81. Dad Joke Break Man Sessions
Урок 283. 00:03:33
82. Intro to Email
Урок 284. 00:01:03
83. Integrating Email Services
Урок 285. 00:05:19
84. Sending Emails with the Resend API using Fetch
Урок 286. 00:01:46
85. Mocking APIs with MSW and Testing
Урок 287. 00:12:12
86. Setting Up a Mock Server with MSW Node
Урок 288. 00:01:33
87. Email Verification Flow
Урок 289. 00:01:05
88. User Verification Emails
Урок 290. 00:01:52
89. Secure Email Transfer and Storage with Cookies for Onboarding
Урок 291. 00:07:54
90. Passing Data Between Routes
Урок 292. 00:00:29
91. Dad Joke Break Email
Урок 293. 00:05:12
92. Intro to Verification
Урок 294. 00:00:43
93. Implementing One-Time Password Verification with Database Storage
Урок 295. 00:04:10
94. Creating a Verification Model in Prisma for User Verification
Урок 296. 00:02:03
95. User Verification Workflow
Урок 297. 00:07:47
96. Generating One-Time Passwords and Verification URLs in a Signup Flow
Урок 298. 00:01:07
97. Implementing User Code Verification with TOTP
Урок 299. 00:12:20
98. Verification Flow and Dynamic Query Parameters
Урок 300. 00:00:31
99. Dad Joke Break Verification
Урок 301. 00:01:44
100. Intro to Reset Password
Урок 302. 00:02:32
101. Implementing Forgot Password and Reset Password Flows
Урок 303. 00:11:06
102. Resetting Passwords and Handling Verification
Урок 304. 00:00:52
103. User Authentication and Password Reset Flow
Урок 305. 00:05:59
104. Secure Password Reset Flow Implementation
Урок 306. 00:00:46
105. Dad Joke Break Reset Pass
Урок 307. 00:01:33
106. Intro to Change Email
Урок 308. 00:00:57
107. Implementing Email Verification for Changing Email Addresses
Урок 309. 00:04:33
108. Implementing Email Change Verification
Урок 310. 00:00:26
109. Handling Email Verification and Updates
Урок 311. 00:06:17
110. Implementing a Secure Email Change Flow
Урок 312. 00:00:23
111. Dad Joke Break Change Email
Урок 313. 00:02:12
112. Intro to Enable Two-Factor Authentication
Урок 314. 00:01:02
113. Implementing Two-Factor Authentication Verification
Урок 315. 00:04:22
114. Two-Factor Authentication with TOTP Codes
Урок 316. 00:01:20
115. Generating Two-Factor Authentication Codes and QR Codes
Урок 317. 00:05:09
116. Generating QR Code and Auth URI for Two-Factor Authentication
Урок 318. 00:02:09
117. Testing the Two-Factor Authentication Setup
Урок 319. 00:09:25
118. Two-Factor Authentication Code Verification
Урок 320. 00:01:05
119. Dad Joke Break Enable Two-Factor Authentication
Урок 321. 00:01:55
120. Intro to Verify Two-Factor Authentication (2FA)
Урок 322. 00:00:37
121. Two-Factor Authentication and Session Verification
Урок 323. 00:06:26
122. Implementing Two-Factor Authentication Flow
Урок 324. 00:03:08
123. Switching to Verified Session ID After Code Verification
Урок 325. 00:08:31
124. Two-Factor Authentication Login in Node.js
Урок 326. 00:00:48
125. Dad Joke Break Verify Two-Factor Authentication (2FA)
Урок 327. 00:02:49
126. Intro to Two-Factor Authentication Check
Урок 328. 00:00:38
127. Two-Factor Authentication Deletion
Урок 329. 00:01:26
128. Disabling Two-Factor Authentication
Урок 330. 00:01:52
129. Adding User Re-Verification for Critical Operations
Урок 331. 00:00:47
130. Implementing Verification Age Check for Disable 2FA
Урок 332. 00:05:42
131. Managing User Verification and Two-Factor Authentication
Урок 333. 00:04:08
132. Redirecting Users to Re-verify for 2FA Disabling
Урок 334. 00:02:56
133. Session Expiry Issue During 2FA Disablement Flow
Урок 335. 00:06:12
134. Fixing Session Expiration Behavior in 2FA Disablement Flow
Урок 336. 00:00:32
135. Dad Joke Break Two-Factor Authentication Check
Урок 337. 00:08:55
136. Intro to Oauth
Урок 338. 00:01:33
137. Integrating GitHub Authentication
Урок 339. 00:08:05
138. Setting up OAuth Authentication with GitHub
Урок 340. 00:01:18
139. Testing the OAuth Flow with GitHub Authentication
Урок 341. 00:07:39
140. Implementing OAuth2 Flow with GitHub for User Authentication
Урок 342. 00:06:52
141. Simulating Third-Party Dependencies
Урок 343. 00:04:12
142. Simulating GitHub Authentication Flow with Mocks
Урок 344. 00:01:25
143. Updating Prisma Schema for GitHub Login
Урок 345. 00:04:43
144. Establishing Connections and Seed Script in Prisma for GitHub Authentication
Урок 346. 00:00:36
145. Dad Joke Break Oauth
Урок 347. 00:00:56
146. Intro to Provider Errors
Урок 348. 00:00:48
147. Handling Errors in Third-Party API Calls
Урок 349. 00:01:13
148. Handling Errors and Redirecting with GitHub Authentication
Урок 350. 00:00:46
149. Handling Connection Errors and Duplication in Account Management
Урок 351. 00:04:13
150. Handling Existing Connections in AuthProvider Callback
Урок 352. 00:00:35
151. Dad Joke Break Provider Errors
Урок 353. 00:02:13
152. Intro to Third Party Login
Урок 354. 00:01:18
153. Implementing GitHub Login with Two-Factor Authentication
Урок 355. 00:03:54
154. Refactoring Login Logic and Implementing GitHub Login
Урок 356. 00:02:28
155. Sign Up with GitHub and Handling Mocked Data
Урок 357. 00:11:18
156. Onboarding and User Authentication with Third-Party Providers
Урок 358. 00:00:31
157. Dad Joke Break Third Party Login
Урок 359. 00:01:15
158. Intro to Connection
Урок 360. 00:01:16
159. Connecting Website and GitHub Accounts
Урок 361. 00:04:13
160. Automatically Connecting User Profiles with Existing Accounts
Урок 362. 00:00:56
161. Adding Multiple GitHub Connections to User Accounts
Урок 363. 00:01:39
162. Connecting Existing Accounts with an Auth Provider
Урок 364. 00:00:49
163. Dad Joke Break Connection
Урок 365. 00:00:59
164. Intro to Redirect Cookie
Урок 366. 00:00:59
165. Managing Redirects in Forms and Handling Cookies for Persistent Navigation
Урок 367. 00:01:47
166. Adding Redirect Functionality to Login and Signup Forms
Урок 368. 00:01:04
167. Handling Redirects and Cookies
Урок 369. 00:01:58
168. Handling Authentication Redirects and Cookies
Урок 370. 00:00:43
169. Handling Redirects
Урок 371. 00:05:06
170. Managing Redirects and Cookies
Урок 372. 00:00:32
171. Dad Joke Break Redirect Cookie
Урок 373. 00:00:58
172. Outro to Authentication Strategies & Implementation Workshop
Урок 374. 00:01:32
01. Intro to Web Application Testing Workshop
Урок 375. 00:06:23
02. Intro to End-to-End
Урок 376. 00:02:38
03. Writing Automated Tests with Playwright UI Mode
Урок 377. 00:10:17
04. Writing and Asserting Playwright Tests for Search Functionality
Урок 378. 00:01:02
05. Isolating Tests for Better Reliability and Flexibility
Урок 379. 00:02:02
06. Creating and Interacting with User Data
Урок 380. 00:02:01
07. Test Isolation in End-to-End Testing
Урок 381. 00:01:02
08. Proper Setup and Teardown of Testing for Database Cleanup
Урок 382. 00:02:06
09. Implementing Fixtures to Ensure User Deletion in Playwright Tests
Урок 383. 00:06:29
10. Playwright Fixtures for Testing
Урок 384. 00:00:27
11. Dad Joke Break E2E
Урок 385. 00:05:14
12. Intro to E2E Mocking
Урок 386. 00:01:33
13. Writing Emails to the File System for Test Automation
Урок 387. 00:02:31
14. Handling Emails in Node.js using File System
Урок 388. 00:00:22
15. Reading Email from Disk in Test Environment
Урок 389. 00:03:19
16. Communicating Between Processes with File System in Node.js
Урок 390. 00:00:36
17. Dad Joke Break E2E Mocking
Урок 391. 00:03:23
18. Intro to Auth E2E
Урок 392. 00:02:06
19. End-to-End User Flow Testing and Authentication Utility
Урок 393. 00:07:26
20. Login and Setting Cookies for Browser Testing
Урок 394. 00:00:59
21. Dad Joke Break Auth E2E
Урок 395. 00:03:12
22. Intro to Unit Test
Урок 396. 00:00:43
23. Unit Testing a Function for Error Messages
Урок 397. 00:06:56
24. Writing Unit Tests for Utility Functions
Урок 398. 00:02:12
25. Managing Test Output and Error Logging with Console Mocking
Урок 399. 00:04:19
26. Testing Console Error with Spies
Урок 400. 00:01:00
27. Implementing Test Hooks for Error Restoration in Playwright
Урок 401. 00:05:16
28. Effective Error Handling and Console Capture Testing
Урок 402. 00:00:44
29. Creating a Setup File for Test Environment Setup
Урок 403. 00:03:45
30. Setting Up Test Environment and Utilizing Setup Files with VTest
Урок 404. 00:00:58
31. Dad Joke Break Unit Test
Урок 405. 00:05:50
32. Intro to Component Testing
Урок 406. 00:00:32
33. Error List Component with React Testing Library
Урок 407. 00:05:58
34. Testing React Components with JSDOM
Урок 408. 00:00:19
35. Proper DOM Cleanup for Reliable Testing
Урок 409. 00:04:50
36. Ensuring Isolation and Proper Test Execution
Урок 410. 00:00:13
37. Dad Joke Break Component Test
Урок 411. 00:07:03
38. Intro to Hooks
Урок 412. 00:04:04
39. Double Confirmation Feature
Урок 413. 00:09:25
40. Testing Custom React Hooks with RenderHook and Act
Урок 414. 00:01:13
41. Custom Test Components vs Render Hook Utility
Урок 415. 00:05:59
42. Testing React Hooks
Урок 416. 00:00:26
43. Dad Joke Break Hooks
Урок 417. 00:03:38
44. Intro to Testing Remix
Урок 418. 00:01:29
45. Creating a Stub for Testing Component Logic in Remix
Урок 419. 00:07:14
46. Rendering Components with Mock Data
Урок 420. 00:01:11
47. Creating a Parent Route for Accessing Root Data
Урок 421. 00:03:38
48. Creating Routes and Context in Remix
Урок 422. 00:00:27
49. Dad Joke Break Testing Remix
Урок 423. 00:02:24
50. Intro to Http Mocking
Урок 424. 00:02:05
51. GitHub Sign-In Callback
Урок 425. 00:10:10
52. Testing OAuth2 Flow and Mocking GitHub API Responses
Урок 426. 00:01:29
53. Testing Error Handling in GitHub API Interceptor
Урок 427. 00:05:54
54. Testing Error Handling and Assertions with Mock API Calls
Урок 428. 00:01:03
55. Streamlining Repetitive Test Setup for Optimal Efficiency
Урок 429. 00:02:36
56. Efficient Code Organization with Setup Functions
Урок 430. 00:00:54
57. Dad Joke Break Http Mocking
Урок 431. 00:03:08
58. Intro to Auth Integration
Урок 432. 00:01:03
59. Testing Authenticated Requests and Connection Creation
Урок 433. 00:08:45
60. Creating and Authenticating Users for Connection Setup
Урок 434. 00:00:35
61. Assertions for GitHub Login Session Creation
Урок 435. 00:02:56
62. Verifying Session Creation and User Authentication
Урок 436. 00:00:40
63. Integrating Real Database with User Routes
Урок 437. 00:07:32
64. Authentication in Database Integration Tests
Урок 438. 00:01:02
65. Dad Joke Break Auth Integration
Урок 439. 00:03:03
66. Intro to Custom Assertions
Урок 440. 00:01:38
67. Custom Matchers for Assertions
Урок 441. 00:04:22
68. Custom Assertions with Jest's Expect Library
Урок 442. 00:00:46
69. Dad Joke Break Custom Assertions
Урок 443. 00:04:04
70. Intro to Test Database
Урок 444. 00:02:15
71. Setting Up a Test Database for Prisma Integration Tests
Урок 445. 00:06:25
72. Setting Up an Isolated Database for Tests
Урок 446. 00:00:46
73. Optimizing Database Seeding for Faster Execution
Урок 447. 00:01:32
74. Optimizing Database Seeding for Faster Execution_2
Урок 448. 00:01:04
75. Managing Test Databases for Parallel Testing
Урок 449. 00:01:11
76. Isolating Test Databases for Efficient Testing
Урок 450. 00:01:26
77. Optimizing Test Setup
Урок 451. 00:05:55
78. Optimizing Test Setup with Global Database Configuration
Урок 452. 00:00:28
79. Dad Joke Break Test Database
Урок 453. 00:00:39
80. Outro to Web Application Testing Workshop
Урок 454. 00:29:58
001 Content Management Systems with Alexandra Spalato
Урок 455. 00:29:14
002 Leadership in Tech with Ankita Kulkarni
Урок 456. 00:38:37
003 API Mocking with Artem Zakharchenko
Урок 457. 00:44:46
004 Enhancing SQLite with Ben Johnson
Урок 458. 00:39:59
005 The Evolution of Type Safety with Colin McDonnell
Урок 459. 00:39:06
006 Simplifying Web Form Management with Edmund Hung
Урок 460. 00:27:34
007 Scalable Databases and Authentication with Iheanyi Ekechukwu
Урок 461. 00:27:45
008 Understanding Web Development with Jacob Paris
Урок 462. 00:35:50
009 The Depth of Software Testing with Jessica Sachs
Урок 463. 00:38:08
010 Platform Engineering with Jocelyn Harper
Урок 464. 00:25:34
011 Navigating the Testing Terrain with Debbie O'Brien
Урок 465. 00:37:45
012 Exploring the Front-End Ecosystem with Mark Dalgleish
Урок 466. 00:45:43
013 Navigating Changing Web Technologies with Mark Thompson
Урок 467. 00:48:39
014 The Magic of TypeScript with Matt Pocock
Урок 468. 00:42:11
015 Building Deep Skills with Michael Chan
Урок 469. 00:31:29
016 Examining MDX with Monica Powell
Урок 470. 00:30:11
017 Efficient Form Management with Sandrina Pereira
Урок 471. 00:39:18
018 Transitioning from Rails to Remix with Sergio Xalambri
Урок 472. 00:41:18
019 The Capabilities and Ecosystem of Tailwind CSS with Simon Vrachliotis
Урок 473. 00:54:52
020 The Crucial Role of Database Optimization with Tyler Benfield
Урок 474. 00:36:02
021 Product Management with Nevi Shah
Урок 475. 00:36:00
022 From Tech Sales to Engineering with Shaundai Person
Урок 476. 00:46:07
023 Remix Behind the Scenes with Ryan Florence
Урок 477. 00:43:09
024 Art, Code, and Data Visualization with Shirley Wu
Урок 478. 00:33:24
025 The Future of Authentication with Will Johnson
Nothing is said about architecture at all, and this is probably why it would be possible to start such a course with such a name, how to do it professionally
If you are worried abouth job opportunities, learn Next.js, If you are planning to create a side project use Remix, it's so much simpler, calm and has fewers bugs. (But be aware that remix is gaining traction with a lot of Y Combinator companies choosing it). The bad side of Next.js is that if you want it to have the most optimized deploy, you'll have to end up using Vercel, I mean, they created the framework, now it's a business and they want profit and that's fine. Remix is just trying to be an awesome framework where you can have an awesome deploy anywhere!