NestJS: Qué Es, Ventajas y Cómo Instalarlo Paso a Paso

Logo Oficial de NestJS Framework en fondo negro y Logo de color fucsia.
Logo Oficial de NestJS Framework.

¿Te gustaría crear APIs profesionales y escalables sin tener que realizar configuraciones interminables? NestJS es la respuesta. Este framework de Node.js está revolucionando el desarrollo backend con su arquitectura moderna inspirada en Angular, y en esta guía completa aprenderás qué es NestJS, como instalar NestJS paso a paso, cómo crear un proyecto NestJS desde cero y por qué los desarrolladores lo eligen sobre Express.

Si ya conoces Express y sientes que tu código se vuelve difícil de mantener a medida que los proyectos crecen, o si tienes experiencia con frameworks como Spring Boot y buscas algo similar en JavaScript/TypeScript, NestJS te sorprenderá. Este framework ha sido elegido por importantes empresas como Netflix, Adidas y Autodesk para construir aplicaciones Enterprise. Este tutorial NestJS para principiantes te mostrará todo lo necesario para que puedas iniciar cuanto antes con este excelente framework.

Guía Paso a Paso

  1. Qúe es NestJS?
    1. Para qué sirve
    2. Casos de Uso
  2. ¿Por qué elegir NestJS en 2025?
  3. Requisitos Previos
    1. NodeJS instalado
    2. Editor de Texto o IDE
    3. Nociones de TypeScript
  4. Cómo instalar NestJS Paso a Paso
    1. Instalación CLI
    2. Crear primer proyecto
    3. Estructura de carpetas
  5. Arquitectura Básica de NestJS
    1. Diagrama visual
    2. Decoradores
    3. Controladores
    4. Servicios
    5. Módulos
    6. Inyección de dependencias
  6. Primera API con NestJS
    1. Crear un módulo
    2. Crear un DTO
    3. Crear un controlador
    4. Crear un Servicio
    5. Probar endpoint
  7. NestJS vs Express
    1. Tabla Comparativa
    2. Cuando usar cada uno
  8. NestJS vs Spring Boot
    1. Tabla Comparativa
    2. Cuando usar cada uno
  9. Próximos Pasos
    1. Siguientes tutoriales
    2. Recursos Recomendados
  10. Errores Comunes
  11. FAQ

Qué es NestJS?

NestJS es un framework escalable y eficiente para construir aplicaciones de lado del servidor en Node.js. Puedes usar JavaScript, pero el framework esta construido con soporte nativo para TypeScript, adicional combina elementos de programación orientada a objetos (OOP por sus siglas en ingles), programación funcional (FP) y programación funcional reactiva (FRP).

NestJS viene por defecto configurado para utilizarse con el framework minimalista Express para atender las solicitudes de servidor HTTP, pero opcionalmente puedes configurar Fastify como servidor de solicitudes.

Para que Sirve

Qué es NestJS y para que sirve? Como mencionamos anteriormente, es un framework para construir una gran variedad de aplicaciones:

  • APIs rest tradicionales.
  • APIs con GrapghQL
  • Microservicios
  • Aplicaciones en tiempo real (web sockets)
  • APIs seguras con autenticación JWT
  • Sistemas con bases de datos SQL y NoSQL
  • Tareas tipo cron, job, batch.
  • Interfaces gráficas en HTML gestionadas desde el backend con HTML convencional o con un motor de plantillas como handlebars.

Esto es lo básico, te sorprenderá que hay mas tipos de aplicaciones que se pueden construir con NestJS, pero por ahora, eso cubre la mayoría de requisitos empresariales.

Casos de Uso

NestJS aun es un framework moderno (joven) si lo comparamos con los maduros/veteranos como Spring Boot que tienen una vida en el mercado de mucho mas años, entonces es difícil encontrar estudios formales y estimaciones de como las empresas han adoptado esta tecnología, sin embargo al navegar un poco por Internet y preguntándole a ChatGPT o Claude (lógicamente los modelos de IA ya hacen parte de nuestra rutina en el día a día 😉), puedes encontrar fácilmente empresas reconocidas a nivel mundial que han adoptado NestJS en sus soluciones de arquitecturas tecnológicas.

Autodesk, Addidas, Netflix, GoDaddy, Decathlon e incluso IBM, son grandes empresas que han incorporado NestJS, y eso solo por nombrar algunas. Ahora, mi anécdota personal; yo trabaje alrededor de 5 años como developer de microservicios para una empresa de telecomunicaciones en Colombia, y aunque al principio casi toda su arquitectura estaba en Spring Boot, poco a poco adoptaron NestJS para proyectos nuevos y para reemplazar algunas funcionalidades viejas de Spring Boot, fue tal su impacto, que hoy es por defecto la tecnología utilizada para proyectos técnicos relacionados con microservicios.

Por qué elegir NestJS en 2025?

