Skip to main content
Version: v1.4

📓 3.4.0.1 React with NoSQL Objectives

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'll build on the hooks you learned in React Fundamentals. You already know how to use useState(). Here's what we'll cover next:

  • The useEffect() hook, for running side effects like subscribing to a database
  • The rules of hooks and best practices for using multiple hooks together
  • How to write a custom hook to package and reuse stateful logic

Once we're comfortable with these new tools, 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
  • Other further exploration activities
  • Technical whiteboarding: preparing for a whiteboard interview, being a good interviewer, and giving constructive feedback

Independent Project Objectives​


At the end of this section, you will complete an independent project by continuing your React Fundamentals independent project, adding Firestore persistence and full CRUD (including delete, which wasn't required before) - though starting fresh with a new theme is also an option. Your code will be reviewed for the following objectives:

  • Application compiles and runs without error, and warnings in the DevTools console are resolved.
  • Firestore is used correctly to persist and retrieve data.
  • Full CRUD functionality (create, read, update, and delete) works correctly, backed by Firestore.
  • TypeScript types are defined for all component props and shared data.
  • README includes an accurate representation of the application's component tree.
  • Project is in a polished, portfolio-quality state.
  • The prompt's required functionality and baseline project requirements are met.