-
Nest
A progressive Node.js framework for building efficient, scalable, and enterprise-grade server-side applications with TypeScript/JavaScript ๐
-
SurveyJS
Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
-
nestjs-dynamic-render
A repository to show a way to dynamically render a template without using Nest's `@Render()` decoraotr
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
I always used express before never really seeing any reason not to but as I'm preparing the tech stack for this project, I stumbled across AdonisJS, hapi and NestJS all of which I took interest in and now I'm stuck with decision fatigue but not enough time to create a working proof of concept in all of them.
I always used express before never really seeing any reason not to but as I'm preparing the tech stack for this project, I stumbled across AdonisJS, hapi and NestJS all of which I took interest in and now I'm stuck with decision fatigue but not enough time to create a working proof of concept in all of them.
As for the "maintainability", I guess that just comes down between developers. I've seen Nest applications that are built incredibly poorly, and I've seen beautiful Express applications. It just depends. I find [Nx[(https://nx.dev) to be a really nice repository management tool, but again, it just comes down to each dev.
Then you have the enhancers, which are really just specialized middleware that can be transport agnostic. You have guards which handle your authentication. If a guard's canActivate returns true (sync or async, promise or observable) then the request continues on. If false is returned, Nest will automatically send back a 403 (customizable through a filter). You have pipes which are for you payload/parameter validation and transformation. Out of the box, Nest support class-validator and class-transformer, but you can use any validation method you prefer (via passing the schema to a custom pipe's constructor) or you can make your own version of the ValidatioinPipe to work with other class based systems like @deepkit/type (I'm slowly working on building this to be a drop in replacement). Next up you have interceptors which are pretty much your swiss-army-knife enhancer. They have pre and post controller logic available so they're great for logging and caching responses, as well as response mapping and serialization (just to name a few things they can do). You can also set up some sweet content negotiation or dynamic template rendering with a bit of clever work. And then you have filters which are your built in error handlers. You throw an error, these can catch it.
Then you've got integration with OpenAPI, GraphQL, Websockets, andways to build CLI applications and it's pretty easy to see that just about anything you'd want to do in Node can be done with NestJS. And that's not even touching the testing side of things yet.
Then you have the enhancers, which are really just specialized middleware that can be transport agnostic. You have guards which handle your authentication. If a guard's canActivate returns true (sync or async, promise or observable) then the request continues on. If false is returned, Nest will automatically send back a 403 (customizable through a filter). You have pipes which are for you payload/parameter validation and transformation. Out of the box, Nest support class-validator and class-transformer, but you can use any validation method you prefer (via passing the schema to a custom pipe's constructor) or you can make your own version of the ValidatioinPipe to work with other class based systems like @deepkit/type (I'm slowly working on building this to be a drop in replacement). Next up you have interceptors which are pretty much your swiss-army-knife enhancer. They have pre and post controller logic available so they're great for logging and caching responses, as well as response mapping and serialization (just to name a few things they can do). You can also set up some sweet content negotiation or dynamic template rendering with a bit of clever work. And then you have filters which are your built in error handlers. You throw an error, these can catch it.
Related posts
-
NestJS tip: how to change HTTP server timeouts
-
Don't go all-in Clean Architecture: An alternative for NestJS applications
-
NestJS is now the most starred Node framework on GitHub
-
Supercharge Your Testing Workflow: Creating Unit and E2E Tests 10x Faster with ChatGPT-3 Inside NestJS
-
@nestjs/ng-universal dependency warnings lead to broken build