Every domain is a standalone NestJS Module
Domain logic trapped in AppModule — libs stay empty shells.
nestjs-module-domain-standalone
Why it matters
| Stake | If ignored |
|---|---|
| Can't run alone |
|
| Agent gets lost |
|
How to fix
In Nx + NestJS, a domain becomes a Module that lives in libs/<domain>/backend-feature-* (or similar). The backend app only assembles those modules in AppModule.
Examples
ts
// apps/api/src/app.module.ts
@Module({
controllers: [SitesController, AgentsController, UsersController, BillingController],
providers: [SitesService, AgentsService, UsersService, BillingService, PrismaService],
})
export class AppModule {}ts
// libs/sites-management/backend-feature/src/lib/sites.module.ts
@Module({
imports: [SitesDataAccessModule],
controllers: [SitesController],
providers: [SitesService],
exports: [SitesService], // ← only what's public
})
export class SitesModule {}
// libs/studio/backend-feature/src/lib/studio.module.ts
@Module({
imports: [StudioDataAccessModule],
controllers: [AgentsController],
providers: [AgentsService],
exports: [AgentsService],
})
export class StudioModule {}
// apps/api/src/app.module.ts
@Module({
imports: [SitesModule, StudioModule, AccountModule],
})
export class AppModule {}