Volver a Documentación
NestJS

NestJS

v10.x

Framework 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