### 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)