lecoffre-front/docs/analyse.md
Omar Oughriss 6a51281d00
All checks were successful
build-and-push-int-dev / build_push (push) Successful in 10s
Replace 'ext' tag with 'int-dev'
2025-09-22 15:01:49 +02:00

4.0 KiB
Raw Permalink Blame History

Objet

Analyse synthétique de lecoffre-front (Next.js) : périmètre, dépendances, configuration, intégrations et points dattention.

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 dattention

  • 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 quaucun secret nest 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 derreurs)
  • Exposition de nombreuses variables NEXT_PUBLIC_* via env, publicRuntimeConfig et serverRuntimeConfig

Docker (multistage)

  • Étapes: deps (install), development (dev), builder (build), int-dev (runtime)
  • BuildKit SSH pour le-coffre-resources (clé non copiée dans limage)
  • Port runtime 3000; utilisateur nonroot 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 19alpine; 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 quaucune info sensible nest 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

  • Lauthentification IdNot appelle désormais le backend en POST avec le code dautorisation dans le corps JSON sur /api/v1/idnot/auth.
  • Ce changement évite des erreurs en reverse proxy liées à des segments dURL très longs.