React, NodeJS, Express & MongoDB - The MERN Fullstack Guide
Build fullstack React.js applications with Node.js, Express.js & MongoDB (MERN) with this project-focused course.
What you will learn?
- Learn how to connect ReactJS with NodeJS, Express & MongoDB
- Build an entire project from scratch!
- Refresh the basics about ReactJS, NodeJS, Express and MongoDB
- Learn how to implement Authentication & Authorization
- Add File Upload to ReactJS + Node/ Express Applications
Your trainer
Maximilian Schwarzmüller
Starting out at the age of 13 I never stopped learning new programming skills and languages. Early I started creating websites for friends and just for fun as well. Besides web development I also explored Python and other non-web-only languages. This passion has since lasted and lead to my decision of working as a freelance web developer and consultant. The success and fun I have in this job is immense and really keeps that passion burningly alive.
Starting web development on the backend (PHP with Laravel, NodeJS, Python) I also became more and more of a frontend developer using modern frameworks like React, Angular or VueJS 2 in a lot of projects. I love both worlds nowadays!
208 lessons
Easy to follow lectures and videos covering subject details.
18.5 hours
This course includes hours of video material. Watch on-demand, anytime, anywhere.
Certificate of Completion
You will earn a Certificate of Completion at the end of this course.
Course curriculum
- Introduction01:47
- What is the "MERN Stack"?07:31
- MERN - A First Overview02:11
- Join our Online Learning Community00:25
- Course Outline02:13
- How To Get The Most Out Of The Course02:54
- Using the Course Resources00:33
- Module Introduction01:18
- Understanding the Big Picture08:04
- Diving Into the Frontend04:06
- Understanding the Backend05:10
- REST vs GraphQL07:54
- Connecting Node & React05:50
- MERN - Essentials7 questions
- Creating our Development Environment & the Development Servers11:24
- Diving Deeper Into the Code09:45
- Useful Resources & Links00:13
- Module Introduction04:50
- Understanding the General App Idea02:35
- Sketching out the Frontend09:37
- Data & API Endpoints used in our App05:19
- Required SPA Pages for the Frontend02:56
- Module Introduction01:12
- What is React?03:13
- A Note About The NodeJS Version00:21
- React 1800:53
- Setting Up a Starting Project04:03
- Understanding JSX05:31
- Understanding Components02:50
- Working with Multiple Components07:04
- Using Props to pass Data between Components06:52
- Rendering Lists of Data04:30
- Handling Events07:24
- Efficient Child<=>Parent Communication04:38
- Working with "State"05:54
- More on State04:20
- Fetching User Input (Two-way Binding)05:52
- React.js Basics5 questions
- Wrap Up02:11
- Useful Resources & Links00:11
- Module Introduction02:32
- Starting Setup, Pages & Routes17:21
- Adding a UsersList Page / Component09:29
- Adding a UserItem Component03:41
- Styling our App & More Components07:17
- Presentational vs Stateful Components03:22
- Adding a Main Header09:46
- Adding Navlinks05:05
- Implementing a Basic Desktop & Mobile Navigation04:21
- Understanding Portals03:00
- Handling the Drawer State04:07
- Animating the Sidedrawer05:14
- Rendering User Places & Using Dynamic Route Segments16:12
- Getting Route Params02:16
- Adding Custom Buttons02:53
- Adding a Modal17:26
- Rendering a Map with Google Maps14:36
- Continuing without a Credit Card01:08
- Optional: More on the useEffect() Hook01:21
- Adding a Custom Form Input Component09:42
- Managing State in the Input Component11:51
- Adding Input Validation08:02
- Sharing Input Values & Adding Multiple Inputs08:11
- Managing Form-wide State09:11
- Finishing the "Add Place" Form03:19
- Starting Work on the "Update Place" Page08:45
- Adjusting the Input Component02:38
- Creating a Custom Form Hook (useForm)11:02
- Optional: More on (Custom) React Hooks00:55
- Adjusting the Form Hook11:19
- Fixing Minor Issues04:32
- Showing a Deletion Warning05:27
- Adding an "Auth" Page & Login Form09:05
- Adding Signup + "Switch Mode" Button11:18
- Adding Auth Context for App-wide State Management07:04
- Listening to Context Changes02:11
- Adding Authenticated & Unauthenticated Routes05:49
- More Auth Context Usage02:44
- Wrap Up01:08
- Useful Resources & Links00:11
- Module Introduction01:40
- What is Node.js?02:55
- Writing our First Node.js Code08:20
- Sending Requests & Responses13:34
- What is Express.js?01:15
- Adding Express.js11:39
- Understanding the Advantages of Express.js08:32
- How Code Execution Works03:16
- Node & Express Basics5 questions
- Useful Resources & Links00:12
- Module Introduction02:17
- Setting up our Project02:29
- Implementing Basic Routing11:21
- Adding Place-Specific Routes09:39
- Getting a Place By User ID04:37
- Handling Errors10:51
- Adding our own Error Model04:45
- Adding Controllers06:42
- Adding a POST Route & Using Postman13:21
- Handling Errors for Unsupported Routes02:13
- Adding Patch Routes to Update Places08:03
- Deleting Places04:07
- Finalizing the "Get Places by User ID" Resource02:44
- Setting Up the User Routes (Signup, Login, Get Users)13:23
- Validating API Input (Request Bodies)10:19
- Validating Patch Requests & User Routes06:14
- Using Google's Geocoding API to Convert an Address Into Coordinates16:20
- Wrap Up01:27
- Useful Resources & Links00:12
- Module Introduction01:15
- What is MongoDB?01:26
- SQL vs NoSQL03:41
- Connecting React to a Database?01:44
- Setting Up MongoDB05:26
- Creating a Simple Backend & Connecting it to the Database05:50
- Creating a Document with MongoDB07:52
- Getting Data from the Database06:11
- Installing Mongoose01:31
- Understanding Models & Schemas03:51
- Creating a Product03:23
- Connecting to the Database & Saving the Product07:28
- Getting Products04:12
- Understanding the ObjectID03:18
- Wrap Up01:42
- Useful Resources & Links00:09
- Module Introduction01:27
- Installing Mongoose & Connecting our Backend to MongoDB06:32
- Creating the Place Schema & Model06:34
- Creating & Storing Documents in the Database07:26
- Getting Places by the PlaceID08:07
- Getting Places by the UserID05:53
- Updating Places06:10
- Deleting Places03:43
- How Users & Places are Related01:34
- Creating the User Model06:27
- Using the User Model for Signup11:43
- Adding the User Login04:19
- Getting Users05:37
- Adding the Relation between Places & Users05:03
- Creating Places & Adding it to a User13:59
- Deleting Places & Removing it From the User07:47
- Getting Places - An Alternative05:38
- Cleaning Up our Code02:32
- Wrap Up01:43
- Useful Resources & Links00:09
- Module Introduction01:31
- Initial Setup01:01
- Sending a POST Request to the Backend10:30
- Optional: The fetch() API00:35
- Handling CORS Errors06:58
- Getting Started with Error Handling07:59
- Proper Error Handling in the Frontend05:05
- Sending a Login Request03:35
- Getting Users with a GET Request10:22
- Creating a Custom Http Hook10:50
- Improving the Custom Http Hook08:29
- Using the Http Hook to GET Users03:47
- Adding Places (POST)13:06
- Loading Places by User Id07:59
- Updating Places12:23
- Deleting Places07:40
- Fixing NavLinks & "My Places"01:06
- Final Adjustments03:42
- Useful Resources & Links00:10
- Module Introduction01:13
- Building an ImageUpload Component10:36
- Finishing & Using the ImageUpload Component (in a Form)12:16
- On the Backend: Using Multer to Save Files08:52
- Filtering Files on the Backend (Images Only!)03:03
- Wiring Frontend and Backend Up05:09
- Connecting Users to Images06:19
- Serving Images Statically03:33
- Uploading Images for New Places06:08
- Deleting Images When Places Get Deleted02:59
- Wrap Up01:32
- Useful Resources & Links00:10
- Module Introduction01:08
- How Authentication Works (in a MERN App)05:01
- Hashing the User Password05:31
- Logging Users In (with Hashed Passwords)03:10
- Generating Tokens (JWT) on the Backend09:01
- Optional: More on JSON Web Tokens00:07
- Backend Route Protection with Auth Middleware12:48
- Using & Attaching JWT (Tokens) in React07:17
- Using Tokens to Update and Delete Places02:26
- Adding Authorization07:35
- Authorization on "Delete Places"03:01
- Storing the Token in the Browser Storage06:09
- Adding Auto-Login (Basic Version)05:13
- Managing the Token Expiration Date04:54
- Finished Auto-Login & Auto-Logout08:03
- Creating a Custom Authentication Hook03:45
- Authentication - Summary01:49
- General App Improvements04:40
- Authentication & Authorization3 questions
- Useful Resources & Links00:10
- Module Introduction00:55
- Deployment Steps Overview02:29
- Using Environment Variables (Node.js)08:25
- Environment Variables in React Apps07:26
- Preparing API Keys & Credentials05:47
- Building the React App04:31
- Adding Code Splitting to React07:14
- Understanding Possible Deployment Alternatives03:49
- Deploying a Standalone REST API (Example: Heroku)10:46
- Deploying a Standalone React SPA (Example: Firebase Hosting)09:12
- Fixing Style Issues01:35
- Deploying a Combined App10:24
- Storing Files/ Uploads02:20
- Wrap Up00:45
- Course Roundup00:55
- Bonus Content00:17
Online Courses
Learning NodeJS doesn't have to be hard. Here is our curated list of recommended online courses that will guide you step-by-step in the learning process.
Learn moreBooks
Are you an avid book reader? Do you prefer paperback, or maybe Kindle version? Take a look at our curated list of NodeJS related books and take your
YouTube videos
The number of high-quality and free NodeJS video tutorials is growing fast. Check this curated list of recommended videos - there is no excuse to stop learning.
Learn more