lecoffre-front/docs/ANALYSE-REPOSITORY.md
Debian Dev4 96f8788c08
All checks were successful
build-and-push-ext / build_push (push) Successful in 1m26s
ci: docker_tag=ext - Update documentation and analysis
2025-09-19 17:03:54 +00:00

6.7 KiB

Analyse du Repository lecoffre-front

Vue d'ensemble

Le projet lecoffre-front est une application Next.js développée en TypeScript pour la gestion de dossiers notariaux. Il s'agit d'une application frontend qui communique avec une API backend et intègre plusieurs services externes.

Structure du Repository

Architecture générale

lecoffre-front/
├── src/                    # Code source principal
│   ├── common/            # Code partagé
│   │   └── Api/          # Services API communs
│   ├── front/            # Code spécifique au frontend
│   │   ├── Api/          # Services API frontend
│   │   ├── Components/   # Composants React
│   │   ├── Config/       # Configuration par environnement
│   │   ├── Hooks/        # Hooks React personnalisés
│   │   ├── Services/     # Services métier
│   │   ├── Stores/       # Gestion d'état
│   │   ├── Themes/       # Thèmes et styles
│   │   └── Utils/        # Utilitaires
│   ├── pages/            # Pages Next.js
│   └── sdk/              # SDK et intégrations
├── docs/                 # Documentation
├── tests/                # Tests
├── public/               # Assets statiques
├── Dockerfile           # Configuration Docker
├── next.config.js       # Configuration Next.js
├── package.json         # Dépendances et scripts
└── temp.yaml           # Configuration Kubernetes temporaire

Technologies utilisées

  • Framework: Next.js 14.2.3
  • Language: TypeScript 4.9.5
  • UI: Material-UI (MUI) 5.11.13
  • Styling: Emotion, SASS
  • État: Context API / Hooks
  • Build: Docker multi-stage
  • Déploiement: Kubernetes

Variables d'Environnement

Variables principales

Le projet utilise un système de variables d'environnement préfixées par NEXT_PUBLIC_ pour la configuration runtime.

Configuration API Backend

NEXT_PUBLIC_BACK_API_PROTOCOL=https://
NEXT_PUBLIC_BACK_API_HOST=api.example.com
NEXT_PUBLIC_BACK_API_PORT=443
NEXT_PUBLIC_BACK_API_ROOT_URL=/api
NEXT_PUBLIC_BACK_API_VERSION=v1

Configuration Frontend

NEXT_PUBLIC_FRONT_APP_HOST=https://app.example.com
NEXT_PUBLIC_FRONT_APP_PORT=443

Intégrations externes

# IDNot (authentification)
NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT=/oauth/authorize
NEXT_PUBLIC_IDNOT_CLIENT_ID=client_id
NEXT_PUBLIC_IDNOT_BASE_URL=https://idnot.example.com
NEXT_PUBLIC_IDNOT_REDIRECT_URI=https://app.example.com/callback

# Docaposte
NEXT_PUBLIC_DOCAPOSTE_API_URL=https://api.docaposte.com

# 4NK (services blockchain)
NEXT_PUBLIC_4NK_URL=https://dev4.4nkweb.com
NEXT_PUBLIC_4NK_IFRAME_URL=https://dev4.4nkweb.com

# Hotjar (analytics)
NEXT_PUBLIC_HOTJAR_SITE_ID=123456
NEXT_PUBLIC_HOTJAR_VERSION=6

# Configuration système
NEXT_PUBLIC_API_URL=https://api.example.com
NEXT_PUBLIC_DEFAULT_VALIDATOR_ID=862406317a35064537ac959cb5d8bbdf4f849283b63db3ffa9904de2b3427c43:0
NEXT_PUBLIC_DEFAULT_STORAGE_URLS=https://dev3.4nkweb.com/storage

Gestion des environnements

Le projet supporte 4 environnements via la variable NEXTJS_APP_ENV_NAME:

  • development (par défaut)
  • staging
  • preprod
  • production

Chaque environnement a sa configuration dans src/front/Config/Module/:

  • development.json
  • staging.json
  • preprod.json
  • production.json

Configuration Docker

Multi-stage build

Le Dockerfile utilise un build multi-stage avec 3 cibles:

  1. deps: Installation des dépendances avec support SSH pour git.4nkweb.com
  2. development: Image de développement avec hot-reload
  3. builder: Build de production
  4. ext: Image de production finale

Variables d'environnement Docker

Toutes les variables NEXT_PUBLIC_* sont passées comme arguments de build et variables d'environnement runtime.

Sécurité

  • Utilisateur non-root (lecoffreuser avec UID 10000)
  • Support SSH agent pour cloner les dépendances privées
  • Cache npm pour optimiser les builds

Configuration Kubernetes

Déploiement

Le fichier temp.yaml contient la configuration Kubernetes complète:

  • Namespace: lecoffre
  • Service: lecoffre-front-svc (port 80 → 3000)
  • Deployment: lecoffre-front avec 1 replica
  • Ingress: app.stg.lecoffre.smart-chain.fr avec SSL

Gestion des secrets

  • Vault: Intégration HashiCorp Vault pour les secrets
  • External Secrets: Gestion automatique des secrets Docker
  • Service Account: lecoffre-front-sa avec permissions appropriées

Ressources

resources:
  limits:
    memory: 2Gi
  requests:
    cpu: 200m
    memory: 1Gi

Dépendances principales

Production

  • Next.js: 14.2.3 (framework React)
  • React: 18.2.0
  • Material-UI: 5.11.13 (composants UI)
  • TypeScript: 4.9.5
  • le-coffre-resources: v2.167 (ressources partagées)

Développement

  • ESLint: 8.36.0
  • Prettier: 2.8.7
  • SASS: 1.59.2

Intégrations

  • Google Tag Manager: Analytics
  • Hotjar: Heatmaps et enregistrements
  • Docaposte: Services postaux
  • 4NK: Services blockchain

Architecture de l'application

Gestion d'état

  • FrontendVariables: Singleton pour les variables d'environnement
  • Module: Configuration par environnement
  • Context API: Gestion d'état React

Communication API

  • DatabaseService: Service générique pour les appels API
  • BaseApiService: Service de base pour les API
  • Construction dynamique d'URLs: Basée sur les variables d'environnement

SDK et intégrations

  • Iframe: Communication avec les services 4NK
  • MessageBus: Bus de messages pour la communication inter-iframe
  • User: Gestion de l'authentification utilisateur
  • AuthModal: Modal d'authentification

Points d'attention

Sécurité

  • Variables d'environnement exposées côté client (préfixe NEXT_PUBLIC_)
  • Authentification via IDNot
  • Communication sécurisée avec les services 4NK

Performance

  • Build standalone Next.js
  • Cache npm dans Docker
  • Optimisation des images avec Sharp

Déploiement

  • Support multi-environnement
  • Intégration Vault pour les secrets
  • Monitoring avec Hotjar et GTM

Recommandations

  1. Documentation: Maintenir la documentation des variables d'environnement
  2. Tests: Étendre la couverture de tests
  3. Monitoring: Ajouter des métriques de performance
  4. Sécurité: Auditer régulièrement les dépendances
  5. CI/CD: Automatiser les déploiements avec validation des variables

Version actuelle

  • Application: v0.1.6 (package.json)
  • Frontend: v2.5.1 (version.json)
  • Docker: v0.1.9 (temp.yaml)

Analyse effectuée le $(date) - Repository lecoffre-front