Caso · producto propio

Defines un campo y el formulario ya existe

Cada empresa que me contrata pide el mismo sistema con otro formulario: otros campos, otras reglas, otra pantalla. KUIDY-CORE es lo que escribí para dejar de programar ese formulario cada vez: se definen los módulos y sus campos desde la interfaz, y un motor genérico pinta la pantalla, valida lo que se escribe y lo guarda.

Cómo se ve

Un módulo son sus campos y sus registros. Arriba, la definición: nombre, clave, tipo y si es obligatorio. Abajo, los datos ya cargados, con una columna por campo.

Módulo Activos con la lista de sus siete campos y, debajo, la tabla de registros
El módulo «Activos» de la demo: siete campos de cuatro tipos distintos y sus registros debajo.

Añadir un campo es rellenar tres casillas. No hay migración, ni despliegue, ni una línea de código: el campo se guarda como definición, y todo lo demás sale de ahí.

Diálogo Agregar campo con nombre, clave JSON, tipo fecha y casilla de obligatorio
El campo se declara: su nombre, la clave con la que viaja en los datos y su tipo.
Formulario de alta que ya incluye el campo recién creado como selector de fecha
Y ya está en el formulario, con el control que le toca y su validación. Los registros que ya existían muestran un guion en la columna nueva.

Cómo funciona por dentro

La idea es vieja y buena: separar la definición de los datos. Los proyectos, módulos y campos viven en tablas normales de PostgreSQL, y los registros en una sola tabla con una columna jsonb y su índice GIN. Así se añade un campo sin tocar el esquema de la base, y los metadatos siguen siendo consultables como cualquier otra tabla.

Lo que hace que esto no sea un caos es el validador que se construye al vuelo: con la definición de campos de un módulo se arma un esquema de validación en tiempo de ejecución, y es el mismo criterio el que corre en el navegador, para avisar mientras se escribe, y en la API, que es la que manda. Un número no entra como texto, una fecha tiene que tener forma de fecha y un desplegable solo acepta sus opciones, sin que nadie haya escrito ese código para ese campo concreto.

Las contraseñas se guardan con argon2id, la sesión es un JWT de siete días, y el acceso se decide por membresía en cada proyecto con cuatro papeles: propietario, administrador, miembro y lector. El lector que intenta escribir recibe un no del servidor, no de la interfaz.

Pruébalo tú

La demo está abierta y sus datos son inventados. Entra, abre un módulo, crea un campo y mira el formulario: eso es el producto entero en medio minuto.

Qué es y qué no es

Es el motor con el que monto sistemas internos a medida sin repetir trabajo, y de ahí sale su alcance: todavía no hay relaciones entre módulos, ni informes, ni importación, y el tipo de un campo no se cambia una vez creado. Está escrito así a propósito: prefiero que lo que hay sea sólido y que lo que falta se note, a prometer una plataforma entera y que se caiga en la primera demo.

¿Tu equipo lleva su trabajo en hojas de cálculo?

Ahí es donde esto vale: convertir esa hoja en un sistema con permisos, validaciones y registro de quién hizo qué, sin esperar tres meses ni pagar por asiento.

Hablemos →