Lesson Weekend

In this course section, we'll learn how to persist data with a NoSQL database. We'll use Google's Firebase, an app development platform that provides many services including NoSQL databases, authentication, and hosting.

We will cover the following concepts about NoSQL databases:

  • The differences between NoSQL and SQL databases.
  • How data is saved in NoSQL database.
  • The CAP theorem, which describes distributed NoSQL databases.
  • The acronym BASE that further describes the CAP theorem.

When working with Firebase, we'll use the following services and integrate them into the Help Queue project: * A Firestore database (a type of NoSQL database) * Authentication * Hosting

In this course section, we won't be using Redux to manage our application's state. Instead, we'll learn how to use React hooks! Hooks are tools that enable us to reuse stateful logic and to use state and lifecycle features in function components. While using hooks and using Redux is not mutually exclusive, we're going to focus on only using hooks to manage our React app's state and component lifecycle events by refactoring the Help Queue project. To that end, we'll provide a repo with a starter project.

We'll cover the following topics about hooks:

  • The useState() hook
  • The useEffect() hook
  • The rules of hooks
  • How hooks solve multiple pain points in React development
  • How to write a custom hook

After we learn how to use hooks, we will no longer use class components. That means we'll take the extra step of converting the Help Queue TicketControl component into a function component that uses hooks to manage state and component lifecycle events. Thereafter, we'll start adding Firebase services to the Help Queue.

We'll also cover these additional topics:

  • Structuring data in Firestore databases
  • Routing with React Router
  • Making Firestore queries
  • Adding a wait time to the Help Queue
  • Styling components with styled-components
  • Other further exploration activities

Independent Project Objectives

You will not be expected to incorporate the concepts of this section into your independent project. Instead, your next independent project will be devoted to working on your capstone project. Your code will be reviewed for the following objectives:

  • Project commit history demonstrates a full session of work.
    • For full-time students, we require 8 hours.
    • For part-time students, we require 4 hours.
  • Project includes capstone proposal.
  • README includes an overview of the project.

You can preview the exact instructions and requirements for the React with NoSQL code review by reading the React with NoSQL Independent Project lesson at the end of this section.