Gestor de información de producto textil
Un sistema de información de producto para textiles, construido sobre un modelo relacional profundo. Genera fichas técnicas listas para imprimir bajo demanda, en dos formatos y dos idiomas.
Las especificaciones de tela vivían en hojas de cálculo y en la cabeza de quienes las mantenían. Cada ficha técnica se diagramaba a mano en una herramienta de diseño, así que corregir una composición o una instrucción de cuidado implicaba reabrir y reexportar cada documento, y la versión que recibía un cliente rara vez era la vigente.
El modelo de datos es el producto. Los textiles tienen relaciones reales que modelar: composiciones, acabados, requisitos de cuidado, clasificaciones comerciales y líneas de negocio, cada una con sus propias restricciones. Todo eso vive como enumeraciones y relaciones tipadas en Postgres, definidas una sola vez en un esquema que comparten la aplicación y su validación, así que no se puede escribir un registro inválido desde ninguna pantalla. Las vistas grandes del catálogo están virtualizadas para que navegar miles de registros siga siendo fluido.
Las fichas técnicas se generan bajo demanda en vez de almacenarse. La ruta renderiza una página interna con estilos de impresión en un navegador sin interfaz y devuelve un documento paginado. La instancia del navegador se reutiliza entre solicitudes, porque levantar una por solicitud es la diferencia entre una respuesta rápida y un tiempo agotado. Existen dos variantes de ficha para audiencias distintas, y ambas se renderizan en cualquiera de los dos idiomas desde los mismos datos, lo que elimina por completo el paso manual de diagramación.
Stack
- Next.js
- TypeScript
- Drizzle ORM
- Postgres
- Zod
- Playwright
- Tailwind CSS
- Docker
Integraciones
- Supabase Auth
- Supabase Storage
- Spreadsheet import
Renderizar documentos desde una página viva en lugar de componerlos con una librería de documentos fue un intercambio deliberado. Significa que la ficha se estiliza con las mismas herramientas que el resto de la interfaz, y quien diseña puede ajustar el diagrama sin tocar el código de generación. El costo es un entorno de ejecución más pesado, y por eso el navegador se comparte y la ruta valida el registro antes de gastar uno.
Las fichas se generan por solicitud en vez de cachearse en almacenamiento. Para este catálogo el render es lo bastante rápido, un documento desactualizado era el riesgo mayor, y así se elimina toda una clase de errores de invalidación.
02 — Próximo proyecto
Tracemos la ruta.
santiagovalenciavera@gmail.com · Abierto a roles senior y proyectos seleccionados