MEN Stack Referencing Related Data Openhouse
About
This module is all about building a robust MEN (MongoDB, Express.js, Node.js) stack application. We’ll be creating “OpenHouse,” a real estate app that allows users to keep track of and favorite property listings. Throughout this code-along, you’ll learn about referencing related data within user models using Mongoose and MongoDB. Additionally, this module guides you through styling your application, helping you create a polished, portfolio-worthy project. Designed for intermediate learners with a background in full-stack JavaScript development, “OpenHouse” offers practical experience in managing data relationships in full stack web applications.

Content
| Lesson | Skills |
|---|---|
| Setup | Setting up the development environment. |
| Setting the Stage | Developing User Stories and an ERD. |
| Build the Listing Model | Creating a model for the listing resource. |
| Build and Use the Listings Controller | Require and mount a controller file. |
| Add Route Middleware | Create middleware to check authentication and pass user data to the view. |
| Build the Listings Landing Page | Construct a landing page for a resource. |
| Build the Navigation Bar Partial | Create NavBar partials. |
| Build the New Page | Construct a New page view with a form for user input. |
| Build Create Functionality | Implementing create functionality. |
| Add Index Functionality to the Listings Landing Page | Applying the populate() method to index functionality. |
| Build the Show Page | Displaying a single resource on its own page. |
| Build Delete Functionality | Securely deleting a resource with protected controller actions. |
| Build the Edit Page | Building an edit view. |
| Build Update Functionality | Securely updating a resource with protected controller actions. |
| Add Favorites to the Listing Schema | Implementing many-to-many relationships in MongoDB. |
| Add Favorites Functionality to the Show Page | Implementing the functionality to favorite a resource. |
| Add Unfavorite Functionality to the Show Page | Implementing the functionality to unfavorite a resource. |
| Wrap Up | Review of key concepts |
Level Up content
| Lesson | Skills |
|---|---|
| Formatting Currency | Formatting currency in JavaScript. |
| Viewing a User’s Favorite Listings | Displaying related user data. |
| Style the Application | Adding CSS to style the application |