What NestJS Does
Provides out-of-the-box architecture for testable, scalable, loosely-coupled, and maintainable backend apps:
- Modules — organize code by feature
- Controllers — handle incoming HTTP requests
- Providers/Services — business logic via dependency injection
- Pipes/Guards/Interceptors — cross-cutting concerns
- Microservices — Kafka, RabbitMQ, gRPC, Redis, NATS transport
- GraphQL — code-first or schema-first
- WebSockets — real-time gateways
Architecture
Angular-inspired modular architecture: every app has a root AppModule that imports feature modules. Each feature module declares controllers and providers. DI container wires everything at startup.
AppModule
├── UsersModule (UsersController, UsersService)
├── AuthModule (AuthController, AuthService, JwtStrategy)
└── DatabaseModule (TypeOrmModule.forRoot)Self-Hosting
# Production build
npm run build
node dist/main.js
# Docker
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY dist ./dist
CMD ["node", "dist/main.js"]Key Features
- TypeScript-first with decorators
- Built-in DI container
- Express or Fastify HTTP adapter
- OpenAPI/Swagger auto-generation
- TypeORM/Prisma/Mongoose integrations
- CLI for scaffolding
- Testing utilities (Jest-based)
Comparison
| Framework | DI | TypeScript | Opinionated | Best For |
|---|---|---|---|---|
| NestJS | Built-in | First-class | Yes | Enterprise backends |
| Express | Manual | Optional | No | Minimal APIs |
| Fastify | Manual | Good | No | High-perf APIs |
| Koa | Manual | Optional | No | Middleware composition |
FAQ
Q: What's the relationship between NestJS and Express? A: NestJS uses Express as its default HTTP layer but abstracts routing/middleware and provides a higher-level module/DI architecture. You can swap in Fastify instead.
Q: What's the performance like? A: With the Fastify adapter, performance is close to native Fastify. The overhead of the default Express adapter comes from the abstraction layer.
Q: Is the learning curve steep? A: If you know Angular, it's nearly zero-friction. Express users need to learn decorators and DI.
Sources & Credits
- Official Docs: https://docs.nestjs.com
- GitHub: https://github.com/nestjs/nest
- License: MIT