Te preguntarás, ¿Porque NestJS es mejor que otros frameworks y que lleva a una empresa a incorporar este framework en su stack tecnológico? Para la respuesta voy a poner de ejemplo unas comparaciones con Spring Boot, pero quiero dejar claro que no considero que NestJS y Spring Boot sean uno mejor que el otro, en mi opinión son complementarios, así que presento mis disculpas a los amantes de Spring Boot pero voy a utilizarlo como punto de comparación porque es el conocimiento mas reciente y fresco que tengo (yo se lo que es amar un framework cuando llevas años usándolo 😅).

En mi opinión personal, fueron tres (3) factores que posicionaron a NestJS como tecnología por defecto para proyectos de microservicios en la compañía donde yo trabaje como developer.

Aumento de productividad

Hay muchas ventajas de usar NestJS para APIs por su velocidad de desarrollo, aunque su curva de aprendizaje es empinada, es mucho menor si la comparamos con Spring Boot, esto se traduce en menor tiempo en desarrollo de aplicaciones backend. Importante para el área de negocio que quiere soluciones rápidas, eficaces y de calidad.

Requisitos Empresariales

Desde el punto de vista empresarial, una de las características principales de NestJS es que puede cumplir la mayoría de requerimientos técnicos y de negocio que pueden exigir las grandes compañías para la solución o implementación de sus proyectos, por ejemplo:

  • Librerías para integrarse con bases de datos empresariales (OracleDb, SQLServer, PostgreSql, MySql, MongoDb, Neo4j, etc).
  • Librerías para integrarse con servicios o componentes que funcionan con el protocolo HTTP, como Rest o Soap.
  • Librerías para integrarse con tecnologías basadas en eventos (también conocidos como brokers de mensajería), Apache Kafka, RabbitMQ, NATS, Redis, etc.
  • Librerías para integrarse con tecnologías JWT para la implementación de protocolos seguros de autenticación como OAuth, seguridad empresarial.
  • Un framework con arquitectura definida (también llamado opinionado), es decir, en su documentación oficial y en su metodología de implementación esta establecido claramente como se realiza la creación de componentes de software (tal como sucede con Spring Boot, Angular o incluso Laravel de PHP). Esto es fundamental para la rotación de personal en las empresas, por ejemplo, hoy estoy como developer pero mañana no, y la persona que asuma mi anterior posición de trabajo si conoce NestJS, puede acoplarse rápidamente al código fuente que antes era mi responsabilidad.
  • Compatible con Docker. Al poder empaquetarse la aplicación NestJS con docker, lo hace compatible con los entornos de Kubernetes para orquestación de contenedores, es casi un estándar de infraestructura es las empresas tecnológicas hoy en día. Hablaremos en otro artículo sobre Docker y Kubernetes, promesa 🙌.

Reducción de costos de Infraestructura.

Las áreas administrativas y contables de las empresas siempre ponen un ojo en todo lo relacionado a costos, si es mas barato y aun así cumple nuestros requerimientos técnicos y de negocio, usemoslo 😅. Nosotros desde el punto de vista técnico no deberíamos estar pensando si el uso de una tecnología u otra es mas económico, nuestro enfoque esta en la solución que se le entrega a la empresa, pero a decir verdad, tener en cuenta los costos es un plus mucho mas valorado en estos tiempos.

Porque reducción de costos de infraestructura? Te explico, en Docker, así como en Kubernetes, tenemos la posibilidad de asignar que tantos recursos de CPU y memoria RAM puede tener nuestra imagen docker para su ejecución, y por la experiencia que he tenido y he podido comprobar para la mayoría de aplicaciones de propósito general, los siguientes son los requerimientos mínimos para que una imagen de NestJS y una imagen Spring Boot en docker puedan iniciar:

Framework NestJS Spring Boot
de un (1) CPU usa 0.05 CPU usa 0.1 CPU
de un (1) GB de RAM usa 0.3 GB usa 0.5 GB

Si te das cuenta, Spring Boot necesita casi el doble de capacidad de hardware que NestJS, y desde el punto de vista de un microservicio, o dos, o tres, es prácticamente insignificante, pero una gran empresa que tiene cientos e incluso miles de microservicios, entonces los recursos de hardware ya son considerables, especialmente si la infraestructura esta basada en Kubernetes y arquitecturas cloud en AWS, Azure o Google donde se cobra por CPU y RAM. Podemos destinar un artículo posterior a realizar estimaciones mas precisas en cuanto a estos costos.

Con esto no quiero decir que Spring Boot sea una mala decisión, para nada, Spring Boot tiene características muy propias que supera a NestJS, a lo que si me refiero, es que gracias a su reducción de capacidad de hardware y el cumplimiento de requisitos técnicos y de negocio que NestJS puede cubrir, ha podido entrar a competir de manera seria en el mundo empresarial.


Requisitos Previos

Para poder instalar y empezar a realizar proyectos con NestJS, necesitas muy poco software y muy pocos conocimientos básicos, realmente es sencillo empezar.

NodeJS Instalado

