Express not enough for large projects
Express (2010) is minimal; freedom becomes a burden in enterprise TypeScript codebases of tens of thousands of lines. An opinionated structure is needed with:
- Modules
- Dependency injection
- Decorators for routing/middleware
- Controller/service/repository separation
The pattern is familiar to those coming from Angular (frontend) or Spring Boot (Java).
The release
NestJS 1.0 is released by Kamil Myśliwiec (Polish developer) on 29 May 2017. MIT licence. TypeScript-first, built on Express (default) or Fastify (option). Full-stack with modules for WebSocket, GraphQL, Microservices, Event-driven.
@Controller('users')
export class UsersController {
constructor(private readonly usersService: UsersService) {}
@Get(':id')
async findOne(@Param('id') id: string) {
return this.usersService.findOne(id);
}
}
Features
- Decorator-based —
@Controller,@Get,@Injectable,@Module,@Param - DI container — inversion of control like Angular/Spring
- Modular — reusable modules with
@Module({ imports, providers, controllers }) - Pipes — input validation and transformation (class-validator)
- Guards — authorisation (JWT, roles)
- Interceptors — logging, cache, response mapping
- Exception filters — centralised error handling
- Middleware — Express-compatible
- CLI
nest generate module users— scaffolding
Integrated modules
- @nestjs/typeorm / @nestjs/sequelize / @nestjs/mongoose / @nestjs/prisma — ORMs
- @nestjs/graphql — code-first GraphQL
- @nestjs/microservices — Redis, NATS, Kafka, gRPC, RabbitMQ
- @nestjs/websockets — Socket.IO, ws
- @nestjs/bull — job queues
- @nestjs/swagger — OpenAPI generation
- @nestjs/passport — 500+ auth strategies
- @nestjs/jwt — JSON Web Tokens
- @nestjs/schedule — cron jobs
Versions
- 1.0 (May 2017) — first release
- 5.0 (July 2018) — major refactor
- 7.0 (February 2020) — improved DI, event-driven
- 8.0 (July 2021) — Fastify 3, TypeScript 4.3
- 10.0 (June 2023) — Node 16+, TypeScript 5
- 11.0 (January 2025) — Node 20+, async context storage
Use cases
- Enterprise REST/GraphQL APIs
- Microservices with message broker
- BFF (Backend for Frontend)
- Real-time servers with WebSocket
- GraphQL gateways
In the Italian context
NestJS is widespread in:
- Italian fintech startups (crypto exchanges, neobanks)
- Enterprise agencies migrating from Java/PHP to Node TS
- Italian B2B SaaS
- Digital PA (some PagoPA APIs, Comune di Milano, Regione Lombardia projects)
- Headless e-commerce
It’s the preferred Node.js framework where rigorous structure and experienced TypeScript teams are needed.
References: NestJS 1.0 (29 May 2017). Kamil Myśliwiec. MIT licence. Inspired by Angular and Spring. Based on Express or Fastify. @nestjs/ ecosystem for GraphQL, Microservices, WebSocket, Swagger. Current version 11.x (2025).*
