Genera solicitudes legales de rectificación o supresión de datos personales en segundos.
- Qué es Unlink
- Principios
- Características
- Cómo funciona
- Stack
- Arquitectura
- Local
- Producción
- Moderación
Unlink es una herramienta de código abierto para ejercer tus derechos ARCO (Acceso, Rectificación, Cancelación y Oposición) ante cualquier entidad española.
Sin registros. Sin datos enviados a servidores. Sin inteligencia artificial. Todo el procesamiento ocurre en tu navegador. Solo tú y tu derecho a la protección de datos.
- Privacidad por diseño — Tus datos personales nunca salen de tu dispositivo.
- Transparencia total — Código 100% auditable. Sin dependencias opacas.
- Derechos reales — No es una herramienta técnica. Es un activador ciudadano.
| Característica | Descripción |
|---|---|
| Plantillas legales | Correos conformes al RGPD y LOPDGDD, listos para enviar. |
| Búsqueda DPO | Rastreo ético de emails de protección de datos, respetando robots.txt. |
| Directorio colaborativo | Emails aportados por la comunidad, moderados antes de publicarse. |
| Sin IA | Sin modelos de lenguaje, sin tokens de API, sin costes ocultos. |
| Panel de moderación | Revisa y aprueba sugerencias con un token seguro. |
La herramienta sigue un flujo guiado en tres pasos. La captura general muestra la vista principal de la app en formato vertical.
- Paso 1: Entidad de destino
- El usuario selecciona la empresa o entidad sobre la que quiere ejercer el derecho de supresión o rectificación.
- Si elige una entidad del listado, la app intenta recuperar emails relacionados con protección de datos.
- Si no hay resultados automáticos, puede usar Comprobar en Google para abrir una búsqueda con
nombre de la entidad + protección de datos. - Cuando aparece un email sugerido, el usuario puede verificarlo con el enlace comprobar junto al correo, que abre una búsqueda en el navegador para confirmar que sigue vigente.
- Paso 2: Acción deseada
- Eliminar mis datos: el usuario completa sus datos identificativos y de contacto para generar una solicitud de supresión.
- Modificar mis datos: además de los datos personales, se selecciona el campo a corregir en Dato a modificar y se introduce el valor correcto en Dato corregido.
- Si se selecciona DNI/NIE como campo a modificar, la interfaz recuerda que deberá adjuntarse documentación justificativa.
- Paso 3: Sus datos
- Se completan los campos personales obligatorios: Nombre completo, DNI/NIE, Email y Teléfono.
- Cuando la información requerida está completa, se habilita el botón Generar y Solicitar.
- Al pulsarlo, la app abre el proveedor de correo del dispositivo con un borrador ya redactado y listo para enviar.
Frontend: React 19 · TypeScript · Tailwind CSS 4 · Framer Motion · Lucide React
Backend: Node.js · Express · TypeScript · Heurística propia (sin APIs de terceros)
Frontend (React + Vite)
|
+-- /api/dpo-email → Búsqueda de emails DPO (rastreo con caché)
+-- /api/approved → Directorio público
+-- /api/track → Registro anónimo de visitas
+-- /api/empresas/stats → Estadísticas anónimas de uso
+-- /api/admin/stats → Métricas agregadas (token)
+-- /admin → Panel de moderación y estadísticas
Backend (Express)
|
+-- data/pending.json → Sugerencias en revisión
+-- data/approved.json → Directorio aprobado
+-- data/audit.log → Auditoría de moderación
+-- data/stats.json → Estadísticas de uso (runtime, no versionado)
Para resistir abusos y picos de tráfico (DoS), el backend incluye, sin dependencias externas:
- Rate limiting por IP con ventana deslizante: límite global de la API y uno más estricto para la búsqueda DPO (que genera peticiones salientes).
- Caché de rastreos y tope de búsquedas concurrentes para evitar la amplificación de peticiones.
- Límite de tamaño del cuerpo (16 kB) y cabeceras de seguridad
(
nosniff,X-Frame-Options,Referrer-Policy,Permissions-Policy). - Protección anti-SSRF: solo se rastrean dominios públicos, nunca hosts internos ni IPs literales.
Se registran de forma anónima y agregada (sin datos personales ni IPs):
visitas, solicitudes generadas, tipo de acción (supresión/rectificación),
búsquedas de email y un ranking de empresas. Visibles en /admin con el
ADMIN_TOKEN.
Requisito: Node.js 20+
npm install
# Crea un `.env.local` con `ADMIN_TOKEN`
cp .env.example .env.local
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
npm run devApp en http://localhost:3000 · Panel en http://localhost:3000/admin
Frontend (Vercel):
- Framework:
Other - Build:
vite build - Output:
dist - Env: define las variables del frontend que necesite la app
Backend (Render / Railway):
- Start:
node dist/server.cjs - Env:
ADMIN_TOKEN(se inyecta automáticamente desde el panel de entorno) - Importante: Requiere persistencia de disco para
data/.
Token admin
- Genera uno nuevo con
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))" - Guárdalo en
.env.localpara desarrollo y en el panel de entorno de Vercel para producción - Si lo cambias, actualiza el valor local y el de producción al mismo tiempo
No subir secretos a GitHub
.env,.env.localy variantes locales están ignoradas por Git- El archivo real debe quedar solo en tu máquina o en Vercel, nunca en el repo
- Accede a
/admin. - Introduce tu
ADMIN_TOKEN. - Revisa, aprueba o rechaza sugerencias.
Consulta CONTRIBUTING.md. Toda aportación pasa por revisión manual.
- Código: MIT (LICENSE)
- Datos: CC BY 4.0 (DATA_LICENSE.md)
Desarrollada con compromiso por Elian De Valois
"La tecnología debe servir a los derechos de las personas, no al revés."




