ValwispDocs
Desarrolladores

Convenciones

El patrón de 4 archivos por módulo NestJS, el formato de respuesta global y las reglas de estilo del proyecto.

Patrón de módulo (API)

Cada módulo en apps/valwisp-api/src/modules/<dominio>/ sigue el mismo patrón de 4 piezas:

ArchivoResponsabilidad
*.controller.tsRutas HTTP (@Controller, @ApiTags), guards/decoradores de auth
*.service.tsLógica de negocio, consultas a Prisma — siempre filtradas por tenantId
*.dto.tsDTOs de entrada/salida (validación)
*.module.tsEnsamblado NestJS del módulo

Formato de respuesta global

Todos los endpoints devuelven { success, data, timestamp } en éxito, o { success: false, statusCode, message, path, timestamp } en error — aplicado globalmente, no hace falta envolver nada a mano en cada controller:

  • TransformInterceptor (src/common/interceptors/transform.interceptor.ts) — envuelve toda respuesta exitosa; serializa Prisma.Decimal → number y Date → ISO string recursivamente.
  • HttpExceptionFilter (src/common/filters/http-exception.filter.ts) — captura cualquier excepción; solo loguea con stack trace si status >= 500.

Decoradores comunes

@CurrentUser(), @TenantId(), @Public(), @Roles(...UserRole[]), @CheckPermission(action, subject) — ver el detalle en Autenticación.

Reglas de estilo del proyecto

  • No añadas abstracciones, feature flags, ni manejo de errores para escenarios que no pueden ocurrir — confía en las garantías de Prisma/NestJS y valida solo en los bordes del sistema (input de usuario, APIs externas).
  • Prefiere cambiar el código directamente a mantener shims de compatibilidad hacia atrás.
  • Sin comentarios que expliquen el "qué" (el código ya lo dice) — solo el "por qué" cuando no es obvio (una restricción oculta, un workaround puntual).

On this page