CalcSnippets Search
Node.js 2 min read

NestJS Got to Seventy-Five Thousand Stars Because Large Node Backends Finally Needed a Framework That Treated Structure Like a Feature, Not a Lecture

NestJS sits at about 75,587 GitHub stars and remains a major choice for serious Node backends. This guide covers what it does, how modules and controllers work, and how to deploy NestJS cleanly with PM2, Docker, or managed platforms.

The punchline is simple: NestJS got big because a lot of Node teams eventually discovered that “just structure it ourselves” often means “we will invent six different patterns and regret all of them.”

GitHub shows NestJS at roughly 75,587 stars, and that is what happens when a framework gives Node developers a strong architecture story without forcing them to abandon the ecosystem they already use.

What NestJS is actually for

NestJS is excellent for:

  1. large APIs
  2. modular backend systems
  3. enterprise-ish codebases
  4. teams that need conventions
  5. apps using DI, guards, pipes, and layered architecture

It is popular because it makes growth survivable. Small apps can stay readable, and large apps do not have to collapse into router spaghetti.

Start a Nest project

npm i -g @nestjs/cli
nest new my-nest-app
cd my-nest-app
npm run start:dev

Basic controller:

import { Controller, Get } from "@nestjs/common";

@Controller("health")
export class HealthController {
  @Get()
  check() {
    return { ok: true, framework: "nestjs" };
  }
}

That controller then gets wired into a module, which is where Nest starts paying off for larger systems.

Why it stayed popular

NestJS solved a painful middle stage:

  1. Express is flexible but too loose at scale
  2. hand-rolled architecture drifts
  3. TypeScript projects need repeatable patterns
  4. teams need onboarding consistency

NestJS made backend structure feel like product leverage rather than ceremony.

How to deploy it

Standard production build

npm run build
npm run start:prod

PM2

npm install -g pm2
pm2 start dist/main.js --name my-nest-app

Docker

FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["node", "dist/main.js"]

Build and run:

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

What it disrupted

NestJS did not destroy Express. It did something more realistic: it exposed how many Express backends were being held together by memory, habit, and hope. For teams with more than one backend developer, that mattered. A lot.

Sources

Keep reading

Related guides