📓 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.