CalcSnippets Search
Node.js 2 min read

Express Stayed Near Seventy Thousand Stars Because Most Node Backends Still Need to Answer a Very Basic Question Fast: How Do We Handle HTTP Without Drowning in Framework Philosophy

Express has about 69,047 GitHub stars and is still one of Node’s core web frameworks. This guide explains what Express is for, how to build a minimal API quickly, and how to deploy it with Node, PM2, Nginx, and Docker.

The slightly rude version is fair: Express stayed huge because a lot of teams do not need a framework that teaches them a worldview. They need one that gets HTTP endpoints into production before the meeting calendar eats the week.

GitHub shows Express at roughly 69,047 stars, which is what long-term practical dominance looks like in Node. Express never needed to be trendy every quarter because it solved a permanent problem: define routes, add middleware, ship the server.

What Express is for

Express is still a great fit for:

  1. APIs
  2. internal services
  3. webhooks
  4. simple server-rendered apps
  5. Node backends where flexibility matters more than heavy conventions

It remains important because its mental model is small and durable.

Start a tiny Express app

npm init -y
npm install express

Create server.js:

const express = require("express");
const app = express();

app.use(express.json());

app.get("/health", (req, res) => {
  res.json({ ok: true, framework: "express" });
});

app.listen(3000, () => {
  console.log("Server running on http://localhost:3000");
});

Run it:

node server.js

That is still why people use Express. The path from blank folder to working endpoint is almost offensively short.

Why it never disappeared

Express remained relevant because it handles recurring backend needs without dramatic ceremony:

  1. routing
  2. middleware
  3. JSON APIs
  4. request/response control
  5. ecosystem compatibility

It became the “just get the service running” answer for an enormous amount of Node infrastructure.

How to deploy it

Direct Node

NODE_ENV=production node server.js

PM2

npm install -g pm2
pm2 start server.js --name my-express-app

Docker

FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

Then:

docker build -t my-express-app .
docker run -p 3000:3000 my-express-app

What it solved

Express did not promise to revolutionize backend engineering. It solved the much more valuable problem of being predictably useful. That is why it stayed huge even while newer frameworks tried to sound more sophisticated.

Sources

Keep reading

Related guides