Build an app with React Redux and Firestore from scratch

Learn how to build a web app with React, Redux and Firestore from beginning to publishing
Build an app with React Redux and Firestore from scratch
File Size :
9.45 GB
Total length :
23h 52m



Neil Cummings


Last update




Build an app with React Redux and Firestore from scratch

What you’ll learn

Students will be able to create an application using React, Redux and Firestore by the end of this course.
Students will improve their javascript skills by taking this course

Build an app with React Redux and Firestore from scratch


Students should be familiar with HTML, CSS and Javascript
A computer with either Windows, Mac OSX or Linux is required
We will make use of (free) Google services so a Google account is necessary


*** Re-recorded, rewritten and fully up to date as at  July 2020***Do you want to learn React and Redux in the context of building a complete application?   Do you want to learn about Firestore, the new Database offering from Google that provides ‘live data’ to our application?  Are you the type of learner who gets most out of actually building an application rather than watching endless slides about how something is supposed to work?  If so then this course is for you!In this course we build a complete application from start to finish.  Every line of code is demonstrated and explained.  We warm up by building a CRUD application in React, we then enhance it by adding Redux and following that we add in Firestore to provide the persistence layer for the application.Here are just some of the things you will learn about in this course:Setting up the developer environmentCreating a React application using the create-react-app utility from FacebookLogin and Register functionality using Firebase authenticationAdding social login for Facebook and Google into the applicationGoogle maps and Places autocomplete integrationPhoto uploading using drag and drop, with resizing and cropping of the images before uploadAdding a live chat systemPaging, Sorting and Filtering with FirestoreInfinite scroll for the paginationFirestore database designCreating reusable form components with Formik formsBuilding a great looking application with Semantic UIMany more things as wellTools you need for this courseIn this course all lessons are demonstrated using Visual Studio Code, a free (and really good) cross platform code editor.  You can of course use your preferred IDE or Code editor of choice and any operating system you like… well as long as it’s either Max OSX, Windows or Linux.Is this course for you?This course is extremely practical.  About 90% of our time is spent actually building the application.  If you are the type of person who gets the most out of learning ‘by doing’, then this course will be for you.Please note that we do not start from zero coding knowledge.   Whilst this is aimed at beginner/intermediate level, you will need to have some basic javascript knowledge (not a lot is needed) or if you are coming from another programming language then you should be fine with this course.  It’s designed to take you from beginner level to having the skills to build a much more significant application.What do we do on this courseWe are building a social events application, much like Facebook events or Meetup.   Building a social application gives us opportunity to build more than just a simple CRUD application.


Section 1: Course introduction and getting started

Lecture 1 Introduction

Lecture 2 Setting up the project

Lecture 3 Setting up the developer environment

Lecture 4 React project contents

Lecture 5 Hot Module Replacement

Lecture 6 Folder structure

Lecture 7 Source control

Lecture 8 Course assets and source code

Section 2: React concepts

Lecture 9 Introduction

Lecture 10 Why React

Lecture 11 React concepts

Lecture 12 Intro to JSX

Lecture 13 React Dev tools

Lecture 14 Decisions made on this course

Section 3: Thinking in React

Lecture 15 Introduction

Lecture 16 Breaking up the UI into components

Lecture 17 Intro to Semantic UI

Lecture 18 Building our first component

Lecture 19 Exports and imports

Lecture 20 Navigation bar and styling

Lecture 21 Event List Items

Lecture 22 Creating an Event Form

Lecture 23 Passing props down to child components

Lecture 24 React component state

Lecture 25 Summary of section 3

Section 4: CRUD Operations in React

Lecture 26 Introduction

Lecture 27 Basic forms in React

Lecture 28 Creating an event

Lecture 29 Selecting an event to read

Lecture 30 Controlled components with a key

Lecture 31 Updating an event

Lecture 32 Deleting an event

Lecture 33 React class components

Lecture 34 Summary of section 4

Section 5: Routing in React

Lecture 35 Introduction

Lecture 36 Adding some additional components to route to

Lecture 37 Routing configuration

Lecture 38 Using NavLinks and Links

Lecture 39 Home page styling

Lecture 40 Adding menus for authenticated and unauthenticated users

