Files
motor-de-encuestas/ADR-002-stack-tecnologico.md
2026-05-31 04:33:07 -03:00

53 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.