# ADR-0002: separación estricta frontend/backend

- Estado: aceptado
- Fecha: 2026-07-28
- Dominio: `ventasimparables.co`

## Decisión

Vender+ Studio se distribuye como dos aplicaciones físicamente independientes.

1. `frontend/` contiene solo archivos ejecutables por el navegador: HTML, CSS, JavaScript, Vue y recursos estáticos.
2. `backend/` contiene PHP 8.3 OOP y expone únicamente JSON bajo `/api/v1`.
3. MySQL, proveedores de IA, email, pagos, webhooks y secretos son accesibles solo desde el backend.
4. La SPA consume `https://api.ventasimparables.co/api/v1`.
5. Los canales Telegram, WhatsApp y futuras aplicaciones móviles consumen el mismo contrato de API.

## Autenticación

R0 utiliza OTP por email. Tras verificar el desafío, la API entrega:

- access token Bearer de 15 minutos en el cuerpo JSON;
- refresh token opaco de 30 días en cookie HttpOnly;
- cookie CSRF legible por el cliente y validada contra la sesión. En producción su dominio es `.ventasimparables.co`; el refresh token continúa siendo host-only de la API.

El access token se mantiene en memoria. No se guarda en `localStorage`, `sessionStorage` ni cookies legibles por JavaScript.

El borrador de campaña tampoco usa el almacenamiento del navegador como fuente de verdad. Se persiste mediante endpoints Bearer, queda aislado por `workspace_id` y aplica control optimista de versión.

## Despliegue

Se recomiendan dos document roots en la misma cuenta cPanel. La API puede migrar posteriormente a otro host sin modificar las vistas; solo cambia `frontend/assets/js/config.js`.

## Consecuencias

- PHP deja de participar en el render del documento HTML.
- Se elimina el antiguo directorio mixto `public/`.
- CORS y cookies cross-origin pasan a ser parte explícita del contrato.
- Cada consumidor puede versionar y autenticar sus peticiones de forma uniforme.