Ya que NestJS es un framework para NodeJS, entonces es lógico que tengas instalado node.js, aquí hay una guía de instalación muy completa para Windows 10 y Windows 11 o en Internet puedes encontrar bastante información al respecto.

Editor de Texto o IDE

Necesitas un editor de texto, yo utilizo Visual Studio Code (vscode), pero como siempre, el de tu preferencia esta bien, hoy en día todos los editores de texto o IDE ofrecen características profesionales y gratuitas para proyectos de desarrollo de software.

Nociones de TypeScript

El framework tiene soporte nativo para TypeScript, podrías usar solo JavaScript pero estarías perdiendo todas las ventajas de NestJS, si vienes de otros frameworks como Spring Boot la adaptación sera casi instantánea, si vienes de JavaScript de igual manera TypeScript es muy sencillo, y aquí trataremos de hacerlo aun mas 😎.


Cómo Instalar NestJS paso a paso

Una vez confirmes que node.js y npm ya están instalados, entonces esta todo listo para que empecemos con este tutorial NestJS para principiantes.

Instalación CLI

Es necesario instalar las herramientas CLI de NestJS, en el símbolo del sistema o terminal de Linux escribir el siguiente comando que las instalará globalmente, es decir, estarán disponibles en todo tu computador para todos los proyectos que gestiones con NestJS. Esto instala NestJS y las herramientas CLI.

> npm i -g @nestjs/cli
Símbolo del sistema de Windows para instalar NestJS paso a paso.
Instalar NestJS paso a paso.

Crear Primer Proyecto

Una vez instalado NestJS, nos ubicamos en algún directorio (yo elegí el escritorio) y escribimos el siguiente comando para crear un proyecto NestJS desde cero. Cuando se te pregunte que manejador de paquetes, puedes elegir el de tu preferencia, si no sabes cual, la mayoría de usuarios por defecto (me incluyo) seleccionamos npm.

> nest new primer-proyecto
Símbolo del sistema de Windows para crear proyecto NestJS desde cero.
Cómo crear proyecto NestJS desde cero.

Después de unos pocos minutos donde NestJS crea la configuración del proyecto, nos avisa que todo fue exitoso y podemos abrir nuestro proyecto con algún editor de texto.

💡
Si miras la imagen, en la creación de un proyecto NestJS se intenta inicializarlo como un repositorio git, como yo no lo tengo instalado al momento de este ejercicio la consola me muestra la advertencia que no existe el comando git init, esto no afecta en nada la creación del proyecto NestJS.

Entramos a la carpeta del proyecto desde el símbolo del sistema y ejecutamos el siguiente comando para abrirlo en VS Code (yo uso este editor de texto).

> code .
Desde el símbolo del sistema de Windows abrimos el nuevo proyecto NestJS.
Abrir proyecto NestJS en VS Code.

Y desde esta misma ubicación podemos ejecutar de una vez el proyecto, magnifico cierto? NestJS nos entrega un proyecto funcional y pre-configurado para poder ejecutarlo de una vez.

> npm run start:dev
En el símbolo del sistema de Windows se ve el proyecto NestJS en ejecución.
Ejecución de un proyecto NestJS.

Y finalmente para poder probar nuestro primer proyecto, puedes abrir un cliente para testear APIs, puedes instalar la extensión Thunder Client de VS Code, pero lo que siempre dejo en claro, estas en la libertad de usar el que mas te guste si ya conoces otros clientes para testear APIs, otro de los mas importantes en Postman.

Creas un nuevo Request y escribes la URL apuntando a localhost, por el puerto 3000 y el protocolo http, todas estas configuraciones son por defecto del framework, así que por ahora no importa de donde vienen.

http://localhost:3000
Probando API get del proyecto NestJS con Thunderclient.
Probar API get con Thunderclient desde VS Code.

Si no tienes instalado ningún cliente para testear APIs, puedes probarlo en el navegador directamente, te recomiendo cuanto antes instalar una herramienta para testear, es fundamental para un desarrollador backend.

Se testea la API get del proyecto NestJS desde el navegador.
Testear API get de NestJS desde el navegador.

Y así de fácil es crear un proyecto NestJS desde cero después de cómo instalar NestJS paso a paso, fabuloso cierto?

Estructura de Carpetas

Vamos a echarle un vistazo a la estructura de carpetas que NestJS nos entrega por defecto en la creación de un proyecto.

Visual Studio Code que muestra la estructura de carpetas de un proyecto NestJS.
Estructura de Carpetas, Proyecto NestJS.
La carpeta src contiene el código fuente de la aplicación, significa que acá es donde nosotros programamos y crearemos todas nuestras funcionalidades.
La carpeta node modules contiene todos las librerías y dependencias necesarias para el proyecto, recordemos que NestJS es un framework para node.js.
La carpeta test contiene los archivos destinados a pruebas unitarias, pruebas e2e pre-configuradas para un proyecto nuevo.
La carpeta raíz del proyecto contiene archivos de configuración generales para un proyecto node.js, para el framework NestJS y TypeScript.

Arquitectura Básica de NestJS