Урок 1. 00:07:13
Introduction & Course App: Quasagram
Урок 2. 00:01:44
What is Quasar?
Урок 3. 00:02:47
What is a Progressive Web App?
Урок 4. 00:06:22
How this Course is Structured
Урок 5. 00:05:42
My Editor & Software Setup
Урок 6. 00:00:29
Module Introduction
Урок 7. 00:01:16
Install Node.js and Quasar CLI
Урок 8. 00:03:01
Create & Launch a New Quasar Project (not in PWA mode yet)
Урок 9. 00:03:11
Folder Structure - Layouts, Pages & Routes
Урок 10. 00:01:04
Install Vue Devtools on Chrome
Урок 11. 00:01:02
Vue.js Basics
Урок 12. 00:00:52
Clean up the Project
Урок 13. 00:00:32
Developing on Android & iOS
Урок 14. 00:00:30
Module Introduction
Урок 15. 00:02:24
Pages and Routes
Урок 16. 00:04:10
Footer with Tab Navigation
Урок 17. 00:04:43
Footer - Add Some Style
Урок 18. 00:04:41
Footer - Change the Icon Set
Урок 19. 00:02:19
Header - Styles
Урок 20. 00:03:46
Header - Instagram-Style Title (Install Custom Font)
Урок 21. 00:05:17
Desktop - Hide Footer on Larger Displays
Урок 22. 00:03:23
Desktop - Show Navigation in Header on Larger Displays
Урок 23. 00:05:58
Desktop - Make the Header More Desktopy on Larger Displays
Урок 24. 00:02:06
Desktop - Constrain Content for Wider Screens
Урок 25. 00:00:27
Module Introduction
Урок 26. 00:02:22
Constrain the Page Content & Add Background Color
Урок 27. 00:02:05
Create a List of Posts - Post Header
Урок 28. 00:01:24
Create a List of Posts - Image
Урок 29. 00:01:53
Create a List of Posts - Caption and Date
Урок 30. 00:01:59
Add a Posts Array to Data Object
Урок 31. 00:02:27
Connect the Posts Array to the View with v-for
Урок 32. 00:02:59
Format the Date with a Filter
Урок 33. 00:06:07
Add a Mini-Profile for Desktop
Урок 34. 00:02:54
Hide the Mini-Profile on Mobile
Урок 35. 00:00:28
Module Introduction
Урок 36. 00:05:18
Add a Photo Frame & Capture Button
Урок 37. 00:05:52
Add Text Fields & Submit Button
Урок 38. 00:02:41
Adapt the Design for Desktop
Урок 39. 00:03:32
Setup a Data Object for the Post Data
Урок 40. 00:00:48
Module Introduction
Урок 41. 00:04:00
Display Camera Feed in Photo Frame
Урок 42. 00:02:03
getUserMedia - Browser Support and Polyfill
Урок 43. 00:07:01
Capture the Image
Урок 44. 00:02:32
Convert the Image to a Blob
Урок 45. 00:06:13
Add a Fallback Image Upload Field
Урок 46. 00:05:17
Display Fallback Image in Canvas
Урок 47. 00:03:07
Disable Camera After Capture & When User Leaves Page
Урок 48. 00:00:40
Module Introduction
Урок 49. 00:03:18
Get User’s Location Coordinates
Урок 50. 00:06:01
Get Users’s City & Country Names
Урок 51. 00:02:34
Handle Errors
Урок 52. 00:04:11
Add a Loading State
Урок 53. 00:02:08
Hide Location Button if Geolocation Not Supported
Урок 54. 00:07:20
Introduction to Firebase
Урок 55. 00:03:12
How we’re going to use Firebase
Урок 56. 00:00:58
Create a Firebase Project
Урок 57. 00:05:05
Cloud Firestore Database - Add Some Posts
Урок 58. 00:01:56
Add an Image to Storage
Урок 59. 00:01:11
Module Introduction
Урок 60. 00:06:06
Create & Launch our Backend Locally
Урок 61. 00:02:43
Add Auto Restarting with Nodemon
Урок 62. 00:01:38
Add a Simple Posts Endpoint
Урок 63. 00:02:50
Deploy our Backend Server (1) - Setup Heroku
Урок 64. 00:06:14
Deploy our Backend Server (2) - Deploy with Heroku Builds
Урок 65. 00:10:26
If you want to use Cloud Functions
Урок 66. 00:00:36
Module Introduction
Урок 67. 00:03:56
Connect to the Firestore Database
Урок 68. 00:03:06
Posts Endpoint - Grab the Posts
Урок 69. 00:04:21
Display the Posts on the Home Page
Урок 70. 00:02:02
Sort Posts by Date
Урок 71. 00:01:08
Handle Errors
Урок 72. 00:05:55
Handle Loading
Урок 73. 00:03:18
Show a “No Posts Yet” Fallback
Урок 74. 00:00:38
Module Introduction
Урок 75. 00:02:07
Add createPost Endpoint
Урок 76. 00:06:00
Environment Variables to Manage our API URLs
Урок 77. 00:06:53
Send the Post Data to the Endpoint
Урок 78. 00:06:56
Parse the Form Data with Busboy
Урок 79. 00:06:06
Store the Field Data as a Post (1)
Урок 80. 00:01:10
Store the Field Data as a Post (2)
Урок 81. 00:01:52
Upload the Image (1) Configure Google Cloud Storage
Урок 82. 00:03:48
Upload the Image (2) Save the Image to the Temp Folder
Урок 83. 00:10:00
Upload the Image (3) Upload to Google Cloud Storage & Store the Image URL
Урок 84. 00:03:35
Add Validation
Урок 85. 00:04:48
Handle Errors & Successes
Урок 86. 00:02:57
Handle Loading
Урок 87. 00:02:16
Remember to Keep an Eye on the Size of your Images in Storage
Урок 88. 00:00:42
Task 1 - Get the Project Running
Урок 89. 00:00:30
Task 2 - Create a Firebase Project
Урок 90. 00:01:57
Task 3 - Create a Cloud Firestore Database
Урок 91. 00:03:47
Task 4 - Setup a Node.js & Express Backend
Урок 92. 00:02:33
Task 5 - Initialize Firestore Database
Урок 93. 00:03:08
Task 6 - Tasks Endpoint
Урок 94. 00:02:48
Task 7 - Display Tasks in App
Урок 95. 00:02:14
Task 8 - Create Task Endpoint (1)
Урок 96. 00:02:04
Task 9 - Create Task Endpoint (2)
Урок 97. 00:04:29
Task 10 - Create Task Endpoint (3)
Урок 98. 00:02:45
Task 11 - Add a Loading Screen
Урок 99. 00:02:18
PWA Introduction
Урок 100. 00:02:02
Launch Quasagram in PWA Mode
Урок 101. 00:01:39
Manifest File
Урок 102. 00:05:36
Manifest Properties
Урок 103. 00:00:27
Module Introduction
Урок 104. 00:01:05
Install Icon Genie
Урок 105. 00:03:42
Create the Source Icon
Урок 106. 00:05:22
Generate the Icons
Урок 107. 00:00:34
Module Introduction
Урок 108. 00:03:48
Create the App Install Banner
Урок 109. 00:03:17
Add an App Icon to the Banner
Урок 110. 00:03:11
Show App Install Banner on Desktop
Урок 111. 00:05:24
Only show App Install Banner when App Installable
Урок 112. 00:04:02
Show Native Install Prompt if they click Yes
Урок 113. 00:07:40
Allow the User to Hide the App Install Banner
Урок 114. 00:03:57
Animate the App Install Banner
Урок 115. 00:01:07
Module Introduction
Урок 116. 00:02:17
What is a Service Worker?
Урок 117. 00:02:41
Service Worker Events
Урок 118. 00:01:40
What is Workbox?
Урок 119. 00:02:21
src-pwa Folder
Урок 120. 00:02:44
Basic Caching & Offline Capabilities
Урок 121. 00:01:53
Enable Custom Service Worker File
Урок 122. 00:00:30
Module Introduction
Урок 123. 00:00:50
What is Precaching?
Урок 124. 00:04:52
Enable Precache
Урок 125. 00:02:40
Build the App for Production & Switch to Live Backend
Урок 126. 00:05:11
Host the App on Firebase
Урок 127. 00:03:29
Show Precaching in Live App
Урок 128. 00:02:00
Caching Strategies Introduction
Урок 129. 00:03:52
What Caching Strategies Can We Use?
Урок 130. 00:07:58
Stale While Revalidate Strategy as a Catch All for Most Requests
Урок 131. 00:11:26
Cache First Strategy for our Google Font
Урок 132. 00:04:18
Network First Strategy for Posts Request
Урок 133. 00:02:29
Background Sync Introduction
Урок 134. 00:04:02
Check for Background Sync Support
Урок 135. 00:09:10
Create Post Background Sync
Урок 136. 00:06:06
Redirect to Home Page if Post Created Offline
Урок 137. 00:07:02
Display the Offline Posts (1) - Open the IndexedDB Database with IDB
Урок 138. 00:05:28
Display the Offline Posts (2) - Get the Raw Request Data
Урок 139. 00:13:26
Display the Offline Posts (3) - Get the Form Fields & Add Offline Post to Page
Урок 140. 00:07:26
Style the Offline Posts Differently
Урок 141. 00:10:59
Show Offline Post was Uploaded (1) - Add onSync Hook to Queue
Урок 142. 00:11:54
Show Offline Post was Uploaded (2) - Send Message to the Client (Browser)
Урок 143. 00:06:10
Show Offline Post was Uploaded (3) - Remove the Offline Post Styles
Урок 144. 00:01:36
Module Introduction
Урок 145. 00:05:42
How Push Notifications Work
Урок 146. 00:08:07
Create an “Enable Notifications” Banner (1) - Repurpose the App Install Banner
Урок 147. 00:04:23
Create an “Enable Notifications” Banner (2) - Improve the Style
Урок 148. 00:05:22
Request Notifications Permission
Урок 149. 00:03:58
Display a Notification from Our App
Урок 150. 00:07:13
Notification Options
Урок 151. 00:03:50
Display a Notification Using the Service Worker
Урок 152. 00:03:01
Notification Actions
Урок 153. 00:04:50
Handle Notification Clicks
Урок 154. 00:01:41
Handle Notification Closed
Урок 155. 00:04:32
Check for Existing Push Subscription
Урок 156. 00:04:35
Create a New Push Subscription
Урок 157. 00:03:59
Secure the Push Subscription with Web Push (1)
Урок 158. 00:04:00
Secure the Push Subscription with Web Push (2)
Урок 159. 00:02:56
Store The Subscription in Cloud Firestore Database (1)
Урок 160. 00:08:19
Store The Subscription in Cloud Firestore Database (2)
Урок 161. 00:02:23
A Note About Push Subscriptions & Service Workers
Урок 162. 00:10:43
Send a “New Post” Push Notification from Our Backend Server
Урок 163. 00:03:07
If You’re Using Cloud Functions (Important)
Урок 164. 00:07:23
Listen for Push Notifications in the Service Worker
Урок 165. 00:04:47
Display the Real Push Notification
Урок 166. 00:06:23
Open our Home Page on Notification Click
Урок 167. 00:03:55
Send the Open URL from the Backend
Урок 168. 00:00:34
Module Introduction
Урок 169. 00:02:36
Hosting the App
Урок 170. 00:08:13
Firefox - Testing
Урок 171. 00:04:24
Firefox - Fixing Issues
Урок 172. 00:03:20
Safari - Testing
Урок 173. 00:01:43
Safari - Fixing Issues
Урок 174. 00:03:41
Testing Edge & Internet Explorer on a Mac with VirtualBox
Урок 175. 00:08:06
Edge
Урок 176. 00:09:38
Internet Explorer
Урок 177. 00:00:31
Module Introduction
Урок 178. 00:01:04
Developing on Android Emulator (1) - Install Android Studio
Урок 179. 00:01:20
Developing on Android Emulator (2) - Setup Virtual Device
Урок 180. 00:12:36
Developing on Android Emulator (3) - Launch on Android Emulator
Урок 181. 00:02:26
Developing on Android Emulator (4) - Debugging
Урок 182. 00:04:58
Launch Live App on Android Emulator
Урок 183. 00:17:56
Developing on a Real Android Device
Урок 184. 00:13:38
Fix Background Sync Issue
Урок 185. 00:07:59
Show the Image in the Notification on Android
Урок 186. 00:09:51
Check the Background Sync Fix
Урок 187. 00:00:28
Module Introduction
Урок 188. 00:01:05
Developing on iOS Simulator (1) - Install Xcode & Launch the Simulator
Урок 189. 00:08:07
Developing on iOS Simulator (2) - Launch on iOS Simulator
Урок 190. 00:02:17
Developing on iOS Simulator (3) - Debugging
Урок 191. 00:06:14
Fix Footer on iOS Safari
Урок 192. 00:09:00
Developing on a Real iOS Device
Урок 193. 00:05:43
Fix the Camera & Post Image Button Issues
Урок 194. 00:04:52
Task 1 - Get App Running
Урок 195. 00:01:17
Task 2 - Change Theme Color
Урок 196. 00:01:45
Task 3 - Generate App Icons
Урок 197. 00:01:55
Task 4 - Install App Button (1)
Урок 198. 00:01:54
Task 5 - Install App Button (2)
Урок 199. 00:02:23
Task 6 - Enable Precache
Урок 200. 00:03:30
Task 7 - Caching Strategies
Урок 201. 00:03:27
Task 8 - Background Sync (1)
Урок 202. 00:02:54
Task 9 - Background Sync (2)
Урок 203. 00:03:01
Task 10 - Background Sync (3)
Урок 204. 00:01:54
Task 11 - Push Notifications - Notification Permission (1)
Урок 205. 00:01:54
Task 12 - Push Notifications - Notification Permission (2)
Урок 206. 00:03:10
Task 13 - Push Notifications - Create Push Subscription (1)
Урок 207. 00:06:26
Task 14 - Push Notifications - Create Push Subscription (2)
Урок 208. 00:05:23
Task 15 - Push Notifications - Store Push Subscription in Database
Урок 209. 00:02:01
Task 16 - “You’re subscribed!” Notification
Урок 210. 00:07:12
Task 17 - Send Push Notification from Backend
Урок 211. 00:03:51
Task 18 - Display Push Notification
Урок 212. 00:04:15
Task 19 - Handle Push Notification Click
Урок 213. 00:15:19
Task 20 - Host App on Firebase & Backend on Heroku
Урок 214. 00:01:30
What Next?
Урок 215. 00:05:08
Bonus Lecture: Learn More From Me