Volver a proyectos

Nevada Inventory System

Cómo Diseñé un SaaS Multi-Tenant desde Cero

NestJS 11Next.js 16React 19TypeScriptPostgreSQLPrisma 7RedisTailwind CSS 4ZodJWT + RBACVTEX APIDocker

7.749

Tests

97%

Cobertura

80+

Permisos

17

Tipos de Reportes

El Problema

Negocios gestionando inventario en múltiples bodegas dependían de hojas de cálculo y herramientas desconectadas. Necesitaban visibilidad en tiempo real, trazabilidad y acceso basado en roles — todo en una plataforma que pudiera escalar.

El Enfoque

Empecé mapeando el dominio: bodegas, productos, movimientos de stock, organizaciones. Cada concepto se convirtió en un contexto delimitado. La arquitectura tenía que soportar multi-tenancy desde el día uno — no agregado después.

Decisiones Clave

¿Por qué Arquitectura Hexagonal?

La lógica de negocio necesitaba estar completamente aislada de las preocupaciones de infraestructura. Usando puertos y adaptadores, la capa de dominio no sabe de HTTP, bases de datos o APIs externas. Esto hizo que testear fuera directo y refactorizar seguro.

¿Por qué DDD + Screaming Architecture?

La estructura de carpetas grita 'gestión de inventarios', no 'app de NestJS'. Los módulos están organizados por concepto de dominio (productos, bodegas, movimientos), no por capa técnica. Cualquier desarrollador que abra el código entiende inmediatamente qué hace.

Aislamiento de Datos Multi-Tenant

Cada consulta filtra por organización. Cada endpoint valida la propiedad del tenant. El sistema RBAC con 80+ permisos granulares asegura que los usuarios solo accedan a lo que deben — hasta operaciones individuales de bodega.

Integración VTEX

El sistema sincroniza con VTEX para gestión de pedidos e-commerce. Productos, pedidos y fulfillment fluyen bidireccionalmente. Esto requirió un diseño cuidadoso de idempotencia para manejar reintentos y fallos de webhooks.

La Construcción

El backend usa NestJS 11 con Prisma 7 y PostgreSQL. Redis maneja caché y rate limiting. El frontend está construido con Next.js 16, React 19 y Tailwind CSS 4, siguiendo los mismos principios hexagonales con un patrón BFF (Backend for Frontend). El sistema genera 17 tipos de reportes en formatos PDF, Excel y CSV.

El Resultado

Una plataforma SaaS en producción con un cliente real pagando, diseñada para manejar 50+ bodegas y 100,000+ productos. El backend tiene 7,749 tests con 97% de cobertura — no como vanidad, sino como la confianza para entregar features sin miedo.