Lecture 41 Adding fake authentication

Lecture 42 Using the useHistory hook

Lecture 43 Event Detailed Page structure

Lecture 44 Event Detailed Page content

Lecture 45 Cleaning up the unused code

Lecture 46 Summary of section 5

Section 6: Introduction to Redux

Lecture 47 Introduction

Lecture 48 React-Redux

Lecture 49 Setting up Redux

Lecture 50 Adding a sandbox area for experimenting with the code

Lecture 51 Redux Actions

Lecture 52 Action Creators

Lecture 53 Redux Dev Tools

Lecture 54 Creating the event reducer

Lecture 55 RRF 6-9 Creating a root reducer

Lecture 56 Getting events from the redux store

Lecture 57 Dispatching event actions

Lecture 58 Clean up

Lecture 59 Scroll to top

Lecture 60 Summary of section 6

Section 7: Forms revisited

Lecture 61 Introduction

Lecture 62 Setting up Formik

Lecture 63 Formik with less code

Lecture 64 Form validation

Lecture 65 Creating a reusable text input

Lecture 66 Cleaning up the form

Lecture 67 Creating a reusable text area

Lecture 68 Creating a reusable select input

Lecture 69 Creating a reusable date input

Lecture 70 Date-FNS

Lecture 71 Formik props

Lecture 72 Modals

Lecture 73 Adding a Modal Manager

Lecture 74 Creating the sign up form

Lecture 75 Adding an auth reducer

Lecture 76 Hooking up the sign up form

Lecture 77 Summary of section 7

Section 8: Google maps integration

Lecture 78 Introduction

Lecture 79 Getting the Google API keys

Lecture 80 Setting up places autocomplete

Lecture 81 Creating a custom place input

Lecture 82 Using the place input

Lecture 83 Narrowing the place input search results

Lecture 84 Google maps react

Lecture 85 Challenge solution

Lecture 86 Adding the map to the Event Detailed Page

Lecture 87 Summary of section 8

Section 9: Asynchronous code

Lecture 88 Introduction

Lecture 89 Redux Thunk 101

Lecture 90 Redux Thunk 102

Lecture 91 Isolating the loading indicators

Lecture 92 Adding toast notifications

Lecture 93 Adding a mock API

Lecture 94 Adding a loading component

Lecture 95 Using placeholders to improve the UI

Lecture 96 Adding an event filters component

Lecture 97 Summary of section 9

Section 10: Introduction to Firestore

Lecture 98 Introduction

Lecture 99 Setting up Firestore

Lecture 100 Firestore document fields

Lecture 101 Listening to Firestore data

Lecture 102 Shaping the Firestore data

Lecture 103 Restoring the loading indicator

Lecture 104 Creating a custom hook

Lecture 105 Adding a useFirestoreDoc hook

Lecture 106 Handling not found documents

Lecture 107 Adding an error component

Lecture 108 Creating and updating events in Firestore

Lecture 109 Creating and updating events in Firestore part 2

Lecture 110 Deleting an event

Lecture 111 Cancelling an event function

Lecture 112 Adding a confirmation prompt

Lecture 113 Summary of section 10

Section 11: Authentication

Lecture 114 Introduction

Lecture 115 Logging in

Lecture 116 Persisting the login

Lecture 117 Signing out the user

Lecture 118 Registering new users

Lecture 119 Handling auth errors

Lecture 120 Setting user profile data

Lecture 121 Creating a social login component

Lecture 122 Facebook login

Lecture 123 Adding the facebook login method

Lecture 124 Adding Google login

Lecture 125 Adding an account page

Lecture 126 Adding additional user info into the auth reducer

Lecture 127 Adding a password change function

Lecture 128 App initialization

Lecture 129 Summary of section 11

Section 12: User profiles

Lecture 130 Introduction

Lecture 131 Adding a profile page

Lecture 132 Adding the profile content

Lecture 133 Creating the redux actions

Lecture 134 Connecting the profile page to the store

Lecture 135 Adding an about page

Lecture 136 Adding the profile form

Lecture 137 Adding the update user actions

Lecture 138 Initializing the app with the current user profile

Lecture 139 Selecting other user profiles

