Урок 1.00:06:13
How to Get Help
Урок 2.00:04:21
App Overview
Урок 3.00:04:31
App User Flow Walkthrough
Урок 4.00:05:30
Tech Stack
Урок 5.00:07:17
App Mockups
Урок 6.00:04:36
Application Architecture
Урок 7.00:08:27
Relationship Between Node and Express
Урок 8.00:08:12
Generating Express Apps
Урок 9.00:07:33
Express Route Handlers
Урок 10.00:12:12
Deployment Checklist
Урок 11.00:07:30
[Heroku] Installing the Heroku CLI
Урок 12.00:08:38
[Heroku] Verifying Deployment
Урок 13.00:03:29
[Heroku] Followup Deployments
Урок 14.00:05:51
Intro to Google OAuth
Урок 15.00:09:09
The OAuth Flow
Урок 16.00:07:58
Overview of Passport JS
Урок 17.00:07:17
Passport Setup
Урок 18.00:10:00
Enabling Google OAuth API
Урок 19.00:05:55
Securing API Keys
Урок 20.00:07:24
Google Strategy Options
Урок 21.00:07:49
Testing OAuth
Урок 22.00:08:54
Authorized Redirect URI's
Урок 23.00:08:07
OAuth Callbacks
Урок 24.00:07:32
Access and Refresh Tokens
Урок 25.00:03:59
Nodemon Setup
Урок 26.00:12:43
Server Structure Refactor
Урок 27.00:11:49
The Theory of Authentication
Урок 28.00:15:37
Signing In Users with OAuth
Урок 29.00:08:04
Introduction to MongoDB
Урок 30.00:07:54
mLab Setup [PARTIALLY DEPRECATED]
Урок 31.00:06:52
Connecting Mongoose to Mongo
Урок 32.00:03:10
Breather and Review
Урок 33.00:08:27
Mongoose Model Classes
Урок 34.00:10:41
Saving Model Instances
Урок 35.00:07:33
Mongoose Queries
Урок 36.00:07:38
Passport Callbacks
Урок 37.00:15:02
Encoding Users
Урок 38.00:04:29
Deserialize User
Урок 39.00:07:58
Enabling Cookies
Урок 40.00:08:19
Testing Authentication
Урок 41.00:04:13
Logging Out Users
Урок 42.00:22:01
[Optional] A Deeper Dive
Урок 43.00:05:39
Dev vs Prod Keys
Урок 44.00:09:50
Generating Production Resources
Урок 45.00:06:35
Determining Environment
Урок 46.00:08:05
Version Control Scheme
Урок 47.00:08:04
[Heroku] Production Environment Variables
Урок 48.00:11:30
Fixing Proxy Issues
Урок 49.00:06:59
React App Generation
Урок 50.00:07:26
A Separate Front End Server
Урок 51.00:08:57
Running the Client and Server
Урок 52.00:18:54
Routing Stumbling Block
Урок 53.00:14:36
The Beauty of Create React App's Proxy
Урок 54.00:29:44
[Optional] Why This Architecture?
Урок 55.00:18:50
Async/Await Syntax
Урок 56.00:07:40
Refactoring with Async/Await
Урок 57.00:07:24
Front End Tech
Урок 58.00:07:41
Client React Setup
Урок 59.00:06:45
Installing Root Modules
Урок 60.00:02:27
Troubleshooting NPM
Урок 61.00:10:19
Redux Review and Setup
Урок 62.00:04:52
The Auth Reducer
Урок 63.00:03:36
Finishing Reducer Setup
Урок 64.00:04:46
Why We Care About Auth
Урок 65.00:05:57
React Router Setup
Урок 66.00:05:41
Route Configuration
Урок 67.00:08:16
Matching Routes with Exact
Урок 68.00:06:12
Always Visible Components
Урок 69.00:08:48
Materialize CSS
Урок 70.00:07:57
Webpack with CSS
Урок 71.00:04:48
Header Design
Урок 72.00:05:59
Current User API
Урок 73.00:11:18
Additional Proxy Rules
Урок 74.00:10:13
Basics of Redux Thunk
Урок 75.00:05:18
Refactoring the App
Урок 76.00:09:03
Testing FetchUser
Урок 77.00:08:56
Refactoring to Async/Await
Урок 78.00:10:38
AuthReducer Return Values
Урок 79.00:07:52
Accessing State in the Header
Урок 80.00:05:01
Header Content
Урок 81.00:07:34
Redirecting a User on Auth
Урок 82.00:07:38
Redirect on Logout
Урок 83.00:04:18
Landing Component
Урок 84.00:07:52
Link Tags
Урок 85.00:03:08
Client Side Billing
Урок 86.00:11:56
Billing Considerations
Урок 87.00:05:35
Stripe Billing Process
Урок 88.00:08:16
Exploring the Stripe API
Урок 89.00:10:20
Stripe API Keys
Урок 90.00:13:32
Env Variables with React
Урок 91.00:10:30
The Payments Component
Урок 92.00:09:09
Stripe Tokens
Урок 93.00:06:57
Payment Fixes
Урок 94.00:09:17
Reusing Action Types
Урок 95.00:03:12
Positing the Stripe Token
Урок 96.00:04:32
Post Request Handlers
Урок 97.00:05:20
Creating Charges
Урок 98.00:06:43
BodyParser Middleware
Урок 99.00:06:33
Creating a Charge Object
Урок 100.00:04:40
Finalizing a Charge
Урок 101.00:07:28
Adding Credits to a User
Урок 102.00:06:47
Requiring Authentication
Урок 103.00:11:40
Route-Specific Middlewares
Урок 104.00:04:19
Displaying Credit Quantity
Урок 105.00:05:19
Updating Credits
Урок 106.00:12:21
Express with Create-React-App in Production
Урок 107.00:08:10
Routing in Production
Урок 108.00:10:09
Deployment Options
Урок 109.00:16:11
Adding in a Build Step
Урок 110.00:03:50
Testing Deployment
Урок 111.00:08:01
Survey Overview
Урок 112.00:05:25
Server Routes
Урок 113.00:07:08
Survey Model
Урок 114.00:05:57
Model Deficiencies
Урок 115.00:07:53
Limitations of Subdocument Collections
Урок 116.00:04:50
Setting up SubDocs
Урок 117.00:05:03
Relationship Fields
Урок 118.00:07:16
Survey Creation Route Handler
Урок 119.00:06:25
Verifying Minimum Credits
Урок 120.00:09:07
Creating Surveys
Урок 121.00:08:49
Creating Subdoc Collections
Урок 122.00:07:19
Creating Mailers
Урок 123.00:14:30
Identifying Unique Users
Урок 124.00:08:22
Sendgrid Setup
Урок 125.00:09:40
Mailer Setup
Урок 126.00:11:02
Mailer in Use
Урок 127.00:08:32
Mailer Constructor
Урок 128.00:09:30
Boilerplate for Sending Emails
Урок 129.00:05:58
More Mailer Properties
Урок 130.00:06:17
Sending SendGrid Emails
Урок 131.00:09:21
Testing Email Sending
Урок 132.00:08:59
Improving the Email Template
Урок 133.00:09:53
Polish in the Route Handler
Урок 134.00:02:10
Verifying Sendgrid Click Tracking
Урок 135.00:11:14
Feedback for User Feedback
Урок 136.00:05:02
Client Side Survey Creation
Урок 137.00:08:59
Material Icons
Урок 138.00:02:21
Navigation with the Link Tag
Урок 139.00:06:56
SurveyNew Form
Урок 140.00:11:17
Purpose of Redux Form
Урок 141.00:12:21
Redux Form Setup
Урок 142.00:07:08
The ReduxForm Helper
Урок 143.00:10:23
Redux Form in Practice
Урок 144.00:08:57
Custom Field Components
Урок 145.00:05:47
Wiring up Custom Fields
Урок 146.00:05:17
DRY'ing Up Fields
Урок 147.00:07:36
Fields from Config
Урок 148.00:07:20
Styling the Form
Урок 149.00:06:26
Form Validation
Урок 150.00:08:32
Showing Validation Errors
Урок 151.00:09:10
Generalizing Field Validation
Урок 152.00:08:36
Validating Emails
Урок 153.00:13:08
Displaying Invalid Emails
Урок 154.00:11:56
Toggling Visibility?
Урок 155.00:11:29
Advancing From SurveyForm
Урок 156.00:05:21
Retreat to the Form
Урок 157.00:11:27
Persisting Form Values
Урок 158.00:09:56
Refactoring Form Fields
Урок 159.00:05:27
Finalizing Review Fields
Урок 160.00:10:51
Outstanding Form Work
Урок 161.00:07:10
Dumping Form Values
Урок 162.00:02:54
Fixing Property Names
Урок 163.00:04:41
Posting to Surveys
Урок 164.00:09:02
Redirect on Submit
Урок 165.00:02:31
Feedback with Webhooks
Урок 166.00:09:09
Webhooks in Development
Урок 167.00:06:28
LocalTunnel Setup
Урок 168.00:05:17
Testing Webhooks
Урок 169.00:06:48
Finalizing Webhook Setup
Урок 170.00:07:58
Encoding Survey Data
Урок 171.00:07:15
Dirty Data from Webhooks
Урок 172.00:08:19
Processing Pipeline
Урок 173.00:07:56
Parsing the Route
Урок 174.00:05:31
Code Cleanup
Урок 175.00:05:15
Unique Events
Урок 176.00:10:51
Lodash Chain Helper
Урок 177.00:09:10
Bad Mongoose Queries
Урок 178.00:13:49
Finding the Exact Survey
Урок 179.00:09:34
Updating Records
Урок 180.00:09:26
Executing Queries
Урок 181.00:02:19
Testing the Query
Урок 182.00:04:02
Odds n' Ends Around Surveys
Урок 183.00:06:07
Mongoose Tips
Урок 184.00:09:10
Fetching a List of Surveys
Урок 185.00:10:01
Whitelisting Model Fields
Урок 186.00:02:12
Testing Surveys Endpoint
Урок 187.00:06:01
Wiring Surveys Up to Redux
Урок 188.00:06:53
Wiring React to Redux
Урок 189.00:08:13
Rendering a List of Surveys
Урок 190.00:02:22
Reversing the Survey List
Урок 191.00:12:45
Expanding the App