MERN stands for MongoDB, Express.js, React and Node.js. These are four JavaScript-based technologies used together to build a web application. MongoDB stores the data. Express.js and Node.js run the server and the API. React builds the screens the user sees. Every layer speaks JavaScript, and the layers pass data around as JSON. This suits a dynamic, single-page application that reads and writes data through an API. This guide explains what each layer does, how a request moves through all four, and where MERN fits against MEAN and MEVN.
The four layers of MERN
Each letter in MERN names a separate piece of software with its own job. Read each one on its own terms before you look at how they connect.
MongoDB: the database
MongoDB is a document database. It stores data in flexible, JSON-like documents (MongoDB, "What is MongoDB?"). Fields can vary between documents in the same collection. This suits data that does not fit neatly into fixed rows and columns. MongoDB describes itself as a distributed database at its core. It has built-in replication for high availability and native sharding for horizontal scaling (MongoDB, "What is MongoDB?"). In a MERN app, this is where user records, posts or to-do items live.
Express.js: the web framework
Express.js is a minimal and flexible Node.js web application framework. Its own site describes it as "fast, unopinionated, minimalist" (Express.js homepage). It sits on top of Node.js and gives you routes, middleware, and request and response handling. You do not write raw HTTP-handling code for every endpoint. In a MERN app, Express.js defines the API routes that React calls, and that read from and write to MongoDB.
React: the user interface
React describes itself as "the library for web and native user interfaces" (React.dev), not a full framework. Jordan Walke created it at Facebook, and it was used internally from 2011 (React, Wikipedia). It was announced publicly at JSConf US in May 2013. Today a distributed team maintains it, spanning Meta, Vercel, Expo, Microsoft and other companies (React team page). In a MERN app, React renders the pages in the browser and calls the Express.js API for data.
Node.js: the server runtime
"As an asynchronous event-driven JavaScript runtime, Node.js is designed to build scalable network applications" (Node.js, "About Node.js"). It lets JavaScript run outside a browser, on a server, which is what makes an all-JavaScript stack possible. One common but incorrect claim is that Google built Node.js for Chrome. Google did build the V8 JavaScript engine for Chrome. Google open-sourced V8 on 2 September 2008, the same day Chrome launched (V8 team, "Celebrating 10 years of V8"). Node.js is a separate project. Ryan Dahl created it and first presented it in 2009 (Node.js, Wikipedia). He chose to run it on V8 rather than build his own engine. V8 itself is Google's open source JavaScript and WebAssembly engine, used in both Chrome and Node.js (V8 JavaScript engine). Node.js was never a Google product.
How the four layers talk to each other
Naming the four pieces does not show how they work together. A single request through a MERN app follows a fixed path, shown below for a to-do list example.

