# website-data Iframe dédiée à la **data** (données non clés) à `data.certificator.4nkweb.com`. Elle communique avec le **site** (parent) et avec **UserWallet** (clés, relais). ## Architecture ``` site <-> data (+notifications) <-> userwallet (sur les relais) ``` - **Site** : intègre l’iframe Data, envoie `contract`, `auth-request`, `data-request`, etc. - **Data** : iframe dédiée aux données (hors clés). Relaye contrat / auth vers UserWallet ; reçoit `login-proof`, `auth-response`, etc. et les transmet au site. Émet des `notification` (ex. `userwallet:login-proof`). - **UserWallet** : embarquée par Data, gère clés et relais (sync, signatures). Tourne sur les relais (api-relay). Data n’héberge **aucune clé** ; toute la crypto reste dans UserWallet. ## Prérequis - **UserWallet** : servi sur l’URL configurée (voir ci‑dessous). ## Installation ```bash cd website-data npm install npm run build ``` ## Développement ```bash npm run dev ``` Ouvre par défaut sur `http://localhost:3025`. En standalone, la page indique qu’il faut l’embedder dans un parent pour le flux site <-> data <-> userwallet. ## Configuration - **UserWallet** : `src/config.ts`, `USERWALLET_ORIGIN`. En dev : `http://localhost:3018`. En prod : `https://userwallet.certificator.4nkweb.com`. Override : `VITE_USERWALLET_ORIGIN`. - **Data** : `VITE_DATA_ORIGIN` pour la cible postMessage depuis le site (dev `http://localhost:3025`, prod `https://data.certificator.4nkweb.com`). ## Messages postMessage ### Site → Data | Type | Rôle | |------|------| | `contract` | Contrat + contrats_fils + actions → transmis à UserWallet | | `auth-request` | Demande d’auth → transmise à UserWallet | | `data-request` | Requête data (réponse `data-response`) | | `ping` | Réponse `pong` | ### Data → Site | Type | Rôle | |------|------| | `data-response` | Réponse à `data-request` | | `notification` | Événements (ex. `userwallet:login-proof`, `userwallet:auth-response`, `userwallet:error`) | | `pong` | Réponse à `ping` | | `error` | Erreur | | `login-proof`, `auth-response`, `service-status` | Relayés depuis UserWallet | ### Data ↔ UserWallet Data embarque UserWallet en iframe. Elle envoie `contract`, `auth-request` et reçoit `login-proof`, `auth-response`, `error`, `service-status`, qu’elle relaye au site. ## Notifications Data envoie des `notification` au site avec `payload: { kind, detail }`, notamment : - `userwallet:login-proof`, `userwallet:auth-response`, `userwallet:error` lors des événements UserWallet. - Un flux **relay** (non implémenté) pourra alimenter des `notification` à partir des relais (data non clés). ## Production - **Domaine** : `data.certificator.4nkweb.com` - **Port** : 3025 (configurable dans `vite.config.ts`). - **Déploiement** : build `dist/`, servir via Nginx / systemd comme pour `website-skeleton`. Voir `docs/` et infra 4NK pour proxy et certificats. ## Fichiers principaux - `src/config.ts` : origines Data et UserWallet. - `src/channel.ts` : types et helpers postMessage (site <-> data, data <-> userwallet). - `src/main.ts` : init, relay site/userwallet, notifications.