NestJS
v10.xFramework Node.js empresarial modular
Descripción
NestJS es el framework backend estándar de WicSecure. Provee una arquitectura modular con TypeScript estricto, inyección de dependencias nativa y decoradores que reducen el código boilerplate sin sacrificar control.
Uso en WicSecure
Cada API de cliente es un proyecto NestJS independiente. Implementamos Guards de JWT con blacklist en Redis, DTOs con class-validator, colas BullMQ para tareas asíncronas y Swagger para documentación automática de la API.
Configuración clave
typescriptconfig
// main.ts — bootstrap estándar WicSecure
import { NestFactory } from '@nestjs/core'
import { ValidationPipe } from '@nestjs/common'
import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'
import helmet from 'helmet'
import { AppModule } from './app.module'
async function bootstrap() {
const app = await NestFactory.create(AppModule)
app.use(helmet())
app.enableCors({ origin: process.env.FRONTEND_URL })
app.useGlobalPipes(new ValidationPipe({
whitelist: true,
forbidNonWhitelisted: true,
transform: true,
}))
const config = new DocumentBuilder()
.setTitle('API WicSecure')
.addBearerAuth()
.build()
SwaggerModule.setup('api', app, SwaggerModule.createDocument(app, config))
await app.listen(3000)
}
bootstrap()Ejemplo de uso
typescript
// auth.guard.ts — JWT Guard con blacklist Redis
@Injectable()
export class JwtAuthGuard extends AuthGuard('jwt') {
constructor(private readonly redis: RedisService) {
super()
}
async canActivate(context: ExecutionContext): Promise<boolean> {
const valid = await super.canActivate(context)
if (!valid) return false
const request = context.switchToHttp().getRequest()
const token = ExtractJwt.fromAuthHeaderAsBearerToken()(request)
if (await this.redis.isBlacklisted(token)) {
throw new UnauthorizedException('Token revocado')
}
return true
}
}Características clave
- Inyección de dependencias con contenedor IoC
- Guards, Interceptors y Pipes para cross-cutting concerns
- Integración nativa con Prisma, Redis, BullMQ
- Swagger/OpenAPI autogenerado con decoradores
- Módulo de WebSockets con Socket.io integrado