Nexora
Un CRM de marca blanca para inmobiliarias, que hoy usa Liliana Cappelli Propiedades.

Una inmobiliaria trabaja con propiedades, contactos, operaciones, contratos y WhatsApp. Liliana Cappelli Propiedades, de Villa Gesell, además necesitaba una web pública con su propio nombre. Cada agente tiene que ver sólo su cartera, y el rol de dueño ve todo.
Tres decisiones que lo definieron.
- 01
Las reglas de acceso viven en Postgres
Por qué. El aislamiento entre inmobiliarias y la cartera de cada agente son políticas de row-level security. El cliente nunca filtra por inmobiliaria. Un error en una pantalla no puede mostrar datos de otra.
El costo. Las políticas cuestan más de depurar que el código de la app. Si se reasigna una operación, el agente anterior deja de recibir eventos en vivo, así que el tablero se refresca al volver a la ventana.
- 02
Marca blanca por variables de entorno
Por qué. El mismo código sirve a todas las inmobiliarias. Una variable hace que el dominio raíz sirva la web de una sola agencia y muda el panel a un subdominio app. Otra oculta el nombre NEXORA en todos lados.
El costo. El proxy tiene que resolver choques de rutas, porque /propiedades existe en la web y en el panel. Dos hosts por agencia es más DNS para configurar.
- 03
Web pública en caché por 30 días, purgada por tag
Por qué. La web se regeneraba cada pocos minutos aunque nada cambiara, y eso consumía CPU del servidor. Ahora las páginas viven 30 días. Las acciones que cambian una propiedad o la marca llaman a revalidateTag.
El costo. Cada camino de escritura tiene que acordarse de invalidar. Uno olvidado muestra datos viejos por semanas, y hubo que encontrar y cerrar tres huecos así.




Nexora
Un CRM de marca blanca para inmobiliarias, que hoy usa Liliana Cappelli Propiedades.
- Rol
- Producto, arquitectura y desarrollo full-stack
- Stack
- Next.js 16, React 19, TypeScript, Supabase, TanStack Query, Tailwind CSS 4

Una inmobiliaria trabaja con propiedades, contactos, operaciones, contratos y WhatsApp. Liliana Cappelli Propiedades, de Villa Gesell, además necesitaba una web pública con su propio nombre. Cada agente tiene que ver sólo su cartera, y el rol de dueño ve todo.
Tres decisiones que lo definieron.
Las reglas de acceso viven en Postgres
Por qué. El aislamiento entre inmobiliarias y la cartera de cada agente son políticas de row-level security. El cliente nunca filtra por inmobiliaria. Un error en una pantalla no puede mostrar datos de otra.
El costo. Las políticas cuestan más de depurar que el código de la app. Si se reasigna una operación, el agente anterior deja de recibir eventos en vivo, así que el tablero se refresca al volver a la ventana.
Marca blanca por variables de entorno
Por qué. El mismo código sirve a todas las inmobiliarias. Una variable hace que el dominio raíz sirva la web de una sola agencia y muda el panel a un subdominio app. Otra oculta el nombre NEXORA en todos lados.
El costo. El proxy tiene que resolver choques de rutas, porque /propiedades existe en la web y en el panel. Dos hosts por agencia es más DNS para configurar.
Web pública en caché por 30 días, purgada por tag
Por qué. La web se regeneraba cada pocos minutos aunque nada cambiara, y eso consumía CPU del servidor. Ahora las páginas viven 30 días. Las acciones que cambian una propiedad o la marca llaman a revalidateTag.
El costo. Cada camino de escritura tiene que acordarse de invalidar. Uno olvidado muestra datos viejos por semanas, y hubo que encontrar y cerrar tres huecos así.



