Skip to main content
HoldingInsurtech
Back to work
Applications2026Private project

Familia Viñas Cheesman

Private application with database-level security

A five-generation family tree where privacy is not cosmetic: the barrier lives in Postgres.

Restricted access — we can walk you through it on a call
generations in the tree
5generations in the tree
access roles
5access roles
data exposed without a session
0data exposed without a session
01

The challenge

A family archive with names, dates of birth, phone numbers, emails and photos of minors. The usual approach — blur the content with CSS and ask for a login — protects nothing: the name still travels to the browser and can be read from view-source, or by asking the API with the anonymous key, which is public by design. Any solution that let the data leave the server was, plainly, a leak.

02

The solution

We moved the restriction into the database. Public views do not send names: they return a placeholder, so anyone without a session cannot read them even by inspecting the network response. Row-level security policies filter record by record according to who you are, across five distinct roles (no session, pending, member, admin, revoked). Photos live in a private bucket and are served with one-hour signed URLs. Signing up with email, Google or Facebook always ends in a pending state until the admin approves and links the account to a person in the tree. The blur is still there, but it is purely cosmetic.

03

The outcome

A genuinely private site, not a public site with a private area. Beyond the per-person profile it includes a shared gallery, an automatic timeline, a surname glossary, a country map and birthday email reminders driven by a daily scheduled job.

Facing something similar?

Tell us what your business needs and we will tell you whether we can solve it, at what scope and in what timeframe.

Message us on WhatsApp