4.0 KiB
4.0 KiB
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 etsdk
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
: publieNEXT_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_*
etNEXT_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_*
viaenv
,publicRuntimeConfig
etserverRuntimeConfig
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.