Caso de estudio · Software

Un portal con tres tipos de usuarios

ComfortMap es un directorio público de residencias de mayores («Booking.com para residencias») además de un portal con dashboards separados para el personal de la residencia y para las familias de los residentes. Incluye también la historia de un bug real, encontrado y reparado en producción.

3roles distintos: personal de la residencia, familia del residente, super-admin
ISRpáginas públicas estáticas, regeneradas cada hora, indexables por Google
1bug crítico encontrado, diagnosticado y reparado en vivo en producción
Dashboard ComfortMap — perfil de residencia de mayores, pantalla de portátil
ComfortMap
01

Un directorio público para residencias de cuidados

ComfortMap resuelve un problema de descubrimiento: las familias que buscan una residencia de cuidados para un progenitor necesitan un lugar donde comparar opciones reales, no solo un directorio estático con datos públicos sin actualizar.

02

La diferencia con un directorio estático de datos públicos

Las alternativas del mercado suelen ser directorios estáticos, alimentados con datos públicos del ministerio y sin actualizar por las residencias. ComfortMap es un marketplace real, con un perfil dinámico que edita directamente cada residencia: descripción, fotos, servicios, precio desde, capacidad.

03

Páginas públicas SEO + paneles por rol

Además del directorio público, el portal tiene tres tipos de acceso: el personal de la residencia, las familias y el super-admin (visibilidad a nivel de plataforma).

  • 01Directorio público SEO páginas por provincia y perfil individual, renderizadas con ISR — rápidas, indexables, coste de infraestructura mínimo.
  • 02Dashboard personal operativo, día a día — residentes, diario, mensajería directa con las familias.
  • 03Portal familia diario, fotos, informes semanales, actualizados por el personal, visibles para la familia.
04

De la estructura por roles a un bug reparado en el origen

  • 01Estructura de rutas públicas (/camine, /camine/[județ], /camine/[județ]/[profil]) renderizada con ISR (regeneración estática incremental, cada hora).
  • 02Tres niveles de acceso separados — personal, familia, super-admin — con Row Level Security a nivel de base de datos.
  • 03Auditoría de producción para los errores reportados por el cliente — identificación de la causa real, no solo del síntoma.
  • 04Reparación en el origen, más error boundaries dedicados en cada zona de la aplicación.
  • 05Verificación en vivo del flujo completo para los tres roles, tras la reparación.
05

De caídas intermitentes a funcionamiento verificado

Una actualización de sesión fallaba silenciosamente por una política de seguridad demasiado estricta a nivel de base de datos, lo que dejaba a algunos usuarios sin acceso funcional a la cuenta, sin ningún mensaje de error claro — solo un crash genérico. Reparamos la causa, no solo el síntoma, y verificamos en vivo el flujo completo para los tres roles — autenticación mediante magic link, acceso correcto al dashboard, sesión persistente, registro de auditoría funcional para acciones sensibles (conforme a los requisitos de conservación de datos durante 5 años).

06

Qué hemos usado

Next.js con App Router, Supabase/Postgres con Row Level Security para el aislamiento de datos por rol, autenticación magic-link, registro de auditoría para acciones sensibles, hosting con renderizado ISR para las páginas públicas.

07

El mantenimiento real significa reparar la causa, no el síntoma

La señal que nos llevó al bug no fue un error claro, sino un crash genérico — el tipo de informe vago que resulta tentador tratar de forma superficial. El diagnóstico mostró una política de seguridad demasiado estricta a nivel de base de datos, no un problema de interfaz. Reparamos la causa, no el síntoma, y añadimos error boundaries para que un error similar, en el futuro, no vuelva a bloquear toda la plataforma — solo la zona afectada.

En el momento de la auditoría todavía quedaba una única zona con datos simulados (la configuración de contacto de una residencia) — la documentamos explícitamente como elemento abierto, no la ocultamos.

FAQ

Preguntas frecuentes

¿Qué diferencia hay con un directorio estático de residencias?

ComfortMap tiene un perfil dinámico, editado directamente por cada residencia (descripción, fotos, precio, servicios), no datos públicos estáticos sin actualizar.

¿Qué bug encontrasteis y cómo lo arreglasteis?

Una actualización de sesión posterior a la autenticación fallaba silenciosamente por una política de seguridad de la base de datos; movimos la operación a un canal con los permisos correctos y añadimos error boundaries, de modo que un error similar muestre un mensaje claro en lugar de un crash.

¿Cómo están separados los datos entre los tres roles?

Mediante Row Level Security a nivel de base de datos: cada rol ve solo los datos a los que tiene derecho de acceso, verificado en la fuente, no solo en la interfaz.

The Niche Society
El equipo de The Niche SocietyIngenieros de IA y software desde Bucarest · LinkedIn
Entregado 2026

Veamos qué se puede automatizar en tu empresa.

Una sesión gratuita de 30 minutos: te decimos qué se puede automatizar, cuánto se tarda y cuánto cuesta, con precio fijo tras el discovery.

Reserva una sesión gratuitaoffice@thenichesociety.ro

Respondemos el mismo día laborable.

+40 733 045 833