001. Course Outlin
002. What is Remix
003. Why Remix
004. Intro to the Master Projec
005. The Recipe Page & Optimistic U
006. Finishing the Tour of the Master Projec
007. Installing NodeJ
008. Creating a Remix Projec
009. The Vite Config Fil
010. Upgrading Remix and Future Flag
011. Owning Your Entry Point
012. What are Routes
013. Nested Routin
014. The Root Rout
015. Remixs Special Component
016. The Link AP
017. Adding Style with Link
018. Techniques for Component-Level CS
019. Setting Up Tailwin
020. Using Tailwind - Part
021. Using Tailwind - Part
022. Using Tailwind - Part
023. What are Loaders
024. Pending U
025. Why Load Before Route Transition
026. Sharing Data Between Route
027. Errors and Error Boundarie
028. Installing Postgres with Docke
029. Setting Up Prisma with Postgre
030. Overvie
031. Setting Up the Pantry Rout
032. Redirects in Remi
033. Setting Up the Pantry Database Table
034. Seeding the Databas
035. Database UI Tool
036. Loading Data into the Pantry U
037. Creating a Model Abstractio
038. Building a Basic Shelf U
039. Intro to HTML Form
040. Enhancing the Search Bar with JavaScrip
041. Creating Shelve
042. Enhancing the Create Shelf Butto
043. Deleting Shelve
044. Handling Multiple Delete
045. Introducing useFetche
046. More Cases for useFetche
047. Server State in Remi
048. Editing Shelf Name
049. Validating Forms with Zo
050. Intro to Optimistic U
051. Optimistically Deleting Shelve
052. Creating Shelf Item
053. Deleting Shelf Item
054. Optimistically Creating Shelf Item
055. Suppressing the Layout Effect Warnin
056. Optimistically Deleting Shelf Item
057. Additional Enhancement
058. Overvie
059. The User Mode
060. The Login Rout
061. Intro to Cookie
062. Setting Our First Cooki
063. Cookie Attribute
064. A Simple Auth Flo
065. Remixs Cookie Helpe
066. Cryptographic Signature
067. Signing Cookie
068. Signing Cookies in Remi
069. Session
070. Session Storag
071. Session Storage in Remi
072. Overvie
073. What is Authenticatio
074. Overview of Magic Link Authenticatio
075. Magic Link Structur
076. Generating Magic Link
077. Updating the Login Rout
078. Validation Route Overvie
079. Parsing the Magic Link Payloa
080. Validating the Expiration Tim
081. Validating the Nonc
082. Finishing the Logi
083. The Sign Up For
084. The Sign Up Form Actio
085. Signing Up for Mailgu
086. Setting Up the Mailgun Clien
087. Sending the Magic Link Emai
088. Showing the Check Email Messag
089. Overvie
090. Authorization Rules for the Login Pag
091. Login Authorization Rule 1
092. Login Authorization Rule 2
093. Authorization Rules for the Pantry Pag
094. Pantry Authorization Rule 1
095. Pantry Authorization Rule 2
096. Pantry Authorization Rules 3-4
097. Pantry Authorization Rules 5-6
098. Pantry Authorization Rule 7
099. UI Updates Roadma
100. Adding an Error Boundar
101. Hiding the App Nav Butto
102. Creating a Logout Rout
103. Overvie
104. Revisiting the Remix Philosoph
105. Setting Up the Recipes Rout
106. Setting Up the Recipe Database Table
107. Updating the Seed Scrip
108. Recipe Page Component
109. The Recipes Loade
110. Rendering the Recipe Lis
111. Creating a Search Bar Componen
112. Supporting Search in the Loade
113. The Create Recipe For
114. Setting Up the Recipe Detail Rout
115. Sorting the Recipes Lis
116. Preserving the Search Parameter
117. Recipe Link Pending U
118. Using Link Prefetc
119. Recipe Detail Route Overvie
120. Overview of Step 1 - Creating an Input Componen
121. Displaying the Name and Total Tim
122. Rendering the Ingredient
123. Rendering the Instruction
124. Overview of Step 2 - Updating Recipe
125. Saving the Recipe Name, Total Time, and Instruction
126. FormDatas getAll Functio
127. Updating the validateForm Functio
128. Updating the Ingredient
129. Creating New Ingredient
130. Addressing and Issu
131. Adding Error Messages to the U
132. Exercise Imposter Syndrom
133. Overview of Step 3 - Deleting Recipes and Ingredient
134. Deleting a Recip
135. Deleting Ingredient
136. Authorization Rules for the Recipe Detail Rout
137. Recipe Detail Authorization Rule
138. Recipe Detail Authorization Rules 2-
139. Enhancement Overvie
140. Overview of Step 1 - Saving Inputs on Chang
141. Saving Recipe Inputs on Chang
142. Creating an Ingredient Row Componen
143. Saving Ingredient Inputs on Chang
144. Persisting the Recipe Fetcher Dat
145. Persisting the Ingredient Fetcher Dat
146. Debouncing Form Input
147. Creating a Hook for Debouncin
148. Debouncing the Form Input
149. Overview of Step 2 - The Case for Optimistic UI in the Side Ba
150. Updating the Side Bar with useFetcher
151. Overview of Step
152. Wiring up a Fetcher to Create New Ingredient
153. Creating a Hook for Optimistically Rendering Ingredient
154. Optimistically Rendering New Ingredient
155. Updating the Default Enter Key Behavio
156. Creating Mew Ingredients with the Enter Ke
157. Focusing the Amount Input on Creat
158. Optimistically Deleting Ingredient
159. Overvie
160. Creating a File Inpu
161. The Urlencoded Content Typ
162. The Multipart Content Typ
163. Parsing Multipart Form
164. Overview of Parsing Multipart Forms in Remi
165. Remixs Built-In Upload Handler
166. Storing Images in the Public Director
167. Writing the Image URL to the Databas
168. Overvie
169. Updating the DB to Track Meal Plan
170. Modals in Remi
171. Setting up the Modal Rout
172. Creating some Components for the Moda
173. Meal Plan Modal U
174. Passing Context to the Outle
175. Creating the Modal Actio
176. The Update Meal Plan Action Cas
177. Indicating which Recipes are in the Meal Pla
178. The Meal Plan Filter Butto
179. The Meal Plan Filter Backen
180. Preserving the Search State when Filterin
181. Preserving the Filter State when Searchin
182. Overview of Next Steps and Setting up the Grocery List Rout
183. Defining the Grocery List Item Typ
184. Building the Grocery List Item Componen
185. Getting Started on the Grocery List Loade
186. Formatting the Missing Ingredient
187. Grouping Grocery List Items by the Ingredient Nam
188. Rendering the Grocery Lis
189. Creating the Grocery List Route Actio
190. Adding Grocery Items to the Pantr
191. The Grocery List Empty Stat
192. Clearing the Meal Pla
193. Overvie
194. The PageLayout Componen
195. Setting up the Settings Rout
196. Intro to Resource Route
197. MIME Type
198. Overview of Customizing the Them
199. Renaming the Resource Rout
200. Controlling the Tailwind Theme with the Theme Resource Rout
201. Building the Form to Change the Site Them
202. Creating the Theme Cooki
203. The App Settings Route Actio
204. The App Settings Route Loade
205. Fixing the Off-By-One Issu
206. Returning Dynamic CSS Based on the Theme Cooki
207. Overvie
208. Redirecting the Home Pag
209. The Discover Page U
210. Discover Detail Page Setu
211. Discover Detail Page U
212. Intro to Cachin
213. Private vs Server Cache
214. Preview of Using the Browser Cach
215. Caching Vocabular
216. The Default Browser Strateg
217. The No-Store Strateg
218. The Fixed-Time Strateg
219. The Cache-Busting Strateg
220. The Revalidate-Once-Stale Strateg
221. Etag
222. Responding to the If-None-Match Heade
223. The Stale-While-Revalidate Strateg
224. Caching Full HTML Page
225. Responding to If-None-Match on HTML Request
226. Introduction to Testin
227. Setting Up Playwrigh
228. Writing our First Tes
229. Creating Dynamic Route
230. Implementing the Test Login Rout
231. Testing a Typical Pantry Page Flo
232. Finishing up the Pantry Tes
233. The Playwright U
234. Creating a Delete User Test Endpoin
235. Deleting Test User
236. Deployment Overvie
237. The Fly CL
238. Prisma MIgration
239. Creating the Database Serve
240. Creating the App Serve
241. Setting Environment Variable
242. Deploying the Ap
243. An Example of Upgrading Remi
244. Thank You
245. ARCHIVED - Seeding the Database (Archived Apr 2024