Lecture 140 Summary of section 12

Section 13: Image upload

Lecture 141 Introduction

Lecture 142 Adding a profile photos page

Lecture 143 Adding a photo upload widget

Lecture 144 React dropzone

Lecture 145 React cropper

Lecture 146 Adding an upload image method

Lecture 147 Using the upload method in the widget

Lecture 148 Displaying the images

Lecture 149 Setting the main photo

Lecture 150 Deleting a photo

Lecture 151 Summary of section 13

Section 14: Firestore relationships

Lecture 152 Introduction

Lecture 153 Firestore Database design

Lecture 154 Adding attendances to an event

Lecture 155 Setting up the event detailed header

Lecture 156 Adding the join event handler

Lecture 157 Cancelling a user attendance

Lecture 158 Adding the user nav links

Lecture 159 Adding the filter functionality

Lecture 160 Getting the filtered data

Lecture 161 Adding the user event filters

Lecture 162 Adding the user event query

Lecture 163 Adding profile actions for user events

Lecture 164 Summary of section 14

Section 15: Adding chat with Firebase

Lecture 165 Introduction

Lecture 166 Setting up firebase

Lecture 167 Setting up the chat form

Lecture 168 Listening to the chat data

Lecture 169 Displaying the comments

Lecture 170 Improving the chat UI

Lecture 171 Clearing the chat comments

Lecture 172 Adding the reply functionality

Lecture 173 Displaying the replies

Lecture 174 Summary of section 15

Section 16: Adding a following / followers feature

Lecture 175 Introduction

Lecture 176 Adding the firestore functions

Lecture 177 Unfollow a user

Lecture 178 Listening to the following data

Lecture 179 Adding the following components

Lecture 180 Listening to the followers data

Lecture 181 Updating the following count

Lecture 182 Updating the following user status

Lecture 183 Clearing the followings

Lecture 184 Firestore batches

Lecture 185 Firestore batches part 2

Lecture 186 Cloud functions introduction

Lecture 187 Setting up cloud functions

Lecture 188 Creating our own cloud functions

Lecture 189 Firebase functions logs

Lecture 190 Creating a personalized news feed

Lecture 191 Adding functions for the feed

Lecture 192 Listening to the news feed

Lecture 193 Displaying the news feed events

Lecture 194 Summary of section 16

Section 17: Pagination and data consistency

Lecture 195 Introduction

Lecture 196 Implementing pagination

Lecture 197 Improving the paging UI

Lecture 198 Infinite scroll

Lecture 199 Fixing the event detailed page

Lecture 200 Fixing the event filters

Lecture 201 Dealing with duplicate data

Lecture 202 Implementing data consistency

Lecture 203 Updating security rules

Lecture 204 Summary of section 17

Section 18: Securing the application

Lecture 205 Introduction

Lecture 206 Checking anonymous access

Lecture 207 Creating a modal to prompt login

Lecture 208 Creating a private route

Lecture 209 Connecting the router to the store

Lecture 210 Redirecting the user with connected router

Lecture 211 Showing the modal on click

Lecture 212 More on Firestore security rules

Lecture 213 Restricting API Key usage

Lecture 214 Summary of section 18

Section 19: Optimizing and publishing the app

Lecture 215 Introduction

Lecture 216 Optimizing the events

Lecture 217 Optimizing the events part 2

Lecture 218 Optimizing the profiles

Lecture 219 Building the application

Lecture 220 Service worker

Lecture 221 Publishing our app to Firebase

Lecture 222 Resolving issues with the app and redeploying

Lecture 223 End of course summary

Section 20: Update Oct 2021 – React 17 & Firebase v9

Lecture 224 Updating the Node Module packages to latest versions

Lecture 225 Updating the Firestore and Firebase methods with the new modular imports

Section 21: Legacy content

Lecture 226 Where to access legacy content

Beginner developers who have familiarity with HTML, CSS and JS who want to learn about React and Redux,Beginner developers who want to learn about Firestore, Google’s new database service

Course Information:

Udemy | English | 23h 52m | 9.45 GB
Created by: Neil Cummings

You Can See More Courses in the Developer >> Greetings from

New Courses

Scroll to Top