ADR-004: Frontend web
Estado
Accepted — 2026-08-23
Contexto
Superficies V1: marketing/landing (más adelante), auth, panel finance (customers, invoices, inbox, sequences, promises, disputes, dashboard). Usuarios en desktop/laptop. SEO importa en landing, no en el app autenticado.
Decisión
Next.js + React + TypeScript.
Librerías alineadas a IVPrior:
- Tailwind CSS
- shadcn/ui
- TanStack Query
- React Hook Form + Zod
- Zustand solo si hay estado UI global liviano
App: apps/web. Organización por feature (ADR-007, ADR-011).
Alternativas
| Opción | Nota |
|---|---|
| Next.js | Elegida — App Router, TS, factory |
| Vite SPA | Suficiente para el panel; peor para landing/SEO |
| Angular / Vue | Rompe unicidad TS/React con IVPrior |
Consecuencias
- Convención Server vs Client Components documentada en el primer slice UI.
- Design tokens en
packages/uicuando exista el scaffolding. - Inglés en UI V1 (ICP Estados Unidos).