diff --git a/docs/authentication.md b/docs/authentication.md deleted file mode 100644 index 1084c0a..0000000 --- a/docs/authentication.md +++ /dev/null @@ -1,39 +0,0 @@ -### Authentification 4NK (iframe + MessageBus) - -Cette application intègre un flux d’authentification 4NK encapsulé dans une `iframe` et orchestré côté client via `MessageBus`. - -### Composants impliqués - -- `components/4nk/AuthModal.tsx`: modal d’auth 4NK, gère l’état d’affichage, le chargement, les erreurs et la progression -- `components/4nk/Iframe.tsx` et `lib/4nk/IframeReference.ts`: gestion de l’`iframe` 4NK et de sa référence DOM -- `lib/4nk/MessageBus.ts`: protocole de communication `window.postMessage` avec l’iframe -- `lib/4nk/UserStore.ts`: stockage des tokens (sessionStorage) et pairingId utilisateur -- `lib/4nk/MockService.ts`: implémentations simulées pour le **mode démonstration** - -### Protocole côté client - -Séquence attendue côté UI lors d’une authentification standard : - -1. L’`iframe` se charge et envoie un message `LISTENING` -2. Le client envoie `REQUEST_LINK` -3. Réception `LINK_ACCEPTED` avec `accessToken` et `refreshToken` -4. Le client envoie `GET_PAIRING_ID` pour récupérer l’identifiant d’appairage - -Le `MessageBus` fournit des méthodes utilitaires supplémentaires (`validateToken`, `renewToken`, `getProcesses`, etc.) utilisées par l’espace `/dashboard`. - -### Mode démonstration (mock) - -- Sur `/login`, saisir l’identifiant d’entreprise `1234` active le **mode mock** dans `MessageBus` -- Les appels sont alors redirigés vers `MockService` (tokens et données factices), sans dépendre de l’iframe -- Le dashboard affiche alors des statistiques et listes récentes simulées - -### Configuration - -- `NEXT_PUBLIC_4NK_IFRAME_URL`: origine de l’iframe (ex. `https://dev.4nk.io`) -- Contrainte d’origine: `MessageBus` n’accepte que les événements provenant d’origines 4NK/localhost - -### Comportements principaux - -- Stockage des tokens via `UserStore.connect(accessToken, refreshToken)` -- Appairage: `getUserPairingId()` stocke l’ID côté `UserStore` -- Vérification en dashboard: `validateToken()` côté 4NK (ou mock) et affichage conditionnel diff --git a/docs/build-and-run.md b/docs/build-and-run.md deleted file mode 100644 index 49dc319..0000000 --- a/docs/build-and-run.md +++ /dev/null @@ -1,42 +0,0 @@ -### Installation, build et exécution - -Ces instructions couvrent l’installation des dépendances, l’exécution en développement et le build de production pour la partie Next.js. - -### Prérequis - -- Node.js 20+ recommandé -- Accès réseau pour installer les dépendances NPM - -### Installation des dépendances - -```bash -npm ci -``` - -### Exécution en développement - -```bash -npm run dev -``` - -### Build de production - -```bash -npm run build -``` - -### Démarrage de la production locale - -```bash -npm run start -``` - -### Variables d’environnement utiles - -- `NEXT_PUBLIC_4NK_IFRAME_URL` -- SMTP (`SMTP_HOST`, `SMTP_PORT`, `SMTP_SECURE`, `SMTP_USER`, `SMTP_PASSWORD`, `SMTP_FROM`) - -### Notes - -- `next.config.mjs` ignore les erreurs ESLint/TS au build (utile pour la démo) -- La présence d’un dossier `src/` + `vite.config.ts` est résiduelle et non utilisée par `npm run` à ce stade diff --git a/docs/dashboard.md b/docs/dashboard.md deleted file mode 100644 index 04a954f..0000000 --- a/docs/dashboard.md +++ /dev/null @@ -1,30 +0,0 @@ -### Dashboard (navigation, état, données mock) - -Le dossier `app/dashboard/` contient le layout et la page principale du tableau de bord. Il s’appuie sur l’auth 4NK et propose un **mode démonstration**. - -### Layout - -- Fichier: `app/dashboard/layout.tsx` -- Rôle: structure globale (sidebar, topbar, navigation, déconnexion) -- Auth: contrôle l’état authentifié via `UserStore` et `MessageBus` -- Mode démo: badge et mentions spécifiques lorsque `MessageBus.isInMockMode()` vaut `true` - -### Page principale - -- Fichier: `app/dashboard/page.tsx` -- Rôle: affichage des indicateurs et sections utiles (le chat est en tête de page) -- Données: simulées en **mode mock** (statistiques de stockage, dossiers, activités) - -### Navigation - -- Entrées: Tableau de bord, Documents, Dossiers, Recherche, Utilisateurs, Messages, Paramètres -- Dépendances: certaines pages peuvent être des squelettes à compléter - -### Points d’attention - -- En mode production, la récupération de données doit passer par `MessageBus` (et non mock) -- Les « cartes » Documents/Dossiers/Collaborateurs ont été notées à retirer dans un commentaire pour alléger l’UI -- **Chat intégré**: l’interface Messages est intégrée en tête de page (hauteur ~600px) -- **Sections retirées**: les blocs « Documents récents » et « Activité récente » ont été supprimés du dashboard -- **Ordonnancement**: Chat global « My Work » en premier, puis indicateurs (Stockage permanent, Stockage temporaire, Nouveaux dossiers) -- **Menu supprimé**: l’entrée de navigation « Messages » a été retirée de la sidebar; la route `/dashboard/chat` peut subsister sans lien direct diff --git a/docs/overview.md b/docs/overview.md deleted file mode 100644 index fdba26c..0000000 --- a/docs/overview.md +++ /dev/null @@ -1,59 +0,0 @@ -### Aperçu du dépôt - -Ce projet est une application web basée sur Next.js (App Router) avec React et TypeScript. Elle propose un site public (accueil, formation, contact) et un espace authentifié de type « dashboard » intégrant un flux d’authentification 4NK via iframe, avec un mode démonstration activable. - -### Pile technique - -- **Framework**: `next` 15 (App Router dans `app/`) -- **Langage**: `typescript` 5 -- **UI**: `react` 19, composants `shadcn/ui` (via `components/ui`), `lucide-react` -- **Styles**: `tailwindcss` 4, fichiers dans `styles/` et `app/globals.css` -- **Formulaires/Validation**: `react-hook-form` et `zod` (validation côté serveur dans les actions) -- **Emailing**: `nodemailer` (configuration SMTP via variables d’environnement) -- **Outils 4NK**: `lib/4nk` (MessageBus, UserStore, MockService, EventBus) -- **Divers**: `postcss`, `autoprefixer`, `date-fns`, `uuid` - -### Structure principale - -- `app/` - - `page.tsx`: page d’accueil publique (sections produit, sécurité, tarifs, liens vers formation, login) - - `layout.tsx`: layout racine de l’app (police, métadonnées, `globals.css`) - - `contact/page.tsx`: formulaire de contact (client) + action serveur `app/actions/contact.ts` - - `formation/page.tsx`: page formations (CTA vers devis); `formation/devis` (présent en dossier) si implémenté - - `login/page.tsx`: écran de login (auth 4NK via modal + mode démo) - - `dashboard/`: layout + pages (mock data en mode démo) - - `actions/`: actions serveur pour `contact` et `formation` -- `components/` - - `ui/`: primitives UI (boutons, cards, inputs, etc.) - - `4nk/`: composants spécifiques 4NK (`AuthModal`, `Iframe`, `DebugInfo` si utilisé) -- `lib/` - - `email.ts`: fonctions d’envoi d’emails (contact, formation) - - `4nk/`: bus de messages, stockage utilisateur, services mock -- `public/`: assets (logos, placeholders) -- `styles/`: styles globaux -- `next.config.mjs`: configuration Next (build sans bloquer sur ESLint/TS, images non optimisées) -- `tsconfig.json`: configuration TypeScript -- `package.json`: scripts Next (`dev`, `build`, `start`, `lint`) et dépendances -- `vite.config.ts` et `src/`: présence d’un squelette Vite non référencé par les scripts NPM (probablement résiduel) - -### Fonctionnalités clés - -- **Site public**: présentation du produit DocV, références, offre tarifaire, formations -- **Formulaire de contact**: envoi d’un email structuré via `nodemailer` (action serveur `submitContactForm`) -- **Demande de devis formation**: envoi d’un email structuré via `nodemailer` (action serveur `submitFormationForm`) -- **Authentification 4NK**: - - Modal d’authentification intégrant une `iframe` 4NK - - Protocole côté client via `MessageBus` (LISTENING → REQUEST_LINK → LINK_ACCEPTED → GET_PAIRING_ID) - - **Mode démonstration**: saisir `1234` comme identifiant d’entreprise sur `/login` active le mock local -- **Dashboard**: statistiques et listes « récentes » simulées en mode démo, navigation latérale, vérification token en mode non-mock - -### Variables d’environnement importantes - -- SMTP: `SMTP_HOST`, `SMTP_PORT`, `SMTP_SECURE`, `SMTP_USER`, `SMTP_PASSWORD`, `SMTP_FROM` -- Auth 4NK (UI): `NEXT_PUBLIC_4NK_IFRAME_URL` (ex. `https://dev.4nk.io`) - -### Points d’attention - -- `next.config.mjs` désactive les erreurs ESLint/TS au build (utile pour démo, à challenger pour la prod) -- Le dossier `src/` et `vite.config.ts` semblent non utilisés par les scripts; valider leur pertinence -- Les envois d’emails exigent des variables d’environnement valides côté serveur (build/exec) diff --git a/docs/users-invitations.md b/docs/users-invitations.md deleted file mode 100644 index 79cd704..0000000 --- a/docs/users-invitations.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Invitations utilisateurs (passphrase) ---- - -### Principe - -- **Composition**: 4 mots français « existants » + **code** aléatoire de 6 caractères. -- **Rôle**: obligatoire (Lecteur, Éditeur, Administrateur). -- **Contexte**: titre de document/dossier optionnel. -- **Lien**: un lien d’invitation est aussi généré et copiable. -- **Email**: champ optionnel pour envoyer l’invitation. - -### Saisie côté invité - -- **Étapes**: saisir les 4 mots dans l’ordre puis le code sur la page de connexion. -- **Alternative**: utiliser le **lien** d’invitation. - -### Détails d’implémentation - -- **Génération**: 4 mots uniques issus de la **liste BIP-39 (français)** + code alphanumérique (A..Z, 2..9) de 6 caractères. -- **Affichage**: la modale montre la passphrase, un bouton « Copier », le lien et un champ email d’envoi. -- **Email**: inclut rôle, contexte (si fourni), passphrase et éventuellement le lien. - -### Sécurité - -- **Standard**: liste standardisée BIP-39 (français), certains mots contiennent des accents. -- **Bonnes pratiques**: éviter le partage de la passphrase sur des canaux non sécurisés. - -### Limites connues - -- **Expiration**: pas d’expiration de lien/token par défaut. -- **Validation serveur**: non implémentée dans cette version.