### Objet Analyse synthétique de `lecoffre-front` (Next.js) : périmètre, dépendances, configuration, intégrations et points d’attention. ### Périmètre et stack - **Framework**: Next.js 14 (React 18), rendu côté serveur désactivable selon pages - **Langage**: TypeScript - **Styles**: SCSS + MUI (@mui/material), Emotion - **Bundle**: `output: 'standalone'`, `basePath: '/lecoffre'` ### Arborescence notable - **`src/front/`**: API client (services, entités, SDK) et composants UI (DesignSystem, Layouts, Elements) - **`pages/`**: routes Next (tableau client, gestion utilisateurs, dossiers, documents, souscriptions) - **`src/common/Api/LeCoffreApi`**: modules Admin/Customer/Notary/SuperAdmin et `sdk` - **`src/front/Stores/`**: stores locaux (User, Customer, Window, Toasts) - **`src/front/Services/`**: services utilitaires (JWT, PDF, Watermark, Crypto, Cookie) ### Configuration et variables - **`next.config.js`**: publie `NEXT_PUBLIC_*` aux clients et serveur; `reactStrictMode: false`; `ignoreBuildErrors: true` - **BasePath**: `/lecoffre` (impacte le routage et les assets) - **Intégrations**: Hotjar, GTM, Docaposte, 4NK (iframe/URL), Idnot (OAuth) ### Dépendances clés - **UI**: `@mui/material`, `@emotion/*`, `react-select`, `react-toastify` - **Utilitaires**: `jwt-decode`, `file-saver`, `jszip`, `pdf-lib`, `sass`, `sharp` - **Ressources**: `le-coffre-resources` (dépôt Git 4NK) ### Intégrations externes (indiciaires) - **Back**: via `NEXT_PUBLIC_BACK_API_*` et `NEXT_PUBLIC_API_URL` - **Idnot**: endpoints OAuth (authorize, base_url, redirect_uri) - **Docaposte**: `NEXT_PUBLIC_DOCAPOSTE_API_URL` ### Points d’attention - **TypeScript**: `ignoreBuildErrors: true` masque des erreurs de typage - **BasePath**: vérifier la cohérence côté Nginx et lors du déploiement - **Ressources Git**: accès SSH requis pour `le-coffre-resources` - **Sécurité**: exposition de multiples `NEXT_PUBLIC_*` (vérifier qu’aucun secret n’est divulgué) ### Tests et qualité - **Scripts**: `build` sans lint, `lint` séparé, `format` ciblé `src/` - **`tests/`**: présent (à enrichir avec scénarios e2e/smoke sur pages principales) ### Déploiement - **Dockerfile**: présent (build Next standalone) - **Intégration**: orchestré via `lecoffre_node` (voir analyse dédiée) ## Scripts npm, build et configuration ### Scripts - **dev**: `next dev` - **build**: `NEXT_TELEMETRY_DISABLED=1 next build --no-lint` - **start**: `next start` - **lint**: `next lint` - **format**: `prettier --write src` ### next.config.js - `output: 'standalone'`, `basePath: '/lecoffre'` - `typescript.ignoreBuildErrors: true` (risque: masquage d’erreurs) - Exposition de nombreuses variables `NEXT_PUBLIC_*` via `env`, `publicRuntimeConfig` et `serverRuntimeConfig` ### Docker (multi‑stage) - Étapes: `deps` (install), `development` (dev), `builder` (build), `int-dev` (runtime) - BuildKit SSH pour `le-coffre-resources` (clé non copiée dans l’image) - Port runtime 3000; utilisateur non‑root `lecoffreuser` ### Dépendances (extraits) - UI: `@mui/material`, `@emotion/*`, `react-select`, `react-toastify` - Utilitaires: `jwt-decode`, `file-saver`, `jszip`, `pdf-lib`, `sass`, `sharp` - Ressources: `le-coffre-resources` (SSH Git 4NK) - Versions Node/Next: Node 19‑alpine; Next `^14.2.3` ## Risques et recommandations - Désactiver `ignoreBuildErrors` et corriger les erreurs TypeScript avant build - Envisager Node LTS (20/22) pour les images - Vérifier qu’aucune info sensible n’est exposée via `NEXT_PUBLIC_*` - Assurer la cohérence `basePath` `/lecoffre` avec Nginx et les liens internes - Introduire du code splitting ciblé (`React.lazy`/`Suspense`) sur pages lourdes - Centraliser l’état (Redux/Context) pour limiter le prop drilling dans `src/front` ## Changements IdNot - L’authentification IdNot appelle désormais le backend en POST avec le code d’autorisation dans le corps JSON sur `/api/v1/idnot/auth`. - Ce changement évite des erreurs en reverse proxy liées à des segments d’URL très longs.