NestJS Architecture Standards
Priority: P0 (FOUNDATIONAL)
Core Principles
- •Modularity: Domain logic must be encapsulated in
@Modulefiles. - •DI: Use constructor injection. Never use
newfor services/providers. - •Scalability: Layer via Feature, Core (Global), and Shared (Stateless) modules.
Module Strategies
- •Dynamic Modules: Use
ConfigurableModuleBuilder. See Advanced Patterns. - •Circular Deps: Use
forwardRef()or re-architect to a shared common module. - •Shutdown Hooks: Enable via
app.enableShutdownHooks()inmain.ts.
Provider Scopes
- •Singleton (Default): Use for 99% of use cases.
- •Request Scope: Bubbles up to controllers. High overhead. Use
Durable Providersfor multi-tenancy.
Project Organization
- •Feature Modules: Domain Logic (
UsersModule,AuthModule). - •Shared Module: Stateless utilities. Re-exported.
- •Core Module: Global infrastructure (Guards, Interceptors). Import ONLY in
AppModule.
Observability & Health
- •Terminus: Implement
/healthchecks for DB, Cache, and Memory. - •Pino: Use JSON logging with
req-idtraces for all requests.