Me parece genial esta plantilla que has hecho, es un ahorro increible de tiempo. Estaria genial una orientada a los microservicios con Nest, usando monorepo
@@AlbertHernandez deberías subir un vídeo haciendo una backend multi-tenancy con NestJS. Es un tema que muy pocos comparten y es muy importante a mi parecer. Exitos 👍🏻
Apuntadísimo! Encima en la empresa donde trabajo usamos mucho el munti-tenancy por lo que espero traeros algo bueno que de verdad se use en entornos de producción :D
Me alegro que te haya gustado, a mi estos templates también me ahorran muchas horas de trabajo al empezar nuevos proyectos, por eso los cree, me alegra ver que vosotros también los veis útiles :)
Enorme tío, tras dos años trabajando con Angular comienzo en dos semanas un nuevo proyecto con Nestjs y el overview que has hecho me parece muy bueno. Nuevo suscriptor
Excelentemente explicado el tema del rendimiento de nest. Yo la verdad hasta ahora estoy aprendiendo a usarlo de manera profesional y me parece genial como explicas los punto muy fácil de entender y con estadísticas y todos 10/10
Muchas gracias! Espero ir trayendo mas contenido de calidad al canal de NestJS, Node, CI/CD... y más cosillas que puedan ser interesantes, así que no olvides subscribirte para no perderte nada hehe, un saludo 😁
Excelente Albert Muchisimas Gracias, justo hoy voy a iniciar un mvp donde necesito desplegar a un servidor de contenedores de digital ocean y no sabes cuando me ayuda tu template, ya solo me faltaría crear el pipe para integración continua
Laborando pero me llegó la notificación, siempre apoyando tu contenido Albert, gracias por compartir tu gran conocimiento, aportas mucho a la comunidad, sobre todo a los que pertenecemos a la comunidad de Node y NestJS, tremendo como siempre. Un abrazo!
Espero no sea mucho pedir, sé que ya hiciste una práctica puramente con Typescript, pero si un día puedes traernos algo de Arquitectura Hexagonal con NestJS sería genial, gracias Albert!
Gracias por siempre estar apoyando y comentando :D Hehe lo sé, ese es un video que tengo pendiente desde hace mucho, aun estoy viendo bien como montar una aplicación de NestJS con Arquitectura hexagonal que de verdad no este acoplada al framework... no me termina que en la capa de dominio tengamos las clases de nestjs o el tema de los @Injectable() o @Inject() y tengo que ver bien como montarlo para que esos detalles del framework no entren en el dominio, por ello me esta llevando mas tiempo, pero si, hablaremos de todo ello en un futuro video Un saludo!
@@AlbertHernandez Fuaff, hace poco estaba intentando implementar la Arquitectura Hexagonal + Vertical Slicing en NestJs. Sinceramente en algunos casos, he sentido que me he perdido, dado que en mi sentido personal queria separar ciertos aspectos como HTTP Protocol y Websockets por separado⚔. Espero muchisimo tu video crack
Albert, se que mencionas en el video que el template no viene con ningun tipo de arquitectura predefinida, sin embargo puedo notar que dentro del src por defecto tienes context, core y shared. Que tipo de archivos se podrian agregar a cada una de estas carpetas?
Buenas! Si, dentro de src tengo 3 carpetas para que luego me ayuden a organizar mejor donde poner ciertos modulos: - contexts: aqui pondria los modulos de las entidades por asi decirse que fuera creando, como PaymentsModule, SchoolsModule, UsersModule - shared: modulos que quiero que sean compartidos entre distintos modulos que tengo en contexts, por ejemplo, si payments y users necesitan un cliente de email para enviar correos electronicos, aqui me crearia un EmailModule, de manera que luego los otros lo puedan usar. - core: aqui pondria lo que es imprescindible para que mi app funcione. Esto va a depender mucho ya del contexto, por ejemplo, si estamo en un k8s, podriamos poner aqui el HealthModule. Tambien, si tenemos como standard como tiene que ser las respuestas HTTP, parseadores y demas, tambien podriamos ponerlo aqui. Al final la idea de esta estructura es que nos permita poder copiar-pegar la estructura, llevarnosla a otro repositorio y solamente cambiar y centrarnos en lo que son los contexts, porque idealmente core deberia ser en todos los proyectos iguales (todos los proyectos de la misma compañia por supuesto) o casi iguales y luego ya ir creando nuevos modulos en contexts pudiendo sacar partes comunes y reusables en shared. Todas las apps no tienen porque seguir este modelo de organización ni mucho menos, pero es una cosa que me ha ayudado en los inicios de un proyecto y que luego ya en base a eso podemos ir cambiando piezas y aplicando arquitecturas sobre ella
Esta plantilla es una maravilla Alberto, muchas gracias. No sé si llegarás a leer esta pregunta, pero quería consultarte: Actualmente usas de algun modo custom schematics en Nestjs? Ya sea para modificar los schemas convencionales de nestjs a partir de una template personalizada (estructura interna al crear un service por ejemplo), o crear nuevos tipos de fichero con el cli (por ejemplo, un archivo processor.ts para colas). ¡Muchas gracias por tu vídeo!
Gracias! Me alegra que os esté gustando tanto la plantilla 😁 No, no he tenido la necesidad de usar custom schematics, cuanto necesitaba crear algun template o algo solia usar yeoman
El template está muy bueno la verdad, sinceramente está muy bien, pero deberías especificar un poco que es para gente con un poco más de experiencia en el framework, pues para los que no llevamos tanto tiempo nos es algo complicado saber realmente para que sirve cada cosa que quitas o pones. Pero la verdad se ve que hiciste un muy buen trabajo
Gracias! Si, como comentas este template no está pensado para principiantes ya que incluye cosas como Docker, Tests de performance, pipelines... en la motivación del proyecto pone todo lo que incluye y su objetivo principal
Excelente trabajo, nos gustaria ver un video de como elaboraste esa plantilla para tener una idea de como se hizo y quiza a futuro mejorarla NOS AYUDARIA MUCHO VER UN VIDEO DONDE EXPLIQUES COMO ELABORASTE ESA PLANTILLA, PASO A PASO
Muchas gracias! Pues esta plantilla no es algo que haya hecho de un dia para otro sino que es algo que he ido mejorando a lo largo del tiempo, por ejemplo al inicio no tenia docker, no tenia performance testing... y luego poco a poco fui aprendiendo e introduciendolo, por lo que es complicado un video entero donde explique como he elaborado toda la plantilla... Lo que si que vas a encontrar en el canal son pequeños videos donde explico como dockerizar una app, como añadir path alias con typescript, como montar el CI/CD con github actions y luego ya esta plantilla recoge todo eso
Excelente video, ami me gustaria ver mas de graphql de temas mas avanzados como subscriptions o cosas avanzadas, tambien mas sobre temas mas avanzados de nestjs, porque hay tantas cosas que uno puede usar y que en realidad no hay mucho tutoriales sobre eso. Por ejemplo estoy utilizando los globalFilters para cachar la excepciones de graphql, pero no se si los uso de manera correcta, en si algo mas avanzado
Hola Albert, quiero preguntarte si tienes o conoces de algún curso sobre testing y pruebas unitaria, para mi es un tema que no logro entender, en youtube muy poco información encuentro sobre ello
Hola! Pues cursos de testing puros por asi decirse no tengo, pero si que tengo algunos en el radar que al igual te sirven, te los dejo a continuación: - www.testingjavascript.com/ (este no lo he hecho, pero tengo conocidos que si y me lo han recomendado mucho, mirandolo por encima tiene muy muy buena pinta) - pro.codely.com/library/testing-introduccion-y-buenas-practicas-44653/90916/about/ (este si me lo hice y me gusto mucho, ademas es bastante barato si te coges una subscripcion de 1 mes, muy recomendado los cursos de codely)
Muy buen aporte, lamentablemente en mi trabajo no vemos nest pero esto está muy cool siempre empezar un proyecto de 0 es un poco molesto. Y los que estamos aprendiendo siempre preguntamos que usaría alguien que se maneja constantemente en ello. Muy buen aporte.
Muchas gracias! Pues si no usáis NestJS también tengo estos templates para nuevos servicios puros de express y para librerías con Typescript, dales un vistazo por si os sirviera :) Te los dejo aquí también: - Librerias: github.com/AlbertHernandez/typescript-library-template - Express: github.com/AlbertHernandez/express-typescript-service-template
Saludos @AlbertHernandez . Interesante template para nestjs. Solo un detalle, al hacer la actualizacion de las dependencias Vites deja de funcion al hacer los test. del resto todo funciona muy bien.
Hola! Si, parece que Vitest tiene algun problema de compatibilidad creo que con swc, creo que lo mejor en este caso es que fijes la version y solo subas la version si pasa toda la CI. Si usas el template ya tiene que venir preparado para tener todo esto de manera que sepas si funciona por ejemplo al crear una PR
El hot-reload me parece super importante si, el template que os comento que uso ya viene con esto, resulta muy cómodo para desarrollar :) Respecto a Pino... si igual también lo metería, para mi es de los mejores loggers que hay para Node, pero como también depende mucho del equipo y las preferencias, decidí dejar el de por defecto de NestJS y así luego cada uno se lo puede personalizar a su gusto
Buenas Albert! No suelo comentar en vídeos pero es que me ha encantado tu contenido, me salió los otros días y me he visto gran parte, creo que se nota muchísimo la ilusión y la calidad que pones en estos vídeos y en tu trabajo. Me pareces un gran profesional, espero más vídeos así y que sigas ayudando a la comunidad. En mi caso llevo 3 años desarrollando en Angular y NodeJS para otros pero desde que descubrí NestJS me fascinó, y no había visto casi contenido, yo lo uso sobretodo en pequeños proyectos personales y todo tu canal me encanta porque me ayuda a saber un poco más sobre ello. Sigue así!
Hola Adri! Muchas gracias por esas palabras, me alegra mucho saber que todo el contenido que estoy haciendo os está gustando y lo veis útil, la verdad que cuando comencé a compartir no sabía si tendría algún resultado o no pero viendo todos estos mensajes de apoyo creo que si Ire creando mas contenido de NestJS, espero que te guste también :) Ah y no olvides subscribirte 😜 Un saludo!
Las bases de datos siempre suelen dar problemas sobretodo al comenzar a gestionarlas, pero una vez ya lo tienes todo bien montado lo siguiente ya va solo. Si me comentas que dificultades te salen puedo intentar reproducirlas y traerlas en un futuro video, quizá sea de utilidad para otros compañeros también
@@AlbertHernandez por ejemplo, migraciones, poblar la db de manera automática desde seeds, con typeorm por ejemplo. Creo que es un tema que no termina de cubrirse de manera visual en tutoriales etc en el mundo real
Muchas gracias! Estos días la he estado mejorando más todo lo que es el CI/CD con Github Actions, os traeré dentro de poco un video donde hablaremos de como podemos crear pipelines con todo esto 😁
Gracias!! Pues hacer un template de tests unitarios y e2e no sé cuanto de beneficioso sería, depende ya mucho del proyecto y de los caso de uso que tengamos... por lo que no se si podríamos reutilizar muchas cosas. Lo que si he hecho en estos templates es que traigan por defecto ambos tipos de tests con ejemplos básicos y así luego ya es implementar los tests oportunos para nuestros casos de uso sin tener que preocuparnos de configuración de jest ni nada
@@AlbertHernandez entiendo... yo estoy empezando con vitest, y me gustaria por ejemplo... cuando le hago click a un modal, que tiene un select con options, que usa un context... y ese context abastece a otro componente... que renderiza por ejemplo iva, total, subtotal... poder ver como cambia o se integran... pero nunca lo vi realmente en algun video... todo siempre lo muestran muy basico en youtube... gracias desde ya. muy interesantes tus videos y utiles!
Si, ya me imagino... hay pocos sitios donde se hable de testing y en profundidad como comentas. En este caso de frontend no controlo mucho pero si que conozco este curso que está centrado 100% en testing y puede ser lo que necesites, si quizás tengas algún budget de formación te lo recomiendo: www.testingjavascript.com/
Excelente video, como siempre. Interesante la parte de los test como lo desarrollas. Puede ser un un buen tema ampliar esa parte ya que la gran mayoría hacemos mal los test o los dejamos de hacer de plano.
Eso siempre cuesta, sobretodo al principio, hay algunas librerías que puedes usar y te facilitan el mockeado de las dependencias, te la dejo aquí por si quieres darle un vistazo: www.npmjs.com/package/@automock/jest (la propia nestjs también habla de esta técnica en su documentación: docs.nestjs.com/recipes/automock#introduction) Respecto a CI/CD espero traeros muy pronto un video sobre todo esto, creo que hay poco contenido sobre todo esto y puede ser bastante útil :)
Gracias! Si… suele pasar y no solo con NestJS sino con casi todo, incluso si querias empezar un nuevo proyecto con express o una libreria, hay mucho que configurar si quieres algo bueno
Hola Albert! Como estas? Estoy por desarrollar una app como la de Airbnb y quiero armar la arquitectura lo mejor posible para poder escalar facilmente. Tenia pensado usar nestjs, typeorm, postgresql.... que opinas? en un caso asi que me conviene mas?
Hola! Pues para comenzar una aplicación de NestJS con la base de datos de PostgreSQL puede ser muy buena opción, puedes empezar con eso y luego si ya vas necesitando mas piezas las vas añadiendo, como puede ser una cache con redis u otras cosas. Tienes que tener también el cuenta cual va a ser el volumen de usuarios, no es lo mismo desarrollar una aplicación que vayan a usar unos cientos o miles de usuarios que una que la usen millones. Las soluciones y arquitecturas que usen van a ir muy influenciadas en eso, lo mejor siempre es intentar mantener las cosas simples y que funcionen, por lo que si ves que airbnb u otras compañías utilizan ciertas arquitecturas o infraestructura eso no tiene porque ser lo ideal para tu caso, por lo que ten esto en cuenta
@@AlbertHernandez al principio van a ser pocos usuarios, pero se esperan al menos 100.000 usuarios mensuales por la magnitud del proyecto. que es lo mejor que recomendas para hacer la arquitectura? ya que la estoy por empezar, la quiero hacer lo mas limpio posible
Ves por la solución que me comentas y ves haciendo pruebas de carga con multiples usuarios para ver hasta donde vas a aguantar, añade herramentas de observabilidad como grafana o datadog para ver luego donde la aplicación es mas lenta y ataca a esas partes para optimizarlas. Uno de los puntos donde mas invertiría es justamente la observabilidad, eso te dará muchos datos de como va todo para saber si necesitas mas o no y donde
@@AlbertHernandez gracias!! entonces por el momento me conviene ir por nestjs y ir monitoreando como escalo…. en caso de que me quede corto que tecnologias usarías ?
Todo va a depender donde te quedes corto, si es en la base de datos igual puedes implementar vistas y usar patrones como CQRS. Una buena cache con redis tambien puede irte bien en muchos casos. Si fuera mas por el nivel de peticiones que tienes porque son muchas al mismo tiempo, una opcion muy buena es que mires el framework http, por ejemplo NestJS viene por defecto con express pero si lo cambias a fastify veras una mejora notable y Nest es totalmente compatible. Tambien puedes meterte en temas de eventos con colas de mensajeria con un google pubsub por ejemplo que es muy facil de configurar o incluso en AWS. Si ves que es mas un problema de CPU (que node para operaciones de CPU no es lo suyo, puedes intentar incorporar algun servicio en python, java...). Como ves hay muchas cosas que vas a poder ir incorporando para solucionar los cuellos de botella que tengas, pero meter todo esto sin saber si de verdad te va a hacer falta es una sobre ingenieria, por eso, enfocate en tener la buena observabilidad que te comento y luego dependiendo de donde veas que falla mas atacas a eso
Hola, en el caso de windows, el hot reloading no funciona, intenté colocando las opciones "watchOptions": { "watchFile": "dynamicPriorityPolling", "watchDirectory": "dynamicPriorityPolling" } en el tsconfig, pero con el transpilador swc al parecer no funciona o no se que configuración debo realizar para que lo haga, cambie a tsc nuevamente y ahí funciona sin problemas con las 2 opciones agregadas en el tsconfig (tampoco hace hot reloading en caso no agregarlo)
Hola! Lamento que no funcione en Windows, no tengo ese sistema operativo por lo que no puedo reproducir para poder arreglar lo que comentas, veamos si alguien puede crear alguna issue o algo y darle un vistazo
@@AlbertHernandez Si estaba leyendo un poco más y las opciones al parecer solo las tiene tsc, para swc hacen otros artificios como el que sugiere la propia documentación de nest con webpack, o usar nodemon aunque solo probé con webpack y funcionó pero perdí la configuración del debugger 🥲
vaya y yo que me sentía bien por integrar Sonarqube a un proyecto😅. Una pregunta para que sirve NYC si la plantilla usa el coverage de jest? Buen vídeo👍
Sonarqube es una solución muy buena también, no es poca cosa así que siéntete bien orgulloso hehe En este caso estoy usando NYC para fusionar la cobertura de los tests que son unitarios junto con los que son e2e, de esa manera puedo separar los tests por tipo y me resulta mas sencillo saber como voy de testing en cada uno para saber si estoy cumpliendo por ejemplo la pirámide de testing y así incluso podría lanzar los tests dependiendo del entorno
Yo soy junior de Java con spring boot y la verdad estaba Buscando nuevos frameworks parecidos pq el deploy con Java consume mucha ram y se excede mayormente de los free tier que ofrecen varios hosts, y justo me encontré con nest js que es muy parecido
No me esta funcionando el hot reload en windows, incluso teniendo habilitado el docker desktop a la ultima version y habiendo instalado el wsl2 y colocando la flag --watch-poll en el comando dev en package.json
Pues junto tengo pendiente alguno de NestJS con distintos ORMs como con el de TypeORM, pero me apunto hacer uno también con Prisma, gracias por la sugerencia!
Buenas! Lo de los contextos es algo nuevo que meti hace poco si, esta relacionado a los distintos dominios que podamos tener en nuestra aplicación, podriamos pensar en ellos como los bounded contexts que tengamos en nuestro servicio, te dejo un enlace a la docu de esto: martinfowler.com/bliki/BoundedContext.html
Gracias Albert! Excelente Video! Justamente siento que la estructura de Nest no me encaja del todo.... No se si es que no se como estructurar mi logica de negocio o demas... He usado un tiempo spring boot y el tener los servicios, controladores y testing en una misma carpeta. Normalmente tengo todo separado. Me gustaria ojala, que hicieras un video sobre esto y como se podria mejorar la estructura de carpetas de Nest! Gracias por tu video!
Un placer! Si, hay muchas maneras en la que podemos estructurar nuestras carpetas, NestJS se basa sobretodo en una arquitectura modular donde vas a tener distintos módulos que luego vas a ir juntando. Por ejemplo tendrías un modulo de logger, uno de errorTracker, luego puedes ya tener un modulo de usuarios, uno de invoices... la idea sobretodo es que cada módulo sea independiente (o todo lo que podamos) y tenga todo lo necesario en su interior para poder trabajar de manera aislada. Ahora, hay muchas maneras en las que luego podemos diseñar esos módulos, como bien comentas podemos tener dentro del modulo una carpeta por cada tipo al estilo una de servicios, una de controladores, otra de acceso a dato... o incluso podríamos montar una division con la arquitectura hexagonal. Y si claro, me apunto lo de hablar de las distintas maneras en las que podemos estructurar estas carpetas, quiero ver si dentro de poco traigo una con la hexagonal, pero iremos viendo mas :) Un saludo!
Genial el video saludos desde Venezuela, queria hacerte varias preguntas, quiezas algun parezcan tontas pero prefiero hacerla y no quedarme con la duda, tengo un proyecto que ya inicie, y quiero cambiar el compilador y express, pero tengo implementado Grahpql, esto afectaria el proyecto? por otro lado a parte de hacer la instalacion de los paquetes nuevos que mas deberia hacer? y por ultimo en terminos generales estos cambios son transparentes para el proyecto?
Hola! Pues NestJS suele hacer un trabajo bastante bueno es sus módulos internos y prácticamente no hay que cambiar nada, igual el adaptador en los tests e2e, algún middleware que si tengas mas acoplado a express pero creo que no es mucho, yo hice esta migración y me llevó menos de 2 días
@@AlbertHernandez muchas gracias por tu respuesta, estare pasando por aca a dejar alguna noveda, quiero probar con tu template y graphql, con microservicios
Cómo podemos mejorar el cold start de una app de Nest? Por lo robusto que es este framework, cuando tienes un servicio de nest en la nube con cold start, este tarda considerablemente en levantar y estar disponible
Le dare un vistazo a ver que encuentro, por ahora lo que he encontrado para mejorar los tiempos ha sido primero tener un dockerfile bien optimizado y luego usar compiladores como swc, si encuentro nuevas cosas hago video y os lo traigo :)
Pues justo en este otro video muestro como hacerlo th-cam.com/video/XQWSyM9d7M4/w-d-xo.htmlsi=y1GzGyEnvpEhTiM4 pero si crees que es mejor un video dedicado a eso también lo podemos hacer :)
Amigo Albert en los tests con la configuración por default no deja de lanzarme este error: app.module.ts: Support for the experimental syntax 'decorators' isn't currently enabled He probado 100 cosas, pero no logro hacer que deje de saltarme, si tienes alguna idea de como solventar o alguien mas bienvenido sea.
Buenas! Lo mas probable que te esté faltando activar los decoradores para poder hacer uso de ellos, esto lo puedes hacer en el fichero de tsconfig.json con lo siguiente: { "emitDecoratorMetadata": true, "experimentalDecorators": true } Te recomiendo que le des un vistazo a mi template que ahí lo tengo todo funcionando, por si te sirve como refencia: github.com/AlbertHernandez/nestjs-service-template/blob/3e42739487aa3729c2c5dc233fcabc8d7c68d8c9/tsconfig.json#L11-L12
En ese caso al igual lo que puedes hacer es ir viendo los commits que introdujiste después de clonar el repo e identificar en que punto dejo de funcionar
@@AlbertHernandez Lo curioso es que no he hecho ningún cambio en esa sección del código, no hice ningún ajuste distinto al que trae el template, revise y es exactamente igual al que está en el repo original que compartiste. Aprovecharé que no tengo lógica alguna aún y reclonaré desde 0.
Que extraño, si encuentras lo que pasa me dices, sino, sube el codigo a algun repo y si puedes dame acceso para darle un vistazo, por si puedo encontrar el problema
siento decir que si lo probais ahora, no funcioan, hay dependencias de vitest que fallan unas con otras, y si instalo por ejemplo joi dice que no lo encuentra
Le acabo de dar un vistazo y me ha ido bien, tambien toda la pipeline funciona correctamente con github actions. Si puedes, crea una issue en el repositorio de github y añade todos los detalles que puedas para que pueda reproducir lo que te pasa
@@AlbertHernandez Buenas albert, ayer lo volvi a probar, y parece que ya funciona, sería algo del dependabot que fallarian las dependencias, muchas gracias!
@@AlbertHernandez Buenas Albert, lo de las dependencias parece que fue un error de dependabot, ahora ya va bien , lo que tambien me ocurre que al instalar por ejemplo typeorm, no encuentra el modulo, o cualquier otro modulo , typescript en el edito lo detecta bien import { DataSource } from "typeorm"; pero al complilar no lo encuentra. he ledido que una solucion es bajar de version swc, peude ser que haya habido algun breaking change ? muchas gracias Albert, y decirte que el trabajo que haces me parece espectacular.
Haha venga, dale un vistazo a la documentación oficial que es bastante buena, tambien tienen cursos oficiales que estan bien, y en este mismo canal vas a encontrar un poco de materal de NestJS, un saludo!
หลายเดือนก่อน
Hola @Albert, Qué secretos y secretos de entorno necesitas en el repo? Porque estoy usando la template y enseguida tengo fallas de 5 pruebas y creo que es porque no se logran generar las labels: chore(deps): bump alstr/todo-to-issue-action from 4 to 5 #325 Run bcoe/conventional-release-labels@v1 with: type_labels: {"feat": "🚀 Feature", "fix": "🕵🏻 Fix", "breaking": "⚠ Breaking Change"} token: *** ignored_types: ["chore"] ignore_label: ignore-for-release Muchas gracias!
หลายเดือนก่อน
Ya pude, para los nuevos repos no se puede agregar el secret GITHUB_TOKEN con el prefijo "GITHUB_". Modificando eso en los respectivos workflows funciona!
Buenas! Pues esos 2 en concreto no necesitan secrets, si alguno lo necesitara, por ejemplo, el de dependabot, puedes ver aqui como le indicamos el secret -> github.com/AlbertHernandez/nestjs-service-template/blob/86698a63020e8accf632e19dfad336c98904417c/.github/workflows/dependabot-auto-merge.yml#L14
Si, coincido que NestJS agrega mucho decorado pero también ofrece muchas cosas por defecto desde contenedor de dependencias, logger, modularización de componentes, colas de mensajería... al final es una decisión que hay que tomar y evaluar muy bien, ya que todo tiene pros y contras. Por cierto, he visto que ha sido añadido incluso en las nodebestpractices de 2023 (github.com/goldbergyoni/nodebestpractices/blob/master/sections/projectstructre/choose-framework.md), por lo que parece que cada vez mas desarrolladores lo están utilizando y dandole mas cariño (también esta fastify puro que por supuesto es otra opción muy buena 😁)
@@AlbertHernandez yo creo que es más por un tema de popularidad y que atrae gente a la tecnología. Yo para proyectos que se muy que voy a necesitar prefiero evitarlo
Creo que depende mucho de la situación, por ejemplo, en una empresa pequeña quizá se quiere apostar por un framework completo que ya te lo dé todo y así poder ir lo más rápido posible. También puede darse el caso de que quieras tener fullstacks en la empresa donde todo el frontend sea con angular, ya que NestJS esta muy basado en angular quizá tenga sentido ya que la curva de aprendizaje y los conceptos son muy parecidos. También al ser un framework que tiene mucha mas popularidad como comentas puede hacer que sea mas fácil hacer hiring de personas y sabiendo que estan usando lo mismo (o casi lo mismo que tu)... Muchas veces aunque una tecnología es mas lenta que otra, se prioriza esta por un tema mas estratégico, por esto te comento que va a depender mucho del caso, de la empresa y del momento donde estemos
Cuando realizamos testing en nuestros servicios de los mas habituales es tener tests unitarios, tests de integración y tests e2e. Lo de la cobertura unificada lo que hace es lanzar los distintos tipos de tests, en este caso los e2e y los unitarios y luego suma la cobertura de cada uno por separado para ofrecer la cobertura final del proyecto
un curso completo de cero, no ta profundo si quieres, para que pueda ser gratis, o como quieras bro, pero uno completo desde cero hasta una app, gracias de antemano
Os dejo aquí el link al template en GitHub, espero que os guste:
github.com/AlbertHernandez/nestjs-service-template
Menudo catarro llevaba cuando grabé el video, espero que no se note mucho y lo podáis ver bien :)
espero que estes mejor jajaja
Me parece genial esta plantilla que has hecho, es un ahorro increible de tiempo. Estaria genial una orientada a los microservicios con Nest, usando monorepo
Gracias ^^ Pues tengo que ver si preparo uno para microservicios y monorepo como comentas, creo que vendría super bien para mostrar como se haría
Llevaba tiempo preguntandome como luce un boilerplate de nest que esté bien estructurado y con coherencia. Agradecido por compartir esta info
Es un placer 😁😁
@@AlbertHernandez deberías subir un vídeo haciendo una backend multi-tenancy con NestJS. Es un tema que muy pocos comparten y es muy importante a mi parecer. Exitos 👍🏻
Apuntadísimo! Encima en la empresa donde trabajo usamos mucho el munti-tenancy por lo que espero traeros algo bueno que de verdad se use en entornos de producción :D
De los mejores videos que haz realizado...excelente, me ahorrrastes horas de trabajo...Gracias
Me alegro que te haya gustado, a mi estos templates también me ahorran muchas horas de trabajo al empezar nuevos proyectos, por eso los cree, me alegra ver que vosotros también los veis útiles :)
Enorme tío, tras dos años trabajando con Angular comienzo en dos semanas un nuevo proyecto con Nestjs y el overview que has hecho me parece muy bueno. Nuevo suscriptor
Me alegro mucho, mucha suerte con ese proyecto nuevo
Que calidad más rica Albert, gracias por tu contenido
Hehe es un placer 💪
Capo excelente!! Estoy empezando un project en NestJs y es lo que estaba buscando
Excelentemente explicado el tema del rendimiento de nest. Yo la verdad hasta ahora estoy aprendiendo a usarlo de manera profesional y me parece genial como explicas los punto muy fácil de entender y con estadísticas y todos 10/10
Muchas gracias! Espero ir trayendo mas contenido de calidad al canal de NestJS, Node, CI/CD... y más cosillas que puedan ser interesantes, así que no olvides subscribirte para no perderte nada hehe, un saludo 😁
Ando empezando en Nest pero manejo muchas cosas como docker bases de datos etc.. me animare a probar los templates.
se agradece el trabajo :D
Pues ya me dirás que tal te parecen, y si hay algo que ves que se pueda mejorar el feedback es mas que bienvenido :D Un saludo!
Excelente Albert Muchisimas Gracias, justo hoy voy a iniciar un mvp donde necesito desplegar a un servidor de contenedores de digital ocean y no sabes cuando me ayuda tu template, ya solo me faltaría crear el pipe para integración continua
Gran video, estoy apunto de empezar un proyecto por primera vez en nestjs y ya se como empezar gracias a tí
Me alegro! Ya me dirás si al final usas el template que te parece, un saludo!
Mola muchísimo el vídeo. Sigue así, generando contenido de calidad!!!
Muchísimas gracias!!
Laborando pero me llegó la notificación, siempre apoyando tu contenido Albert, gracias por compartir tu gran conocimiento, aportas mucho a la comunidad, sobre todo a los que pertenecemos a la comunidad de Node y NestJS, tremendo como siempre. Un abrazo!
Espero no sea mucho pedir, sé que ya hiciste una práctica puramente con Typescript, pero si un día puedes traernos algo de Arquitectura Hexagonal con NestJS sería genial, gracias Albert!
Gracias por siempre estar apoyando y comentando :D
Hehe lo sé, ese es un video que tengo pendiente desde hace mucho, aun estoy viendo bien como montar una aplicación de NestJS con Arquitectura hexagonal que de verdad no este acoplada al framework... no me termina que en la capa de dominio tengamos las clases de nestjs o el tema de los @Injectable() o @Inject() y tengo que ver bien como montarlo para que esos detalles del framework no entren en el dominio, por ello me esta llevando mas tiempo, pero si, hablaremos de todo ello en un futuro video
Un saludo!
@@AlbertHernandez Fuaff, hace poco estaba intentando implementar la Arquitectura Hexagonal + Vertical Slicing en NestJs. Sinceramente en algunos casos, he sentido que me he perdido, dado que en mi sentido personal queria separar ciertos aspectos como HTTP Protocol y Websockets por separado⚔. Espero muchisimo tu video crack
Albert, se que mencionas en el video que el template no viene con ningun tipo de arquitectura predefinida, sin embargo puedo notar que dentro del src por defecto tienes context, core y shared. Que tipo de archivos se podrian agregar a cada una de estas carpetas?
Buenas! Si, dentro de src tengo 3 carpetas para que luego me ayuden a organizar mejor donde poner ciertos modulos:
- contexts: aqui pondria los modulos de las entidades por asi decirse que fuera creando, como PaymentsModule, SchoolsModule, UsersModule
- shared: modulos que quiero que sean compartidos entre distintos modulos que tengo en contexts, por ejemplo, si payments y users necesitan un cliente de email para enviar correos electronicos, aqui me crearia un EmailModule, de manera que luego los otros lo puedan usar.
- core: aqui pondria lo que es imprescindible para que mi app funcione. Esto va a depender mucho ya del contexto, por ejemplo, si estamo en un k8s, podriamos poner aqui el HealthModule. Tambien, si tenemos como standard como tiene que ser las respuestas HTTP, parseadores y demas, tambien podriamos ponerlo aqui.
Al final la idea de esta estructura es que nos permita poder copiar-pegar la estructura, llevarnosla a otro repositorio y solamente cambiar y centrarnos en lo que son los contexts, porque idealmente core deberia ser en todos los proyectos iguales (todos los proyectos de la misma compañia por supuesto) o casi iguales y luego ya ir creando nuevos modulos en contexts pudiendo sacar partes comunes y reusables en shared.
Todas las apps no tienen porque seguir este modelo de organización ni mucho menos, pero es una cosa que me ha ayudado en los inicios de un proyecto y que luego ya en base a eso podemos ir cambiando piezas y aplicando arquitecturas sobre ella
@@AlbertHernandez Recién veo tu mensaje, leeré con detenimiento tu explicación, gracias Albert
Esta plantilla es una maravilla Alberto, muchas gracias.
No sé si llegarás a leer esta pregunta, pero quería consultarte: Actualmente usas de algun modo custom schematics en Nestjs? Ya sea para modificar los schemas convencionales de nestjs a partir de una template personalizada (estructura interna al crear un service por ejemplo), o crear nuevos tipos de fichero con el cli (por ejemplo, un archivo processor.ts para colas).
¡Muchas gracias por tu vídeo!
Gracias! Me alegra que os esté gustando tanto la plantilla 😁
No, no he tenido la necesidad de usar custom schematics, cuanto necesitaba crear algun template o algo solia usar yeoman
@@AlbertHernandez Muchísimas gracias de nuevo, lo investigaré. Un saludo!!
El template está muy bueno la verdad, sinceramente está muy bien, pero deberías especificar un poco que es para gente con un poco más de experiencia en el framework, pues para los que no llevamos tanto tiempo nos es algo complicado saber realmente para que sirve cada cosa que quitas o pones. Pero la verdad se ve que hiciste un muy buen trabajo
Gracias! Si, como comentas este template no está pensado para principiantes ya que incluye cosas como Docker, Tests de performance, pipelines... en la motivación del proyecto pone todo lo que incluye y su objetivo principal
Mucha razon
Maquina, Fiera, Mastodonte, Titan !!! Encontre tu canal y es ORO PURO !!! ... Solo que no veo Graphql por ningún lado :/
Hahah muchas gracias sir! Pues tengo pendiente hacer alguno de GraphQL si, a ver si en poco vuelvo a la carga con nuevos videos y traigo ese también 😁
Excelente trabajo, nos gustaria ver un video de como elaboraste esa plantilla para tener una idea de como se hizo y quiza a futuro mejorarla NOS AYUDARIA MUCHO VER UN VIDEO DONDE EXPLIQUES COMO ELABORASTE ESA PLANTILLA, PASO A PASO
Muchas gracias!
Pues esta plantilla no es algo que haya hecho de un dia para otro sino que es algo que he ido mejorando a lo largo del tiempo, por ejemplo al inicio no tenia docker, no tenia performance testing... y luego poco a poco fui aprendiendo e introduciendolo, por lo que es complicado un video entero donde explique como he elaborado toda la plantilla...
Lo que si que vas a encontrar en el canal son pequeños videos donde explico como dockerizar una app, como añadir path alias con typescript, como montar el CI/CD con github actions y luego ya esta plantilla recoge todo eso
Excelente video, ami me gustaria ver mas de graphql de temas mas avanzados como subscriptions o cosas avanzadas, tambien mas sobre temas mas avanzados de nestjs, porque hay tantas cosas que uno puede usar y que en realidad no hay mucho tutoriales sobre eso. Por ejemplo estoy utilizando los globalFilters para cachar la excepciones de graphql, pero no se si los uso de manera correcta, en si algo mas avanzado
Apuntadísimo! 😁
Hola Albert, quiero preguntarte si tienes o conoces de algún curso sobre testing y pruebas unitaria, para mi es un tema que no logro entender, en youtube muy poco información encuentro sobre ello
Hola! Pues cursos de testing puros por asi decirse no tengo, pero si que tengo algunos en el radar que al igual te sirven, te los dejo a continuación:
- www.testingjavascript.com/ (este no lo he hecho, pero tengo conocidos que si y me lo han recomendado mucho, mirandolo por encima tiene muy muy buena pinta)
- pro.codely.com/library/testing-introduccion-y-buenas-practicas-44653/90916/about/ (este si me lo hice y me gusto mucho, ademas es bastante barato si te coges una subscripcion de 1 mes, muy recomendado los cursos de codely)
Muy buen aporte, lamentablemente en mi trabajo no vemos nest pero esto está muy cool siempre empezar un proyecto de 0 es un poco molesto. Y los que estamos aprendiendo siempre preguntamos que usaría alguien que se maneja constantemente en ello. Muy buen aporte.
Muchas gracias! Pues si no usáis NestJS también tengo estos templates para nuevos servicios puros de express y para librerías con Typescript, dales un vistazo por si os sirviera :)
Te los dejo aquí también:
- Librerias: github.com/AlbertHernandez/typescript-library-template
- Express: github.com/AlbertHernandez/express-typescript-service-template
Saludos @AlbertHernandez . Interesante template para nestjs. Solo un detalle, al hacer la actualizacion de las dependencias Vites deja de funcion al hacer los test. del resto todo funciona muy bien.
Hola! Si, parece que Vitest tiene algun problema de compatibilidad creo que con swc, creo que lo mejor en este caso es que fijes la version y solo subas la version si pasa toda la CI. Si usas el template ya tiene que venir preparado para tener todo esto de manera que sepas si funciona por ejemplo al crear una PR
Algo interesante que se puede agregar pero que lleva un poco mas de configuración es el tema de hot reload, y agregar otro sistema de logger como pino
El hot-reload me parece super importante si, el template que os comento que uso ya viene con esto, resulta muy cómodo para desarrollar :)
Respecto a Pino... si igual también lo metería, para mi es de los mejores loggers que hay para Node, pero como también depende mucho del equipo y las preferencias, decidí dejar el de por defecto de NestJS y así luego cada uno se lo puede personalizar a su gusto
Buenas Albert! No suelo comentar en vídeos pero es que me ha encantado tu contenido, me salió los otros días y me he visto gran parte, creo que se nota muchísimo la ilusión y la calidad que pones en estos vídeos y en tu trabajo. Me pareces un gran profesional, espero más vídeos así y que sigas ayudando a la comunidad.
En mi caso llevo 3 años desarrollando en Angular y NodeJS para otros pero desde que descubrí NestJS me fascinó, y no había visto casi contenido, yo lo uso sobretodo en pequeños proyectos personales y todo tu canal me encanta porque me ayuda a saber un poco más sobre ello. Sigue así!
Hola Adri!
Muchas gracias por esas palabras, me alegra mucho saber que todo el contenido que estoy haciendo os está gustando y lo veis útil, la verdad que cuando comencé a compartir no sabía si tendría algún resultado o no pero viendo todos estos mensajes de apoyo creo que si
Ire creando mas contenido de NestJS, espero que te guste también :)
Ah y no olvides subscribirte 😜
Un saludo!
Gran contenido. Un vídeo con seeds y migraciones sería esplendido para la gestión de datos de la db.
Gracias!! Apuntado lo de la gestión de base de datos, un punto super importante :D
@@AlbertHernandez me estoy encontrando con dificultades, concretamente con typeorm y PostgreSQL
Las bases de datos siempre suelen dar problemas sobretodo al comenzar a gestionarlas, pero una vez ya lo tienes todo bien montado lo siguiente ya va solo. Si me comentas que dificultades te salen puedo intentar reproducirlas y traerlas en un futuro video, quizá sea de utilidad para otros compañeros también
@@AlbertHernandez por ejemplo, migraciones, poblar la db de manera automática desde seeds, con typeorm por ejemplo. Creo que es un tema que no termina de cubrirse de manera visual en tutoriales etc en el mundo real
Excelente contribución amigo, muchas gracias.
Esta super genial la implementacion 🔥. +1 ⭐
Muchas gracias! Estos días la he estado mejorando más todo lo que es el CI/CD con Github Actions, os traeré dentro de poco un video donde hablaremos de como podemos crear pipelines con todo esto 😁
excelente!!! cuando puedas podrias hacer un template / skeleton de test unitarios y e2e con las consultas mas usadas...
Gracias!! Pues hacer un template de tests unitarios y e2e no sé cuanto de beneficioso sería, depende ya mucho del proyecto y de los caso de uso que tengamos... por lo que no se si podríamos reutilizar muchas cosas. Lo que si he hecho en estos templates es que traigan por defecto ambos tipos de tests con ejemplos básicos y así luego ya es implementar los tests oportunos para nuestros casos de uso sin tener que preocuparnos de configuración de jest ni nada
@@AlbertHernandez entiendo... yo estoy empezando con vitest, y me gustaria por ejemplo... cuando le hago click a un modal, que tiene un select con options, que usa un context... y ese context abastece a otro componente... que renderiza por ejemplo iva, total, subtotal... poder ver como cambia o se integran... pero nunca lo vi realmente en algun video... todo siempre lo muestran muy basico en youtube... gracias desde ya. muy interesantes tus videos y utiles!
Si, ya me imagino... hay pocos sitios donde se hable de testing y en profundidad como comentas. En este caso de frontend no controlo mucho pero si que conozco este curso que está centrado 100% en testing y puede ser lo que necesites, si quizás tengas algún budget de formación te lo recomiendo: www.testingjavascript.com/
Excelente video, como siempre. Interesante la parte de los test como lo desarrollas. Puede ser un un buen tema ampliar esa parte ya que la gran mayoría hacemos mal los test o los dejamos de hacer de plano.
Hehe venga pues hablaremos mas de testing :D
@@AlbertHernandez si sería bueno, a mi lo que mas me cuesta es la parte de mockear todo para hacerlo más rápido y la configuración para CI/CD
Eso siempre cuesta, sobretodo al principio, hay algunas librerías que puedes usar y te facilitan el mockeado de las dependencias, te la dejo aquí por si quieres darle un vistazo: www.npmjs.com/package/@automock/jest
(la propia nestjs también habla de esta técnica en su documentación: docs.nestjs.com/recipes/automock#introduction)
Respecto a CI/CD espero traeros muy pronto un video sobre todo esto, creo que hay poco contenido sobre todo esto y puede ser bastante útil :)
Excelente video amigo, te ganaste un sub 🙌🏼! Estoy buscando aprender Nest y me viene genial esta información, espero el curso de GraphQL!!
🙌🏼🙌🏼🙌🏼 Muchas gracias! Si, se vendrán mas videos de NestJS :D
Jjajaja no te preocupes lo que importa es tu conocimiento y tus ganas de compartir estos excelente contenidos de calidad 🎉🎉
Jaja muchas gracias 🤜🤛
Te felicito Albert muy buen trabajo yo vengo de c# por mi amor por javascript y me daba fastidio tanta configuración en nest js
Gracias! Si… suele pasar y no solo con NestJS sino con casi todo, incluso si querias empezar un nuevo proyecto con express o una libreria, hay mucho que configurar si quieres algo bueno
Hola Albert! Como estas? Estoy por desarrollar una app como la de Airbnb y quiero armar la arquitectura lo mejor posible para poder escalar facilmente. Tenia pensado usar nestjs, typeorm, postgresql.... que opinas? en un caso asi que me conviene mas?
Hola! Pues para comenzar una aplicación de NestJS con la base de datos de PostgreSQL puede ser muy buena opción, puedes empezar con eso y luego si ya vas necesitando mas piezas las vas añadiendo, como puede ser una cache con redis u otras cosas.
Tienes que tener también el cuenta cual va a ser el volumen de usuarios, no es lo mismo desarrollar una aplicación que vayan a usar unos cientos o miles de usuarios que una que la usen millones. Las soluciones y arquitecturas que usen van a ir muy influenciadas en eso, lo mejor siempre es intentar mantener las cosas simples y que funcionen, por lo que si ves que airbnb u otras compañías utilizan ciertas arquitecturas o infraestructura eso no tiene porque ser lo ideal para tu caso, por lo que ten esto en cuenta
@@AlbertHernandez al principio van a ser pocos usuarios, pero se esperan al menos 100.000 usuarios mensuales por la magnitud del proyecto. que es lo mejor que recomendas para hacer la arquitectura? ya que la estoy por empezar, la quiero hacer lo mas limpio posible
Ves por la solución que me comentas y ves haciendo pruebas de carga con multiples usuarios para ver hasta donde vas a aguantar, añade herramentas de observabilidad como grafana o datadog para ver luego donde la aplicación es mas lenta y ataca a esas partes para optimizarlas.
Uno de los puntos donde mas invertiría es justamente la observabilidad, eso te dará muchos datos de como va todo para saber si necesitas mas o no y donde
@@AlbertHernandez gracias!! entonces por el momento me conviene ir por nestjs y ir monitoreando como escalo…. en caso de que me quede corto que tecnologias usarías ?
Todo va a depender donde te quedes corto, si es en la base de datos igual puedes implementar vistas y usar patrones como CQRS. Una buena cache con redis tambien puede irte bien en muchos casos. Si fuera mas por el nivel de peticiones que tienes porque son muchas al mismo tiempo, una opcion muy buena es que mires el framework http, por ejemplo NestJS viene por defecto con express pero si lo cambias a fastify veras una mejora notable y Nest es totalmente compatible. Tambien puedes meterte en temas de eventos con colas de mensajeria con un google pubsub por ejemplo que es muy facil de configurar o incluso en AWS. Si ves que es mas un problema de CPU (que node para operaciones de CPU no es lo suyo, puedes intentar incorporar algun servicio en python, java...). Como ves hay muchas cosas que vas a poder ir incorporando para solucionar los cuellos de botella que tengas, pero meter todo esto sin saber si de verdad te va a hacer falta es una sobre ingenieria, por eso, enfocate en tener la buena observabilidad que te comento y luego dependiendo de donde veas que falla mas atacas a eso
. comentario para usarlo en un futuro proyecto cuando sepa mucho más:)
Genial ^^ Yo siempre recomiendo empezar por lo nativo y luego poco a poco ir mirando como ir iterando e incorporar nuevas cosas
Sin palabras.... una maquina total 💫
Hehe muchas gracias 😁
Gracias, me gusta el material de Nets y me viene super bien esta informacion!
Me alegro! 😊
Hola, en el caso de windows, el hot reloading no funciona, intenté colocando las opciones
"watchOptions": {
"watchFile": "dynamicPriorityPolling",
"watchDirectory": "dynamicPriorityPolling"
}
en el tsconfig, pero con el transpilador swc al parecer no funciona o no se que configuración debo realizar para que lo haga, cambie a tsc nuevamente y ahí funciona sin problemas con las 2 opciones agregadas en el tsconfig (tampoco hace hot reloading en caso no agregarlo)
Hola! Lamento que no funcione en Windows, no tengo ese sistema operativo por lo que no puedo reproducir para poder arreglar lo que comentas, veamos si alguien puede crear alguna issue o algo y darle un vistazo
@@AlbertHernandez Si estaba leyendo un poco más y las opciones al parecer solo las tiene tsc, para swc hacen otros artificios como el que sugiere la propia documentación de nest con webpack, o usar nodemon aunque solo probé con webpack y funcionó pero perdí la configuración del debugger 🥲
Lo que me resulta mas raro es que se supone que para eso esta docker, para que sin importar el sistema operativo funcione igual en todos...
Excelente iniciativa.
Gracias!! 😁
vaya y yo que me sentía bien por integrar Sonarqube a un proyecto😅. Una pregunta para que sirve NYC si la plantilla usa el coverage de jest?
Buen vídeo👍
Sonarqube es una solución muy buena también, no es poca cosa así que siéntete bien orgulloso hehe
En este caso estoy usando NYC para fusionar la cobertura de los tests que son unitarios junto con los que son e2e, de esa manera puedo separar los tests por tipo y me resulta mas sencillo saber como voy de testing en cada uno para saber si estoy cumpliendo por ejemplo la pirámide de testing y así incluso podría lanzar los tests dependiendo del entorno
Yo soy junior de Java con spring boot y la verdad estaba Buscando nuevos frameworks parecidos pq el deploy con Java consume mucha ram y se excede mayormente de los free tier que ofrecen varios hosts, y justo me encontré con nest js que es muy parecido
Pues NestJS es una excelente opción, además con los decoradores y demás es muy parecido a Java con Spring Boot
No me esta funcionando el hot reload en windows, incluso teniendo habilitado el docker desktop a la ultima version y habiendo instalado el wsl2 y colocando la flag --watch-poll en el comando dev en package.json
Que raro, le dare un vistazo de nuevo a ver si encuentro que ocurre
Gracias, justo lo que necesitaba.
Me alegro! Un saludo
Albert!. Podrías armar algún video de NestJS con Prisma realizando un crud basico pero utilizando SocketIO
Pues junto tengo pendiente alguno de NestJS con distintos ORMs como con el de TypeORM, pero me apunto hacer uno también con Prisma, gracias por la sugerencia!
Hola Albert, estuve revisando lo actualizado en el repo y me encontré el directorio de contextos. Tienes alguna explicación sobre el tema?
Buenas! Lo de los contextos es algo nuevo que meti hace poco si, esta relacionado a los distintos dominios que podamos tener en nuestra aplicación, podriamos pensar en ellos como los bounded contexts que tengamos en nuestro servicio, te dejo un enlace a la docu de esto: martinfowler.com/bliki/BoundedContext.html
gracias@@AlbertHernandez leí todo tu repo y me encantó. Ya leo lo de Martin.
Muy interesante. Te ganaste una sub.
Por cierto, tienes akgun vídeo de la config de idea. Me gustó como lo tienes
Gracias! Pues justo no tengo uno del IntelliJ Idea pero lo puedo traer 😁
que extensión es esa que te pone los iconos de los navegadores en el editor?
Pues ninguna haha, esto viene por defecto en el editor que uso que es IntelliJ Idea
Gracias Albert! Excelente Video! Justamente siento que la estructura de Nest no me encaja del todo.... No se si es que no se como estructurar mi logica de negocio o demas... He usado un tiempo spring boot y el tener los servicios, controladores y testing en una misma carpeta. Normalmente tengo todo separado. Me gustaria ojala, que hicieras un video sobre esto y como se podria mejorar la estructura de carpetas de Nest! Gracias por tu video!
Un placer!
Si, hay muchas maneras en la que podemos estructurar nuestras carpetas, NestJS se basa sobretodo en una arquitectura modular donde vas a tener distintos módulos que luego vas a ir juntando. Por ejemplo tendrías un modulo de logger, uno de errorTracker, luego puedes ya tener un modulo de usuarios, uno de invoices... la idea sobretodo es que cada módulo sea independiente (o todo lo que podamos) y tenga todo lo necesario en su interior para poder trabajar de manera aislada. Ahora, hay muchas maneras en las que luego podemos diseñar esos módulos, como bien comentas podemos tener dentro del modulo una carpeta por cada tipo al estilo una de servicios, una de controladores, otra de acceso a dato... o incluso podríamos montar una division con la arquitectura hexagonal.
Y si claro, me apunto lo de hablar de las distintas maneras en las que podemos estructurar estas carpetas, quiero ver si dentro de poco traigo una con la hexagonal, pero iremos viendo mas :)
Un saludo!
@@AlbertHernandez muchas gracias Albert !!!!! Quedo atento
Genial el video saludos desde Venezuela, queria hacerte varias preguntas, quiezas algun parezcan tontas pero prefiero hacerla y no quedarme con la duda, tengo un proyecto que ya inicie, y quiero cambiar el compilador y express, pero tengo implementado Grahpql, esto afectaria el proyecto? por otro lado a parte de hacer la instalacion de los paquetes nuevos que mas deberia hacer? y por ultimo en terminos generales estos cambios son transparentes para el proyecto?
Hola! Pues NestJS suele hacer un trabajo bastante bueno es sus módulos internos y prácticamente no hay que cambiar nada, igual el adaptador en los tests e2e, algún middleware que si tengas mas acoplado a express pero creo que no es mucho, yo hice esta migración y me llevó menos de 2 días
@@AlbertHernandez muchas gracias por tu respuesta, estare pasando por aca a dejar alguna noveda, quiero probar con tu template y graphql, con microservicios
Venga, dale caña, yo también quiero ver si me meto en GraphQL con NestJS que tiene muy buena pinta :D
hola muchas gracias por el contenido, aquí una sugerencia (nestJs + aws S3)
Apuntado! 😁😁
tienes video sobre vitest?
Justo de ese no :( pero si crees que puede ser interesante me dices y lo intento traer 💪
@@AlbertHernandez si porfa un video sobre vitest
Este canal es muy top
Hehe muchas gracias, y no olvides subscribirte 😁
Cómo podemos mejorar el cold start de una app de Nest?
Por lo robusto que es este framework, cuando tienes un servicio de nest en la nube con cold start, este tarda considerablemente en levantar y estar disponible
Le dare un vistazo a ver que encuentro, por ahora lo que he encontrado para mejorar los tiempos ha sido primero tener un dockerfile bien optimizado y luego usar compiladores como swc, si encuentro nuevas cosas hago video y os lo traigo :)
Puedes hacer un video de como configurar o que se necesita para poder programar con node y nestjs desde intellij idea
Pues justo en este otro video muestro como hacerlo th-cam.com/video/XQWSyM9d7M4/w-d-xo.htmlsi=y1GzGyEnvpEhTiM4 pero si crees que es mejor un video dedicado a eso también lo podemos hacer :)
en vez de fastify, porque no polkadot?, vi que es mejor en el video
Porque NestJS es compatible por defecto con Fastify y no con Polkadot, ese es el principal motivo
Cual iDE esta usando?
Uso los de Jetbrains (IntelliJ Idea, WebStorm...)
usas webstorm? que configuracion tienes? se ve muy bueno !!!
Pues antes si usaba webstorm pero hace ya un año me pasé a IntelliJ Idea, el tema que uso es el de Monokai Pro (Filter Machine)
@@AlbertHernandez y que tema de iconos tenes instalados?
Pues uso el de Atom Material Icons, este es el enlace: plugins.jetbrains.com/plugin/10044-atom-material-icons
Tremendo template Albert ! Muchas gracias por tu aporte a la comunidad 🤘
Muchas gracias! 😁
Amigo Albert en los tests con la configuración por default no deja de lanzarme este error:
app.module.ts: Support for the experimental syntax 'decorators' isn't currently enabled
He probado 100 cosas, pero no logro hacer que deje de saltarme, si tienes alguna idea de como solventar o alguien mas bienvenido sea.
Buenas! Lo mas probable que te esté faltando activar los decoradores para poder hacer uso de ellos, esto lo puedes hacer en el fichero de tsconfig.json con lo siguiente:
{
"emitDecoratorMetadata": true,
"experimentalDecorators": true
}
Te recomiendo que le des un vistazo a mi template que ahí lo tengo todo funcionando, por si te sirve como refencia: github.com/AlbertHernandez/nestjs-service-template/blob/3e42739487aa3729c2c5dc233fcabc8d7c68d8c9/tsconfig.json#L11-L12
@@AlbertHernandez ok validare, si yo hice un clon del template, al principio funcionó bien, pero luego me comenzó a dar ese problema.
En ese caso al igual lo que puedes hacer es ir viendo los commits que introdujiste después de clonar el repo e identificar en que punto dejo de funcionar
@@AlbertHernandez Lo curioso es que no he hecho ningún cambio en esa sección del código, no hice ningún ajuste distinto al que trae el template, revise y es exactamente igual al que está en el repo original que compartiste.
Aprovecharé que no tengo lógica alguna aún y reclonaré desde 0.
Que extraño, si encuentras lo que pasa me dices, sino, sube el codigo a algun repo y si puedes dame acceso para darle un vistazo, por si puedo encontrar el problema
excelente contenido Albert 😎👍
Gracias 💪🏻💪🏻
bro, unos videos de testing con nestjs
Lo tengo en la lista 💪😁
Hace falta un video de hacer correctamente los test de nuestras aplicaciones
Ese es un gran punto! Me lo apunto para hablar más sobre testing
Muchas gracias
Es un placer 😊
Hola qué editor de código es ese?
Buenas! Es IntelliJ Idea 😁
siento decir que si lo probais ahora, no funcioan, hay dependencias de vitest que fallan unas con otras, y si instalo por ejemplo joi dice que no lo encuentra
Le dare un vistazo para arreglarlo :)
@@AlbertHernandez Muchas gracias Albert , mañana la volveré a probar y si funciona la usaremos en mi empresa.
Le acabo de dar un vistazo y me ha ido bien, tambien toda la pipeline funciona correctamente con github actions. Si puedes, crea una issue en el repositorio de github y añade todos los detalles que puedas para que pueda reproducir lo que te pasa
@@AlbertHernandez Buenas albert, ayer lo volvi a probar, y parece que ya funciona, sería algo del dependabot que fallarian las dependencias, muchas gracias!
@@AlbertHernandez Buenas Albert, lo de las dependencias parece que fue un error de dependabot, ahora ya va bien , lo que tambien me ocurre que al instalar por ejemplo typeorm, no encuentra el modulo, o cualquier otro modulo , typescript en el edito lo detecta bien import { DataSource } from "typeorm";
pero al complilar no lo encuentra. he ledido que una solucion es bajar de version swc, peude ser que haya habido algun breaking change ? muchas gracias Albert, y decirte que el trabajo que haces me parece espectacular.
Primero déjame aprender NestJS y luego regreso ♥
Haha venga, dale un vistazo a la documentación oficial que es bastante buena, tambien tienen cursos oficiales que estan bien, y en este mismo canal vas a encontrar un poco de materal de NestJS, un saludo!
Hola @Albert,
Qué secretos y secretos de entorno necesitas en el repo?
Porque estoy usando la template y enseguida tengo fallas de 5 pruebas y creo que es porque no se logran generar las labels:
chore(deps): bump alstr/todo-to-issue-action from 4 to 5 #325
Run bcoe/conventional-release-labels@v1
with:
type_labels: {"feat": "🚀 Feature", "fix": "🕵🏻 Fix", "breaking": "⚠ Breaking Change"}
token: ***
ignored_types: ["chore"]
ignore_label: ignore-for-release
Muchas gracias!
Ya pude, para los nuevos repos no se puede agregar el secret GITHUB_TOKEN con el prefijo "GITHUB_". Modificando eso en los respectivos workflows funciona!
Buenas! Pues esos 2 en concreto no necesitan secrets, si alguno lo necesitara, por ejemplo, el de dependabot, puedes ver aqui como le indicamos el secret -> github.com/AlbertHernandez/nestjs-service-template/blob/86698a63020e8accf632e19dfad336c98904417c/.github/workflows/dependabot-auto-merge.yml#L14
Like, + 1 Sub, Muchas gracias por el template, muy útil
Gracias! Un saludo
Podrías hacer algo similar para trpc
Buenas! Tengo pendiente hacer uno si 😁
@@AlbertHernandez Con buenas practicas y arquitecture hexagonal
Excelente video! sub
👏👏👏👏👏👏
buen video
Gracias!
que crack!
Hehe gracias matias 💪😁
Mejor crear un api directo con fastify si queres velocidad, nest le agrega mucho decorado
Si, coincido que NestJS agrega mucho decorado pero también ofrece muchas cosas por defecto desde contenedor de dependencias, logger, modularización de componentes, colas de mensajería... al final es una decisión que hay que tomar y evaluar muy bien, ya que todo tiene pros y contras.
Por cierto, he visto que ha sido añadido incluso en las nodebestpractices de 2023 (github.com/goldbergyoni/nodebestpractices/blob/master/sections/projectstructre/choose-framework.md), por lo que parece que cada vez mas desarrolladores lo están utilizando y dandole mas cariño (también esta fastify puro que por supuesto es otra opción muy buena 😁)
@@AlbertHernandez yo creo que es más por un tema de popularidad y que atrae gente a la tecnología. Yo para proyectos que se muy que voy a necesitar prefiero evitarlo
Creo que depende mucho de la situación, por ejemplo, en una empresa pequeña quizá se quiere apostar por un framework completo que ya te lo dé todo y así poder ir lo más rápido posible. También puede darse el caso de que quieras tener fullstacks en la empresa donde todo el frontend sea con angular, ya que NestJS esta muy basado en angular quizá tenga sentido ya que la curva de aprendizaje y los conceptos son muy parecidos. También al ser un framework que tiene mucha mas popularidad como comentas puede hacer que sea mas fácil hacer hiring de personas y sabiendo que estan usando lo mismo (o casi lo mismo que tu)...
Muchas veces aunque una tecnología es mas lenta que otra, se prioriza esta por un tema mas estratégico, por esto te comento que va a depender mucho del caso, de la empresa y del momento donde estemos
Curso de monorepo con typescript please
Tengo justo uno pendiente donde ver incluso temas de monorepo con Lerna, voy a trabajar en ello y traeré videos sobre todo esto :)
@@AlbertHernandez muchas gracias eres muy bueno con la comunidad
cambiaria prettier y tslint por biome y jest por vitest
Me lo apunto para ver esas herramientas, gracias por el feedback! Se agradece :D
@JhonyHDV Una pasada lo de vitest, ya lo he cambiado en este template y en otros que tengo, muchas gracias por el consejo 😁
Ahora falta biome por prettier y tslint
No entiendo lo de la cobertura 😅
Cuando realizamos testing en nuestros servicios de los mas habituales es tener tests unitarios, tests de integración y tests e2e. Lo de la cobertura unificada lo que hace es lanzar los distintos tipos de tests, en este caso los e2e y los unitarios y luego suma la cobertura de cada uno por separado para ofrecer la cobertura final del proyecto
un curso completo de cero, no ta profundo si quieres, para que pueda ser gratis, o como quieras bro, pero uno completo desde cero hasta una app, gracias de antemano
Apuntado! 😁😁
pensé que dirías algo interesante ... ... no puedes con algo tan sencillo ...
👀