- Added pnpm-workspace.yaml to define package structure. - Created prepare-local-env.py script for local environment setup. - Introduced tsconfig.json for TypeScript configuration. - Added turbo.json for task management with Turbo.
1008 B
Contratos HTTP
Zod v4 es la fuente de verdad de los DTOs de entrada y salida. Inferir todos sus tipos mediante z.infer; no escribir interfaces equivalentes.
Ubicación: modules//src/common/dto/request y response. Crear shared solo cuando haya subcontratos estables usados por varias operaciones.
Los nombres expresan recurso y acción: GetHealthRequestSchema, GetHealthRequestDTO, GetHealthResponseSchema y GetHealthResponseDTO.
Distinguir campo omitido, null, cadena vacía y colección vacía. Evitar default y transform en contratos de negocio salvo una necesidad justificada. Usar schemas semánticos para UUID y timestamps ISO. Los decimales exactos viajan como cadenas.
La route valida la entrada una vez; el controller no repite Zod. El navegador valida la respuesta externa antes de consumirla.
Los builders de respuesta se tipan con el DTO inferido exacto; no duplican interfaces Snapshot. Son deterministas y no contienen lógica de negocio ni acceso a repositorios.