# Key MERN Stack Concepts ### What are some key concepts to learn in MERN Stack ? MERN Stack is build of 4 robust technologies i.e. MongoDB, Express, React and Node. A full stack developer should be proficient in all the technology for developing frontend, backend and managing database. As a MERN stack developer, - We use React as view layer for forntend UI development - Node/Express as backend for handling logic for the application - MongoDB as database for application data All these libraries are keys for being a MERN stack developer. I am going to list some keys concepts from each of these technologies, mastering those can speed up the MERN stack learning process. I will list them in order which is available in the [roadmap](./roadmap.md) so that developers can learn them in a sequence. #### Key concepts in Node.js **1. Understand HTTP Protocol** - What is HTTP ? - Different parts of HTTP - URL(Uniform Resource Locator) - Messages(Request & Response Messages) **2. Understand Core Node Modules** - http - fs - url **3. Create Basic Server** - use http's createServer to create a basic server - handle request and response object - Request methods - Response status codes - parse requested URL ```js var http = require('http); http.createServer((request, response) => { if(req.url === '/') { res.write("Welcome"); res.end() } else { res.end(Page Not Found); } }).listen(3000); ``` **4. Handle data from request** - Capture data on the server side - Handle FORM data from requests - Handle JSON data from clients #### Key Concepts in MongoDB **1. MongoDB Structure** - Database at the top - Collections - Documents - JSON Objects This is how a document looks like in mongoDB ```js { "_id" : ObjectId("5f51ed3aa037f5e14ec7c0c5"), "price" : 60000, "category" : "laptop", "tags" : [ "laptop", "mac", "electronics" ], "name" : "Macbook Air" } ``` **2. CRUD Operations in MongoDB** - Insert/InsertMany for adding doucments - Find to retrieve the documents - Update/UpdateMany for updaing exisiting records - Remove/Delete for deleting documents **3. Advanced CRUD Operations** - Update nested objects - Update array fields with new elements - Increment/Decrement numerical values - Sorting/Filtering based on Date **4. Indexes and aggregations in MongoDB** - Single Field Index - Multikey Indexes - text based Indexes - Aggregation Pipeline Operators like - \$group - \$match - \$distinct - \$project - $sum, $avg **5. Import/Export data to/from mongoDB** - Import data to mongoDB database from JSON/CSV files - Export mongoDB database to JSON/CSV files #### Key concepts in Express **1. Initiate package.json file & import external modules** - use npm scripts to create package.json metadata file - use `npm install` scripts to install external modules from NPM global repository. - Understand `Semantic Versioning(SEMVER)` for package maintainance - Use external packages in node projects **2. Express Fundamentals** - Create a basic server in express - Understanding Middlewares - Built-in Middlewares like express.json(), express.static() etc.. - Third Party Middlewares like morgan or session. - Error Handler Middlewares - Routing in Express applications A basic express application looks like below: ```js // require express module var express = require('express); // Mount express app on app variable var app = express(); // middlewares app.use(express.json()); // routes app.get('/', (req, res) => { res.send('Welcome to Express'); }); // error handler middleware app.use((req, res, next) => { res.send('page Not Found) }) ``` **3. Mongoose ORM** Mongoose is a wrapper around the mongoDB database which helps express application connect to mongoDB database and perform CRUD applictaions by designing structure of documents. - Install mongoose external NPM package - connect to MongoDB database using `mongoose.connect()` - Create data models in express for saving it into database - Adds required validations for data used by the express application - Provides helper functions to the application for performing CRUD operations - Learn hooks and methods provided by mongoose **4. Authentication & authorization** - Implement User registration - Hash passwords being saved into database - Implement simple email/password login **5. Create APIs using Express** Application program Interface(API) is used as an interface between clients and application server for exchange of data. Clients can send data to server via API and vice-versa. All the exchange of data happens using JSON format. There are other formats as well for exchange of data like XML/HTML formats but JSON is widely used and adopted way of transferring data between client <-> server. - Understand API & its principles - Create API routes in express application - Learn about JSON Web Tokens and their structure - Learn JWT Authentication in express - Create JWT tokens after successful login - Verify JWT token for logged-in user - Verify logged-in User - Handle protected endpoints #### Key concepts in React React is the frontend part of the full-stack application which uses HTML, CSS & Javacsript to create UI components which are rendered on the browser. It uses a concept of virtual DOM which re-renders the actual DOM based on changed state of data received from the application server. **1. Introduction to React & Components** - Why React ? - Class Vs Functional Component - Component and Props - JSX VS HTML - Using create-react-app for boilerplate - Breaking UI into smaller components - Understand Import/Export in React **2. State & Form** - Understanding React State - Conditional rendering in React - Handling Input Elements & Validating Forms - Controlled Vs Uncontrolled Component **3. Lifecycle Hooks** - Render - ComponentDidMount - ComponentDidUpdate - ComponentWillUnmount **4. Routing in React** **5. Advanced topics in React** - Context API - Advanced Hooks - Using Redux for state management That's a wrap up on all the key concepts in MERN stack. If you found this article to be informative then you would love [the ultimate guide to MERN stack](./the-ultimate guide to mern stack).