Files
motor-de-encuestas/docs/adr/ADR-002-stack-tecnologico.md

2.7 KiB
Raw Blame History

ADR-002 — Stack tecnológico y residencia de datos

  • Estado: Aceptado (stack) · Abierto (residencia de datos)
  • Fecha: (completar con fecha de commit)

Contexto

Se necesita un stack moderno, con experiencia móvil fluida, reportes potentes, soberanía de datos y sin lock-in caro. El volumen no justifica una suite SaaS profesional. Se tratan datos sensibles.

Decisión (stack)

Capa Tecnología Razón
Frontend Next.js (App Router) SSR/SSG, ecosistema maduro, buena DX, móvil sólido
Form engine React + react-hook-form + zod Validación tipada, flexible, sin vendor lock-in
Backend / datos Supabase (Postgres + Auth + RLS + Realtime) Postgres real para reportes SQL, RLS nativo multi-tenant, self-host posible
Auth Supabase Auth Anónimo / OAuth / magic link según encuesta
Reportes/gráficos ECharts (preferido) o Recharts Gratis, potente, tipos de gráfico variados (heatmap, polar, pirámide), no-SaaS
Deploy app Vercel Rápido para arrancar, migrable

Supabase es la pieza clave: Postgres real habilita los reportes cruzados (filtrar respuesta A por respuesta B), RLS da el aislamiento multi-tenant que ADR-001 exige, y el modo self-host (Docker) preserva la opción de soberanía total.

Decisión ABIERTA — residencia de los datos

Supabase Cloud aloja datos en regiones US/EU por defecto. Para un producto cuyo requisito explícito es soberanía y que trata datos sensibles de ciudadanos paraguayos, la ubicación física del dato no es neutral:

  • La Ley 7593/2025 tiene reglas de transferencia internacional (requiere nivel de protección adecuado o garantías apropiadas en el país destinatario).
  • "Soberanía total" sugiere self-host (Supabase en infraestructura propia/regional).

Opciones:

  1. Supabase Cloud (US/EU) — más rápido de arrancar, menos operación, pero transferencia internacional a evaluar legalmente y tensión con "soberanía".
  2. Supabase self-host (Docker, infra propia o proveedor regional) — soberanía real, más operación.
  3. Híbrido: arrancar en Cloud para el POC interno, migrar a self-host antes de producción con datos reales de ciudadanos.

No se cierra todavía. Requiere: (a) decisión del director sobre apetito de operación, (b) input legal sobre transferencia internacional bajo Ley 7593. Bloqueante para producción, no para v1 interno si v1 corre con datos de prueba/simulados.

Consecuencias

  • (+) Stack migrable; Supabase no es lock-in si se self-hostea.
  • () Mantener la opción self-host implica disciplina (no usar features Cloud-only sin registrarlo).
  • Registrar en este ADR cuándo y cómo se resuelve la residencia.