# ComfortMap: portal pentru cămine de îngrijire

> Cum am construit ComfortMap: director de cămine de îngrijire, dashboard-uri pentru personal și familii, date izolate pe rol, bug reparat la cauză.

URL: https://thenichesociety.ro/studii-de-caz/comfortmap

Am construit un director public în care fiecare cămin își editează singur profilul (în locul listelor statice, cu date vechi), plus dashboard-uri separate pentru personal, familii și administrator. **Când a apărut în producție un bug critic de sesiune, l-am reparat la cauză și am verificat live toate cele trei roluri.**

## Un director public pentru cămine de îngrijire

ComfortMap rezolvă o problemă de descoperire: familiile care caută un cămin de îngrijire pentru un părinte au nevoie de un loc unde să compare opțiuni reale, nu doar un director static cu date publice neactualizate.

După ce aleg căminul, familiile vor să știe cum îi merge celui drag: jurnal, poze și rapoarte săptămânale de la personal. ComfortMap acoperă ambele momente.

## Diferența față de un director static de date publice

Alternativele de pe piață sunt adesea directoare statice, populate din date publice ale ministerului și neactualizate de cămine. ComfortMap e un marketplace real, cu profil dinamic editat direct de fiecare cămin: descriere, poze, facilități, preț de la, capacitate.

30 de minute, gratuit. Îți spunem sincer dacă are sens.

## Pagini publice SEO și dashboard-uri pe rol

Pe lângă directorul public, portalul are trei tipuri de acces: personalul căminului, familiile și super-admin, adică administratorul care vede toată platforma.

- 01**Director public** pagini pe județ și pe fiecare cămin, generate static și regenerate automat în fiecare oră (ISR): se încarcă repede, sunt indexabile Google și au un cost de infrastructură minim.
- 02**Dashboard personal** munca de zi cu zi: rezidenți, jurnal, mesagerie directă cu familiile.
- 03**Portal familie** jurnal, poze și rapoarte săptămânale, actualizate de personal și vizibile familiei.

## De la structura pe roluri la un bug reparat la sursă

- 01Structură de adrese publice (/camine, /camine/[județ], /camine/[județ]/[profil]), generată static și regenerată orar (ISR, regenerare statică incrementală).
- 02Trei niveluri de acces separate (personal, familie, super-admin), cu Row Level Security: baza de date verifică la sursă ce date vede fiecare rol, nu doar interfața.
- 03Audit de producție pentru erorile raportate de client: căutarea cauzei reale, nu doar a simptomului.
- 04Reparație la sursă, plus error boundary-uri pe fiecare zonă a aplicației, ca o eroare să rămână în zona ei și să nu blocheze totul.
- 05Verificare live a fluxului complet pentru toate cele trei roluri, după reparație.

## De la crash intermitent la funcționare verificată

**Problema.** După autentificare, actualizarea sesiunii eșua silențios, blocată de o politică de securitate prea strictă la nivelul bazei de date. Unii utilizatori rămâneau fără acces funcțional la cont și vedeau doar un crash generic, fără niciun mesaj clar.

**Reparația.** Am mutat operația pe un canal cu permisiunile corecte și am adăugat error boundary-uri, astfel încât o eroare similară să afișeze un mesaj clar în loc de un crash.

**Rezultatul, verificat live pe toate cele trei roluri:** autentificare prin magic link (link de logare primit pe e-mail), acces la dashboard-ul corect, sesiune persistentă și jurnal de audit funcțional pentru acțiunile sensibile, conform cerinței de păstrare a datelor pe 5 ani.

## Ce am folosit

Next.js cu App Router, Supabase/Postgres cu Row Level Security pentru izolarea datelor pe rol, autentificare magic-link, audit log pentru acțiuni sensibile, hosting cu randare ISR pentru paginile publice.

## Mentenanța reală înseamnă să repari cauza, nu simptomul

Semnalul n-a fost o eroare clară, ci un crash generic, genul de raport vag pe care e tentant să-l tratezi superficial. Diagnoza a arătat că problema era o politică de securitate din baza de date, nu interfața. Error boundary-urile adăugate după reparație fac ca o eroare similară să blocheze doar zona afectată, nu toată platforma.

La momentul auditului mai rămăsese o singură zonă cu date simulate (setările de contact ale unui cămin). Am documentat-o explicit ca element deschis, nu am ascuns-o.

Ai de construit un portal cu mai multe tipuri de utilizatori sau ai o aplicație care cade fără un mesaj clar? În [sesiunea gratuită de 30 de minute](https://thenichesociety.ro/?from=studii-de-caz-comfortmap#book) ne uităm la situația ta și îți spunem sincer dacă are sens. Poți și să suni direct: [0733 045 833](tel:+40733045833). Vezi și cum lucrăm la [software personalizat](https://thenichesociety.ro/software-personalizat).

30 de minute, gratuit. Îți spunem sincer dacă are sens.

## Întrebări frecvente

### Ce diferență e față de un director static de cămine?

ComfortMap are profil dinamic, editat direct de fiecare cămin (descriere, poze, preț, facilități) — nu date publice statice neactualizate.

### Ce bug ați găsit și cum l-ați reparat?

Un update de sesiune post-autentificare eșua silențios din cauza unei politici de securitate a bazei de date; am mutat operația pe un canal cu permisiuni corecte și am adăugat error boundary-uri, astfel încât o eroare similară să afișeze un mesaj clar în loc de un crash.

### Cum sunt separate datele între cele trei roluri?

Prin Row Level Security la nivel de bază de date — fiecare rol vede doar datele la care are drept de acces, verificat la sursă, nu doar în interfață.

### Hai să vedem ce se poate automatiza la tine.

O sesiune gratuită de 30 de minute: îți spunem ce se poate automatiza, cât durează și cât costă, cu preț fix după discovery.

Răspundem în aceeași zi lucrătoare.
