Marco legal aplicable
Nvito opera en Mexico y maneja datos personales de invitados. La ley aplicable es la Ley Federal de Protección de Datos Personales en Posesion de los Particulares (LFPDPPP) y su Reglamento.
Datos personales que maneja Nvito
Datos de organizadores (usuarios registrados)
| Dato | Clasificación | Donde se almacena | Encriptado? |
|---|---|---|---|
| Nombre | Personal | BD (User) | No (necesario para display) |
| Personal | BD (User) + Clerk | No en BD, si en Clerk | |
| Telefono | Personal | BD (User) | Si (AES-256-GCM) |
| Avatar | Personal | Clerk + CDN | No (imagen publica) |
Datos de invitados
| Dato | Clasificación | Donde se almacena | Encriptado? |
|---|---|---|---|
| Nombre y apellido | Personal | BD (Guest) | Si (AES-256-GCM) |
| Personal | BD (Guest) | Si (AES-256-GCM) | |
| Telefono | Personal | BD (Guest) | Si (AES-256-GCM) |
| Restricciones alimentarias | Sensible | BD (Guest/RSVP) | No |
| Respuestá RSVP | Personal | BD (RSVP) | No |
| IP de respuesta | Personal | BD (RSVP) | No |
| User Agent | Técnico | BD (RSVP) | No |
| Fotos subidas | Personal | CDN (R2) | No |
| Mensajes de audio | Personal | CDN (R2) | No |
Datos de pagos
| Dato | Clasificación | Donde se almacena | Encriptado? |
|---|---|---|---|
| Datos de tarjeta | Financiero | Stripe (nunca en Nvito) | Si (Stripe PCI) |
| Historial de pagos | Financiero | BD (Payment) + Stripe | No en BD (solo IDs) |
Medidas de protección implementadas
Encriptacion
- En reposo: AES-256-GCM para emails, teléfonos y nombres de invitados
- En transito: HTTPS obligatorio (HSTS con max-age 1 ano)
- En cookies: AES-256-GCM para JWT en PWA
- Key derivation: scrypt con salt de 64 caracteres hex
Control de acceso
- Multi-tenancy con RLS: cada organización solo ve sus datos
- RBAC con 80+ permisos granulares
- Clerk para autenticación con 2FA disponible
- JWT con expiración corta (15 min)
Sanitizacion de logs
- 35 patrones de datos sensibles redactados automáticamente en logs
- Emails y teléfonos sanitizados con regex
- IDs usados en lugar de nombres en logs de producción
Minimizacion de datos
- Solo se recolectan datos necesarios para la funcionalidad
- IPs de RSVP se almacenan para seguridad (detección de abuso)
- User Agent se almacena para analytics básico
Derechos ARCO
La LFPDPPP otorga a los titulares de datos los derechos ARCO:
Acceso
El titular puede solicitar conocer que datos suyos tiene Nvito.
Estado: Parcial. Los organizadores pueden ver sus datos en el dashboard. Los invitados NO tienen portal de autoservicio para ver sus datos.
Pendiente: Implementar endpoint o mecanismo para que un invitado pueda solicitar sus datos proporcionando su email.
Rectificacion
El titular puede solicitar correccion de datos inexactos.
Estado: Parcial. Los organizadores pueden editar datos de invitados. Los invitados pueden actualizar su RSVP pero no otros datos.
Pendiente: Permitir que invitados corrijan su nombre/email/teléfono via enlace seguro.
Cancelación (eliminación) — IMPLEMENTADO
El titular puede solicitar la eliminación de sus datos.
Estado: Implementado. Endpoint DELETE /v1/guests/:id/personal-data anonimiza PII del invitado (nombre, email, teléfono, hashes, restricciones alimentarias, alergias, movilidad) manteniendo el registro para estadisticas (id, eventId, status, groupSize, createdAt). Ejecuta en transacción atomica y limpia datos relacionados (QR passes, asignaciones de mesa, tokens de acceso, mensajes, audio guestbook). Requiere autenticación + permiso guests:delete:assigned.
Oposición — IMPLEMENTADO
El titular puede oponerse al tratamiento de sus datos para comunicaciones.
Estado: Implementado con 3 mecanismos:
-
Endpoint autenticado:
PATCH /v1/guests/:id/communication-preferences— permite al organizador cambiar el estado de opt-out de un invitado. Requiere permisoguests:update:assigned. -
Endpoint público:
POST /v1/guests/public/opt-out— permite a invitados sin cuenta solicitar opt-out proporcionando email + eventId. Rate limited a 5 req/min por IP. Respuestá generica para no revelar existencia del email. -
Filtro en dispatchers: Los servicios de comunicación (email, WhatsApp, SMS, chatbot RSVP) filtran automáticamente invitados con
optOutCommunications = true. Campoopt_out_communicationsagregado al modelo Guest con migración Prisma.
Todas las acciones ARCO quedan registradas en AuditLog con acciones arco_erase, arco_opt_out, arco_opt_in, arco_public_opt_out.
Aviso de privacidad — IMPLEMENTADO
La LFPDPPP requiere un aviso de privacidad. Disponible en nvito.mx/privacidad.
El aviso cubre las 11 secciones requeridas: identidad del responsable, datos recopilados, finalidades, transferencias a terceros, derechos ARCO, medidas de seguridad, cookies y tecnologias, conservacion de datos, consentimiento, modificaciones y autoridad competente (INAI).
Consentimiento
Organizadores
- Consentimiento implicito al registrarse y aceptar terminos de servicio
- Pendiente: Crear terminos de servicio formales
Invitados
- El organizador importa datos de invitados (email, teléfono, nombre)
- El invitado NO da consentimiento explicito a Nvito
- Riesgo legal: El organizador es responsable de tener consentimiento de sus invitados
- Acción requerida: Agregar clausula en terminos de servicio donde el organizador declara tener consentimiento de los invitados cuyos datos importa
Checklist de compliance
Implementado
- Encriptacion de PII en BD (AES-256-GCM)
- HTTPS obligatorio (HSTS)
- Multi-tenancy con aislamiento de datos
- Sanitizacion de PII en logs
- Soft delete en toda la BD
- Pagos procesados por Stripe (PCI compliant)
- Aviso de privacidad formal (nvito.mx/privacidad)
- Endpoint de "derecho al olvido" (DELETE /v1/guests/:id/personal-data)
- Opción de opt-out de comunicaciones (3 mecanismos)
- Filtro opt-out en dispatchers de comunicación
Pendiente
- Terminos de servicio
- Clausula de consentimiento para organizadores
- Endpoint de acceso ARCO para invitados (consulta de datos propios)
- Endpoint de rectificacion ARCO para invitados (correccion de datos)
- Registro de tratamiento de datos (requerido por LFPDPPP)