The browser never talks to MongoDB directly. React always goes through Express.js, and Express.js is the only layer that queries the database. This separation lets you change the front end, the API or the database on its own. The API contract between them has to stay the same.
A minimal working example
The two snippets below show the pattern from the diagram in code. The first is an Express.js route running on Node.js. It reads from MongoDB through Mongoose, a library for modelling MongoDB data in Node.js. The second is a React component that calls that route and renders the result. Treat this as a teaching example to type out and run, not a specific project from any Ethnus batch.
const mongoose = require('mongoose');
const Todo = mongoose.model('Todo', new mongoose.Schema({
text: String,
done: Boolean,
}));
app.get('/api/todos', async (req, res) => {
const todos = await Todo.find();
res.json(todos);
});
function TodoList() {
const [todos, setTodos] = useState([]);
useEffect(() => {
fetch('/api/todos')
.then((response) => response.json())
.then(setTodos);
}, []);
return (
<ul>
{todos.map((todo) => (
<li key={todo._id}>{todo.text}</li>
))}
</ul>
);
}
Try this today. Set up a local MongoDB instance or a free MongoDB Atlas cluster. Add the Express.js route above to a small Node.js server, and call it from the React component. Watch the browser's network tab to see the JSON travel from MongoDB to Express.js and back to React.
When MERN fits, and when it might not
MERN suits applications with JSON-heavy data and a dynamic, single-page interface. Three common examples show why.
- To-do and calendar apps: the data is a simple list of documents. React can update the list without reloading the page.
- Discussion forums: posts and replies map naturally onto MongoDB documents. Express.js can expose one API for both reading and posting.
- Social feed apps: a stream of posts, likes and comments benefits from React re-rendering only the parts of the page that change.
MERN fits less well for an application built mainly around fixed, heavily related tables. A project needing complex joins across many entities, or a team with deep experience in another stack, may not gain much by switching. Choosing a stack because it is popular is not the same as choosing it because it matches the project.
MERN compared with MEAN and MEVN
MongoDB, Express.js and Node.js also appear in two other common JavaScript stacks. Each one swaps out the front-end layer. Every front end describes itself differently in its own documentation. No official benchmark supports a claim that one stack performs better than the others. The table below compares descriptions and shared components, not performance.
| Stack | Frontend layer | Frontend's own description | Shared backend |
|---|---|---|---|
| MERN | React | "The library for web and native user interfaces" (react.dev) | MongoDB, Express.js, Node.js |
| MEAN | Angular | "A web framework" (angular.dev) | MongoDB, Express.js, Node.js |
| MEVN | Vue.js | "A JavaScript framework for building user interfaces" (vuejs.org) | MongoDB, Express.js, Node.js |
Current Angular is a different codebase from AngularJS (1.x). AngularJS support has officially ended as of January 2022 (AngularJS, "Version Support Status"). A "MEAN stack" reference today means Angular, not the retired AngularJS.
Try this as an exercise. Pick two project ideas you have in mind and check them against the table. If your team already knows Angular, MEAN may need less new learning. If you want a UI library rather than a full framework, MERN or MEVN fit better. There is no universally correct answer, only a better fit for a given team and project.
Learning MERN at Ethnus
Ethnus Codemithra's MERN Full Stack course pairs a 250-plus hour basic essentials course with a 200-plus hour full stack course. The frontend curriculum covers HTML5, CSS3, Bootstrap, JavaScript (ES6), TypeScript and React. The backend curriculum covers Node.js, Express.js and MongoDB. The MongoDB module covers CRUD operations, aggregations and indexing. The Express.js module covers templating and middleware. The React module covers components, routing, forms and testing with Jest. The Node.js module covers modules, the event loop and the file system. The program includes trainer-led sessions with step-by-step walkthroughs and module-based assignments. Placement preparation activities include a resume-building workshop and practice interviews. The course ends with a certificate covering HTML, CSS, Bootstrap, JavaScript, MongoDB, Express.js, React and Node.js.
Frequently asked questions
Is MERN a framework?
No. MERN combines four separate technologies: a database (MongoDB), a web framework (Express.js), a UI library (React) and a runtime (Node.js). Express.js is a framework, but React describes itself as a library (react.dev).
Did Google build Node.js?
No. Google built the V8 engine that Node.js runs on. Google open-sourced V8 in 2008 alongside Chrome's launch (V8 team, "Celebrating 10 years of V8"). Ryan Dahl created Node.js separately in 2009 (Node.js, Wikipedia).
Do I need to learn all four technologies before I start?
You need enough JavaScript to read and write functions and objects first. Ethnus Codemithra's MERN course starts with HTML5, CSS3 and JavaScript fundamentals. It then moves into React, Node.js, Express.js and MongoDB (MERN Full Stack course).
Is MERN faster than MEAN or MEVN?
No official, citable benchmark supports a claim that MERN performs better than MEAN or MEVN. The right choice depends on your team's existing skills and the project's requirements, not a fixed performance ranking.
If you want to move from reading about MERN to building with it, start with JavaScript fundamentals. Ethnus Codemithra's MERN Full Stack course then covers all four layers with trainer-led sessions and module-based assignments.


