iniciosobre miblogproyectosstack
  • inicio
  • sobre mi
  • blog
  • proyectos
  • stack
    github.com/figueroaignacio/
    linkedin.com/in/figueroa-ignacio/
    ignaciofigueroadev@gmail.com
Ignacio Figueroa
Ignacio FigueroaDesarrollador Fullstack y Estudiante de Programación en la UTN

Puedes contactarme aquí abajo.

    github.com/figueroaignacio/
    linkedin.com/in/figueroa-ignacio/
    ignaciofigueroadev@gmail.com

La magia de Nest.js: el framework que te ordena la cabeza y el backend

Nest.js: su arquitectura modular, por qué ordena tu código, y qué cosas todavía te pueden sacar canas verdes. Un recorrido práctico, simple y directo.

Publicado por

Ignacio Figueroa
Ignacio FigueroaDesarrollador Fullstack y Estudiante de Programación en la UTN

Si alguna vez tocaste Nest.js, seguro pensaste dos cosas:

  1. “Che, esto está re prolijo.”
  2. “¿Por qué carajo en Express no teníamos esto antes?”

Y es normal.
Nest no es solo un framework: es una forma de pensar.
Te ordena la vida de backend de una manera que no sabías que necesitabas hasta que la probás.

Voy a explicarte su magia, por qué funciona, su arquitectura, ejemplos reales, y por qué honestamente es el mejor framework del ecosistema Node hoy.

Nest.js no está hecho para hacerte feliz al principio… sino a largo plazo

Te va a pasar:
los primeros 10 minutos vas a abrir un proyecto Nest y pensar:

“¿Por qué hay tantos archivos? ¿Por qué todo tiene nombres tan largos? ¿Qué es un módulo?”

Pero después entendés algo clave:
todo tiene un propósito.

Nest es backend escalable, no backend “salimos del paso rápido”.
Porque para hacer un endpoint rápido Express alcanza.
Pero para hacer un sistema real, donde hay:

  • autenticación
  • servicios
  • repositorios
  • websockets
  • colas
  • microservicios
  • módulos separados

… entonces Express se te convierte en una fábrica de deuda técnica.

Nest.js no.
Ahí es donde aparece la magia.

Arquitectura: la gracia está en cómo organiza todo

Nest sigue el patrón modular, lo que significa que agrupás las cosas por funcionalidad, no por tipo de archivo.

En vez de tener:

1controllers/
2routes/
3services/
4middlewares/

Tenés algo así:

1src/
2 users/
3 users.module.ts
4 users.controller.ts
5 users.service.ts
6 dto/
7 create-user.dto.ts
8 update-user.dto.ts
9 entities/
10 user.entity.ts
11
12 auth/
13 auth.module.ts
14 auth.controller.ts
15 auth.service.ts
16
17 app.module.ts
18 main.ts

¿Ves?
Cada módulo es como una cajita independiente, limpia, autocontenida.

Esto hace que:

  • tu proyecto escale sin volverse un quilombo
  • puedas mover módulos sin romper todo
  • sea fácil agregar nuevos features
  • nuevos devs entiendan el código sin llorar

Los 3 pilares del código en Nest (con ejemplos)

1. Controllers → manejan las rutas

1@Controller('users')
2export class UsersController {
3 constructor(private readonly usersService: UsersService) {}
4
5 @Get()
6 findAll() {
7 return this.usersService.findAll();
8 }
9
10 @Post()
11 create(@Body() dto: CreateUserDto) {
12 return this.usersService.create(dto);
13 }
14}

Clarito.

Un @Controller(), un @Get(), y sabés exactamente qué hace.

2. Services → lógica de negocio (y nada más)

1@Injectable()
2export class UsersService {
3 private users = [];
4
5 findAll() {
6 return this.users;
7 }
8
9 create(dto: CreateUserDto) {
10 const newUser = { ...dto, id: Date.now() };
11 this.users.push(newUser);
12 return newUser;
13 }
14}

No hay rutas acá.
No hay express mágicos.
No hay middlewares escondidos.

Solo lógica pura.
Como debe ser.

3. Modules → el corazón del orden

1@Module({
2 controllers: [UsersController],
3 providers: [UsersService],
4})
5export class UsersModule {}

Los módulos son como el “cerebro organizador” de Nest.

Agrupan:

  • controladores
  • servicios
  • providers
  • imports de otros módulos

Es literalmente lo que mantiene todo prolijo.

Dependency Injection: el “truco de magia” de Nest

Esto es lo que separa a Nest.js del resto del mundo Node.

La inyección de dependencias te permite que los servicios se creen automáticamente, se compartan, y que no tengas que andar haciendo:

1const service = new UsersService();

Nest entiende todo por vos.

Por eso podés escribir:

1constructor(private usersService: UsersService) {}

… y listo.

Nest lo crea, lo inyecta y lo mantiene vivo.

Esto te da:

  • testabilidad altísima
  • menos bugs raros
  • más escalabilidad
  • 0 acoplamiento peligroso
  • posibilidad de sustituir servicios (mocking) sin tocar nada

Es magia.
MAGIA.
No hay otra palabra.

DTOs: tu API deja de romperse

Nest fomenta el uso de DTOs (Data Transfer Objects).

Ejemplo:

1export class CreateUserDto {
2 @IsString()
3 name: string;
4
5 @IsEmail()
6 email: string;
7}

Esto:

  1. valida datos
  2. documenta qué espera tu API
  3. evita errores estúpidos
  4. te da más seguridad que andar a ciegas

En Express, si te olvidás de validar algo, se rompe todo en producción.
En Nest, te obliga a ser prolijo.

Pipe, Guards, Interceptors: el backend pro

Nest incluye herramientas increíbles:

  1. Pipes → validan y transforman datos
  2. Guards → manejan auth y permisos
  3. Interceptors → modifican requests/responses
  4. Filters → manejan errores globales

Todo modulable.
Todo limpio.
Todo en archivos separados.
No como en Express donde terminás metiendo middleware dentro de middleware dentro de middleware…

Nest.js no es perfecto (y está bien aceptarlo)

Sí, Nest tiene contras:

  • más boilerplate
  • demasiados archivos
  • decorators que pueden marear al principio
  • curva de aprendizaje mayor
  • mentalidad más “enterprise” que “rapidito y sucio”

Pero también te digo:
si estás construyendo algo serio, no querés "rapidito y sucio".
Querés orden.
Querés escala.
Querés arquitectura.

Nest te da eso.

¿Por qué mucha gente lo odia?

Simple:

  • porque exige pensar
  • porque no es Express
  • porque es muy estructurado
  • porque parece Java o Spring
  • porque es más maduro que la industria JS promedio

Pero te digo algo con cariño:

La gente que critica Nest es la que nunca tuvo que mantener un backend grande.

¿Por qué para mí Nest.js es el framework #1?

Porque me da:

  • arquitectura limpia
    modularidad real
    escalabilidad sin quilombos
    TypeScript integrado perfecto
    testing fácil
    soporte para microservicios
    WebSockets listos
    documentación decente
    un proyecto prolijo que da placer mantener

Nest.js te hace sentir que trabajás de verdad.
No que estás parchando cosas todo el tiempo.

Por eso hoy, sin desmerecer Express, Fastify y demás, te digo:

Nest.js es el mejor framework backend en Node, lejos.

Y cada vez que lo uso, me acuerdo de por qué.