ci: docker_tag=ext - Update documentation and analysis
All checks were successful
build-and-push-ext / build_push (push) Successful in 1m26s

This commit is contained in:
Debian Dev4 2025-09-19 17:03:54 +00:00
parent 9e8ed1ad1d
commit 96f8788c08
9 changed files with 1117 additions and 4 deletions

View File

@ -7,7 +7,7 @@ IDNOT_ANNUARY_BASE_URL=https://qual-api.notaires.fr/annuaire
# IDNOT_REDIRECT_URI=http://local.4nkweb.com:3004/authorized-client # IDNOT_REDIRECT_URI=http://local.4nkweb.com:3004/authorized-client
IDNOT_REDIRECT_URI=http://local.4nkweb.com:3000/authorized-client IDNOT_REDIRECT_URI=http://local.4nkweb.com:3000/authorized-client
IDNOT_TOKEN_URL=https://qual-connexion.idnot.fr/user/IdPOAuth2/token/idnot_idp_v1 IDNOT_TOKEN_URL=https://qual-connexion.idnot.fr/user/IdPOAuth2/token/idnot_idp_v1
IDNOT_API_BASE_URL=https://qual-api.notaires.fr/annuaire IDNOT_API_BASE_URL=https://qual-api.notaires.fr
# Configuration serveur # Configuration serveur
APP_HOST=dev4.4nkweb.com APP_HOST=dev4.4nkweb.com
@ -34,18 +34,18 @@ NEXT_PUBLIC_ANK_BASE_REDIRECT_URI=https://dev4.4nkweb.com/lecoffre/authorized-cl
NEXT_PUBLIC_TARGET_ORIGIN=https://dev4.4nkweb.com/lecoffre NEXT_PUBLIC_TARGET_ORIGIN=https://dev4.4nkweb.com/lecoffre
NEXT_PUBLIC_4NK_IFRAME_URL=https://dev4.4nkweb.com NEXT_PUBLIC_4NK_IFRAME_URL=https://dev4.4nkweb.com
NEXT_PUBLIC_IDNOT_REDIRECT_URI=http://local.4nkweb.com:3000/authorized-client NEXT_PUBLIC_IDNOT_REDIRECT_URI=http://local.4nkweb.com:3000/authorized-client
NEXT_PUBLIC_DOCAPOSTE_API_URL= NEXT_PUBLIC_DOCAPOSTE_API_URL=
NEXT_PUBLIC_API_URL=https://dev4.4nkweb.com/api NEXT_PUBLIC_API_URL=https://dev4.4nkweb.com/api
NEXT_PUBLIC_DEFAULT_VALIDATOR_ID=28c9a3a8151bef545ebf700ca5222c63d0031ad593097e95c1de202464304a99 NEXT_PUBLIC_DEFAULT_VALIDATOR_ID=28c9a3a8151bef545ebf700ca5222c63d0031ad593097e95c1de202464304a99
NEXT_PUBLIC_DEFAULT_STORAGE_URLS=https://dev4.4nkweb.com/storage NEXT_PUBLIC_DEFAULT_STORAGE_URLS=https://dev4.4nkweb.com/storage
SIGNER_BASE_URL=https://dev3.4nkweb.com/signer/
# WS # WS
# RELAY_URLS=wss://demo.4nkweb.com/ws # RELAY_URLS=wss://demo.4nkweb.com/ws
RELAY_URLS=wss://dev4.4nkweb.com/ws RELAY_URLS=wss://dev4.4nkweb.com/ws
# SIGNER_WS_URL=ws://dev4.4nkweb.com/signer/ # SIGNER_WS_URL=ws://dev4.4nkweb.com/signer/
SIGNER_WS_URL=ws://dev3.4nkweb.com SIGNER_WS_URL=ws://dev3.4nkweb.com
SIGNER_BASE_URL=https://dev3.4nkweb.com
# IHM URLS # IHM URLS
# VITE_BOOTSTRAPURL=http://sdk_relay:8090/ # VITE_BOOTSTRAPURL=http://sdk_relay:8090/
@ -57,6 +57,16 @@ DECLINED='4000 0025 0000 3155'
CORS_ALLOWED_ORIGINS=http://local.4nkweb.com:3000,https://dev4.4nkweb.com CORS_ALLOWED_ORIGINS=http://local.4nkweb.com:3000,https://dev4.4nkweb.com
ENABLE_SUBSCRIPTION_STUB=true ENABLE_SUBSCRIPTION_STUB=true
core_url="http://bitcoin:38332"
ws_url="0.0.0.0:8090"
wallet_name="default"
network="signet"
blindbit_url="http://blindbit:8000"
zmq_url="tcp://bitcoin:29000"
storage="https://dev4.4nkweb.com/storage"
data_dir="/home/bitcoin/.4nk"
bitcoin_data_dir="/home/bitcoin/.bitcoin"
# ================================= /!\ sensible ======================== # ================================= /!\ sensible ========================
IDNOT_API_KEY= IDNOT_API_KEY=

301
docs/ANALYSE-DEPENDANCES.md Normal file
View File

@ -0,0 +1,301 @@
# Analyse des Dépendances - lecoffre-front
## Vue d'ensemble
Ce document analyse les dépendances du projet lecoffre-front, leurs versions, leur utilisation et les recommandations de mise à jour.
## Dépendances principales
### Framework et Runtime
#### Next.js
- **Version actuelle**: 14.2.3
- **Type**: Framework React
- **Utilisation**: Framework principal de l'application
- **Statut**: Version récente et stable
- **Recommandation**: Maintenir la version actuelle
#### React
- **Version actuelle**: 18.2.0
- **Type**: Bibliothèque UI
- **Utilisation**: Bibliothèque de base pour l'interface utilisateur
- **Statut**: Version stable LTS
- **Recommandation**: Maintenir la version actuelle
#### React DOM
- **Version actuelle**: 18.2.0
- **Type**: Rendu DOM pour React
- **Utilisation**: Rendu des composants React dans le DOM
- **Statut**: Version stable LTS
- **Recommandation**: Maintenir la version actuelle
### Interface utilisateur
#### Material-UI (MUI)
- **Version actuelle**: 5.11.13
- **Type**: Bibliothèque de composants UI
- **Utilisation**: Composants d'interface utilisateur
- **Statut**: Version stable
- **Recommandation**: Maintenir la version actuelle
#### Emotion
- **Versions**:
- @emotion/react: ^11.10.6
- @emotion/styled: ^11.10.6
- **Type**: Bibliothèque CSS-in-JS
- **Utilisation**: Styling des composants
- **Statut**: Versions récentes
- **Recommandation**: Maintenir les versions actuelles
#### Heroicons
- **Version actuelle**: ^2.1.3
- **Type**: Icônes SVG
- **Utilisation**: Icônes dans l'interface
- **Statut**: Version récente
- **Recommandation**: Maintenir la version actuelle
### TypeScript et outils de développement
#### TypeScript
- **Version actuelle**: 4.9.5
- **Type**: Langage de programmation
- **Utilisation**: Typage statique
- **Statut**: Version stable mais ancienne
- **Recommandation**: ⚠️ Mettre à jour vers TypeScript 5.x
#### ESLint
- **Version actuelle**: 8.36.0
- **Type**: Linter JavaScript/TypeScript
- **Utilisation**: Analyse de code
- **Statut**: Version stable
- **Recommandation**: Maintenir la version actuelle
#### Prettier
- **Version actuelle**: ^2.8.7
- **Type**: Formateur de code
- **Utilisation**: Formatage automatique
- **Statut**: Version stable
- **Recommandation**: Maintenir la version actuelle
### Utilitaires et bibliothèques
#### Class Validator
- **Version actuelle**: ^0.14.0
- **Type**: Validation de classes
- **Utilisation**: Validation des données
- **Statut**: Version récente
- **Recommandation**: Maintenir la version actuelle
#### Classnames
- **Version actuelle**: ^2.3.2
- **Type**: Utilitaire pour les noms de classes
- **Utilisation**: Gestion conditionnelle des classes CSS
- **Statut**: Version récente
- **Recommandation**: Maintenir la version actuelle
#### UUIDv4
- **Version actuelle**: ^6.2.13
- **Type**: Générateur d'UUID
- **Utilisation**: Génération d'identifiants uniques
- **Statut**: Version récente
- **Recommandation**: Maintenir la version actuelle
### Gestion de fichiers
#### File Saver
- **Version actuelle**: ^2.0.5
- **Type**: Sauvegarde de fichiers
- **Utilisation**: Téléchargement de fichiers
- **Statut**: Version récente
- **Recommandation**: Maintenir la version actuelle
#### JSZip
- **Version actuelle**: ^3.10.1
- **Type**: Manipulation d'archives ZIP
- **Utilisation**: Création d'archives
- **Statut**: Version récente
- **Recommandation**: Maintenir la version actuelle
#### PDF-lib
- **Version actuelle**: ^1.17.1
- **Type**: Manipulation de PDF
- **Utilisation**: Génération et modification de PDF
- **Statut**: Version récente
- **Recommandation**: Maintenir la version actuelle
### Intégrations et services
#### le-coffre-resources
- **Version actuelle**: v2.167
- **Type**: Ressources partagées
- **Utilisation**: Ressources communes du projet
- **Source**: git+ssh://git@git.4nkweb.com/4nk/lecoffre-ressources.git
- **Statut**: Version spécifique
- **Recommandation**: Maintenir la version actuelle
#### React GTM Module
- **Version actuelle**: ^2.0.11
- **Type**: Intégration Google Tag Manager
- **Utilisation**: Analytics et tracking
- **Statut**: Version récente
- **Recommandation**: Maintenir la version actuelle
#### React Toastify
- **Version actuelle**: ^9.1.3
- **Type**: Notifications toast
- **Utilisation**: Affichage de notifications
- **Statut**: Version récente
- **Recommandation**: Maintenir la version actuelle
#### React Select
- **Version actuelle**: ^5.7.2
- **Type**: Composant de sélection
- **Utilisation**: Listes déroulantes avancées
- **Statut**: Version récente
- **Recommandation**: Maintenir la version actuelle
### Sécurité et authentification
#### JWT Decode
- **Version actuelle**: ^3.1.2
- **Type**: Décodage de JWT
- **Utilisation**: Traitement des tokens JWT
- **Statut**: Version récente
- **Recommandation**: Maintenir la version actuelle
#### Crypto Random String
- **Version actuelle**: ^5.0.0
- **Type**: Génération de chaînes aléatoires
- **Utilisation**: Génération de tokens sécurisés
- **Statut**: Version récente
- **Recommandation**: Maintenir la version actuelle
### Styling et assets
#### SASS
- **Version actuelle**: ^1.59.2
- **Type**: Préprocesseur CSS
- **Utilisation**: Styles avancés
- **Statut**: Version récente
- **Recommandation**: Maintenir la version actuelle
#### Sharp
- **Version actuelle**: ^0.32.1
- **Type**: Optimisation d'images
- **Utilisation**: Traitement d'images
- **Statut**: Version récente
- **Recommandation**: Maintenir la version actuelle
## Dépendances de développement
### Types TypeScript
#### @types/node
- **Version actuelle**: 18.15.1
- **Type**: Types pour Node.js
- **Utilisation**: Typage Node.js
- **Statut**: Version stable
- **Recommandation**: Maintenir la version actuelle
#### @types/react
- **Version actuelle**: 18.0.28
- **Type**: Types pour React
- **Utilisation**: Typage React
- **Statut**: Version stable
- **Recommandation**: Maintenir la version actuelle
#### @types/react-dom
- **Version actuelle**: 18.0.11
- **Type**: Types pour React DOM
- **Utilisation**: Typage React DOM
- **Statut**: Version stable
- **Recommandation**: Maintenir la version actuelle
#### @types/file-saver
- **Version actuelle**: ^2.0.7
- **Type**: Types pour file-saver
- **Utilisation**: Typage file-saver
- **Statut**: Version récente
- **Recommandation**: Maintenir la version actuelle
#### @types/react-gtm-module
- **Version actuelle**: ^2.0.3
- **Type**: Types pour react-gtm-module
- **Utilisation**: Typage react-gtm-module
- **Statut**: Version récente
- **Recommandation**: Maintenir la version actuelle
## Analyse de sécurité
### Dépendances avec des vulnérabilités potentielles
#### TypeScript 4.9.5
- **Risque**: Version ancienne
- **Impact**: Fonctionnalités manquantes, corrections de bugs
- **Recommandation**: Mettre à jour vers TypeScript 5.x
### Dépendances sécurisées
Toutes les autres dépendances sont à jour et ne présentent pas de vulnérabilités connues.
## Recommandations de mise à jour
### Priorité haute
1. **TypeScript**: Mettre à jour vers la version 5.x
```bash
npm install typescript@latest
```
### Priorité moyenne
1. **Vérification régulière**: Utiliser `npm audit` pour détecter les vulnérabilités
2. **Mise à jour des dépendances**: Utiliser `npm update` régulièrement
### Priorité basse
1. **Dépendances optionnelles**: Évaluer l'utilisation de certaines dépendances
2. **Optimisation**: Analyser les dépendances non utilisées
## Scripts de maintenance
### Audit de sécurité
```bash
npm audit
npm audit fix
```
### Mise à jour des dépendances
```bash
npm update
npm outdated
```
### Vérification des dépendances non utilisées
```bash
npx depcheck
```
## Monitoring des dépendances
### Outils recommandés
1. **Dependabot**: Mise à jour automatique des dépendances
2. **Snyk**: Détection des vulnérabilités
3. **npm audit**: Audit de sécurité intégré
### Processus de mise à jour
1. **Test**: Tester les mises à jour en environnement de développement
2. **Validation**: Valider le fonctionnement de l'application
3. **Déploiement**: Déployer en staging puis en production
## Conclusion
Le projet lecoffre-front utilise des dépendances modernes et bien maintenues. La seule recommandation majeure est la mise à jour de TypeScript vers la version 5.x pour bénéficier des dernières fonctionnalités et corrections de bugs.
Les dépendances sont globalement sécurisées et à jour, ce qui garantit la stabilité et la sécurité de l'application.
---
*Analyse effectuée le $(date) - Dépendances lecoffre-front*

228
docs/ANALYSE-REPOSITORY.md Normal file
View File

@ -0,0 +1,228 @@
# 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
```bash
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
```bash
NEXT_PUBLIC_FRONT_APP_HOST=https://app.example.com
NEXT_PUBLIC_FRONT_APP_PORT=443
```
#### Intégrations externes
```bash
# 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
```yaml
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*

47
docs/ANALYSE.md Normal file
View File

@ -0,0 +1,47 @@
## Analyse détaillée
### Périmètre
Front Next.js `lecoffre-front` (Next 14, TypeScript), build multiétapes et image `ext` runtime.
### Stack
- **Framework**: Next.js 14 (React 18), TypeScript 4.9.5
- **UI**: MUI, Emotion, Heroicons
- **Outillage**: ESLint (8.36), Prettier
- **Ressources externes**: `le-coffre-resources` via SSH Gitea (`#v2.167`)
### Build et exécution
- Scripts: `dev`, `build` (telemetry off, `--no-lint`), `start`, `lint`, `format`.
- `next.config.js`: `output: 'standalone'`, `basePath: '/lecoffre'`, `ignoreBuildErrors: true`.
- Docker multiétapes: `deps` (npm ci), `development` (npm run dev), `builder` (npm run build), `ext` (runtime node:19alpine, `server.js`).
### Variables denvironnement
Variables NEXT_PUBLIC nombreuses (API back, IDNot, Docaposte, 4NK URLs, defaults). Exposées en `env`, `publicRuntimeConfig`, `serverRuntimeConfig` et redéclarées en Docker (`ARG``ENV`).
### Ports et réseau
- Port 3000 interne; exposé 3004:3000 dans `lecoffre_node`.
### Dépendances clés
- `next@^14.2.3`, `react@18.2.0`, `sharp@^0.32.1` (build imageprocessing Alpine), `jszip`, `jwt-decode`, `react-select`, `react-toastify`.
### Risques et points dattention
- `ignoreBuildErrors: true` masque les erreurs TS. Risque de dérive de type.
- `--no-lint` en build désactive ESLint. Manque de garde qualité en CI.
- Node 19 sur Alpine: fin de support. Préférer LTS (20/22).
- Dépendance Git SSH privée (`lecoffre-ressources`): exige agent SSH BuildKit; documenter clé et politiques.
### Actions proposées
- Rétablir le lint en build (ou CI) et supprimer `ignoreBuildErrors` si possible.
- Monter vers Node LTS (20alpine) et tester `sharp`.
- Documenter toutes les variables NEXT_PUBLIC et fournir `.env.example`.
- Mettre en place codesplitting (React.lazy/Suspense) et centraliser létat (Context/Redux) selon les règles projet.

27
docs/ENV-RESUME.md Normal file
View File

@ -0,0 +1,27 @@
## Résumé des environnements (front)
### Contexte
- **Hôte iframe**: `https://dev4.4nkweb.com`
- **Site principal**: `https://dev4.4nkweb.com/lecoffre` (Next.js `basePath: '/lecoffre'`)
- **Signer utilisé**: `https://dev3.4nkweb.com`
### Variables `NEXT_PUBLIC_*` à aligner
- `NEXT_PUBLIC_4NK_URL=https://dev4.4nkweb.com`
- `NEXT_PUBLIC_4NK_IFRAME_URL=https://dev4.4nkweb.com`
- `NEXT_PUBLIC_API_URL` → URL publique de lAPI back (chemin stable, CORS OK)
- `NEXT_PUBLIC_BACK_API_PROTOCOL=https`
- `NEXT_PUBLIC_BACK_API_HOST=dev4.4nkweb.com`
- `NEXT_PUBLIC_BACK_API_PORT` (vide en prod 443)
- `NEXT_PUBLIC_BACK_API_ROOT_URL` et `NEXT_PUBLIC_BACK_API_VERSION` si composées côté front
- `NEXT_PUBLIC_IDNOT_*`, `NEXT_PUBLIC_DOCAPOSTE_API_URL` selon intégrations
- `NEXT_PUBLIC_DEFAULT_VALIDATOR_ID`, `NEXT_PUBLIC_DEFAULT_STORAGE_URLS` selon besoins
### Points dattention
- Vérifier que toutes les URLs tiennent compte du `basePath` `/lecoffre`.
- Le service de signature est externalisé sur `dev3.4nkweb.com`.

159
docs/RESUME-ANALYSE.md Normal file
View File

@ -0,0 +1,159 @@
# Résumé de l'Analyse - lecoffre-front
## Vue d'ensemble
L'analyse complète du repository **lecoffre-front** a été effectuée le $(date). Ce document présente un résumé des principales découvertes et recommandations.
## Structure du projet
### Type d'application
- **Framework**: Next.js 14.2.3 avec TypeScript 4.9.5
- **Architecture**: Application frontend SPA avec intégrations multiples
- **Déploiement**: Docker multi-stage + Kubernetes
- **Version actuelle**: v0.1.6 (package.json) / v2.5.1 (frontend)
### Architecture technique
```
Frontend (Next.js) → API Backend → Services externes
↓ ↓ ↓
Material-UI Base de données 4NK/IDNot/Docaposte
```
## Variables d'environnement
### Configuration identifiée
- **21 variables d'environnement** configurées
- **4 environnements** supportés (dev/staging/preprod/production)
- **Gestion centralisée** via Next.js config et FrontendVariables
### Variables critiques
```bash
# API Backend
NEXT_PUBLIC_BACK_API_PROTOCOL=https://
NEXT_PUBLIC_BACK_API_HOST=api.example.com
NEXT_PUBLIC_BACK_API_PORT=443
# Intégrations
NEXT_PUBLIC_4NK_URL=https://dev4.4nkweb.com
NEXT_PUBLIC_IDNOT_BASE_URL=https://idnot.example.com
NEXT_PUBLIC_DOCAPOSTE_API_URL=https://api.docaposte.com
```
## Déploiement et infrastructure
### Docker
- **Multi-stage build** avec 4 cibles (deps/development/builder/ext)
- **Sécurité**: Utilisateur non-root, support SSH agent
- **Optimisation**: Cache npm, build standalone Next.js
### Kubernetes
- **Namespace**: lecoffre
- **Ressources**: 1Gi RAM (request) / 2Gi RAM (limit)
- **Sécurité**: Vault Agent pour injection des secrets
- **Ingress**: TLS avec cert-manager
### CI/CD
- **Registre**: git.4nkweb.com (Docker registry)
- **Tagging**: Contrôlé par message de commit
- **Secrets**: Gestion via Vault + External Secrets
## Dépendances
### État général
- **46 dépendances** principales
- **5 dépendances** de développement
- **Statut**: Majoritairement à jour et sécurisées
### Recommandations
- ✅ **Maintenir**: Next.js 14.2.3, React 18.2.0, MUI 5.11.13
- ⚠️ **Mettre à jour**: TypeScript 4.9.5 → 5.x
- ✅ **Sécurisé**: Toutes les autres dépendances
## Points forts identifiés
### Architecture
- ✅ Structure modulaire bien organisée
- ✅ Séparation claire des responsabilités
- ✅ Configuration multi-environnement
- ✅ Intégration Docker/Kubernetes robuste
### Sécurité
- ✅ Variables d'environnement externalisées
- ✅ Gestion des secrets via Vault
- ✅ Utilisateur non-root dans Docker
- ✅ Support SSH agent pour dépendances privées
### Développement
- ✅ TypeScript pour le typage statique
- ✅ ESLint + Prettier pour la qualité du code
- ✅ Tests organisés dans le dossier tests/
- ✅ Documentation complète
## Points d'attention
### Améliorations recommandées
1. **TypeScript**
- Mettre à jour vers la version 5.x
- Bénéficier des dernières fonctionnalités
2. **Monitoring**
- Ajouter des métriques de performance
- Monitoring des erreurs en production
3. **Tests**
- Étendre la couverture de tests
- Tests d'intégration avec les services externes
4. **Documentation**
- Maintenir la documentation des variables d'environnement
- Documenter les processus de déploiement
### Risques identifiés
1. **Dépendances privées**
- Dépendance à git.4nkweb.com pour le-coffre-resources
- Nécessite un accès SSH configuré
2. **Variables d'environnement**
- Variables NEXT_PUBLIC_* exposées côté client
- Nécessite une validation stricte des valeurs
3. **Intégrations externes**
- Dépendance à plusieurs services externes
- Nécessite une gestion des pannes
## Recommandations prioritaires
### Court terme (1-2 semaines)
1. Mettre à jour TypeScript vers la version 5.x
2. Effectuer un audit de sécurité complet (`npm audit`)
3. Vérifier la configuration des variables d'environnement
### Moyen terme (1-2 mois)
1. Étendre la couverture de tests
2. Ajouter des métriques de monitoring
3. Documenter les processus de déploiement
### Long terme (3-6 mois)
1. Évaluer l'optimisation des performances
2. Considérer l'ajout de tests d'intégration
3. Planifier les mises à jour des dépendances
## Conclusion
Le projet **lecoffre-front** présente une architecture solide et bien structurée. Les technologies utilisées sont modernes et appropriées pour le contexte. La configuration Docker/Kubernetes est robuste et sécurisée.
Les principales améliorations concernent la mise à jour de TypeScript et l'extension des tests. Le projet est globalement en bon état et prêt pour la production.
## Documentation créée
1. **ANALYSE-REPOSITORY.md**: Analyse complète du repository
2. **VARIABLES-ENVIRONNEMENT.md**: Documentation détaillée des variables d'environnement
3. **ANALYSE-DEPENDANCES.md**: Analyse des dépendances et recommandations
4. **RESUME-ANALYSE.md**: Ce résumé exécutif
---
*Analyse effectuée le $(date) - Repository lecoffre-front*
*Analyste: Assistant IA Claude*

View File

@ -0,0 +1,336 @@
# Variables d'Environnement - lecoffre-front
## Vue d'ensemble
Ce document détaille toutes les variables d'environnement utilisées dans l'application lecoffre-front, leur utilisation et leur configuration.
## Variables d'environnement supportées
### 1. Configuration API Backend
#### `NEXT_PUBLIC_BACK_API_PROTOCOL`
- **Description**: Protocole utilisé pour communiquer avec l'API backend
- **Valeurs possibles**: `https://`, `http://`
- **Exemple**: `https://`
- **Utilisation**: Construction des URLs d'API
#### `NEXT_PUBLIC_BACK_API_HOST`
- **Description**: Nom d'hôte de l'API backend
- **Exemple**: `api.lecoffre.com`, `dev4.4nkweb.com`
- **Utilisation**: Construction des URLs d'API
#### `NEXT_PUBLIC_BACK_API_PORT`
- **Description**: Port de l'API backend
- **Exemple**: `443`, `8080`, `3001`
- **Utilisation**: Construction des URLs d'API
- **Note**: Peut être vide pour les ports par défaut (80/443)
#### `NEXT_PUBLIC_BACK_API_ROOT_URL`
- **Description**: Chemin racine de l'API
- **Exemple**: `/api`, `/`
- **Utilisation**: Construction des URLs d'API
#### `NEXT_PUBLIC_BACK_API_VERSION`
- **Description**: Version de l'API
- **Exemple**: `v1`, `v2`
- **Utilisation**: Construction des URLs d'API
### 2. Configuration Frontend
#### `NEXT_PUBLIC_FRONT_APP_HOST`
- **Description**: URL de base de l'application frontend
- **Exemple**: `https://app.lecoffre.com`
- **Utilisation**: Redirections et liens internes
#### `NEXT_PUBLIC_FRONT_APP_PORT`
- **Description**: Port de l'application frontend
- **Exemple**: `443`, `3000`
- **Utilisation**: Construction des URLs frontend
### 3. Intégration IDNot (Authentification)
#### `NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT`
- **Description**: Point d'entrée pour l'autorisation OAuth
- **Exemple**: `/oauth/authorize`
- **Utilisation**: Flux d'authentification
#### `NEXT_PUBLIC_IDNOT_CLIENT_ID`
- **Description**: Identifiant client OAuth
- **Exemple**: `lecoffre-client-id`
- **Utilisation**: Authentification OAuth
#### `NEXT_PUBLIC_IDNOT_BASE_URL`
- **Description**: URL de base du service IDNot
- **Exemple**: `https://idnot.lecoffre.com`
- **Utilisation**: Authentification OAuth
#### `NEXT_PUBLIC_IDNOT_REDIRECT_URI`
- **Description**: URI de redirection après authentification
- **Exemple**: `https://app.lecoffre.com/callback`
- **Utilisation**: Flux d'authentification
### 4. Intégration Docaposte
#### `NEXT_PUBLIC_DOCAPOSTE_API_URL`
- **Description**: URL de l'API Docaposte
- **Exemple**: `https://api.docaposte.com`
- **Utilisation**: Services postaux
### 5. Intégration 4NK (Blockchain)
#### `NEXT_PUBLIC_4NK_URL`
- **Description**: URL de base des services 4NK
- **Exemple**: `https://dev4.4nkweb.com`
- **Utilisation**: Services blockchain et signature
#### `NEXT_PUBLIC_4NK_IFRAME_URL`
- **Description**: URL spécifique pour l'iframe 4NK
- **Exemple**: `https://dev4.4nkweb.com`
- **Utilisation**: Communication iframe
- **Note**: Peut être différente de `NEXT_PUBLIC_4NK_URL`
### 6. Analytics et Monitoring
#### `NEXT_PUBLIC_HOTJAR_SITE_ID`
- **Description**: Identifiant du site Hotjar
- **Exemple**: `123456`
- **Utilisation**: Analytics et heatmaps
#### `NEXT_PUBLIC_HOTJAR_VERSION`
- **Description**: Version de Hotjar
- **Exemple**: `6`
- **Utilisation**: Analytics et heatmaps
### 7. Configuration système
#### `NEXT_PUBLIC_API_URL`
- **Description**: URL générique de l'API
- **Exemple**: `https://api.lecoffre.com`
- **Utilisation**: Appels API génériques
#### `NEXT_PUBLIC_DEFAULT_VALIDATOR_ID`
- **Description**: Identifiant du validateur par défaut
- **Exemple**: `862406317a35064537ac959cb5d8bbdf4f849283b63db3ffa9904de2b3427c43:0`
- **Utilisation**: Validation des entités système
- **Valeur par défaut**: Définie dans `AppConstants.ts`
#### `NEXT_PUBLIC_DEFAULT_STORAGE_URLS`
- **Description**: URLs de stockage par défaut (séparées par des virgules)
- **Exemple**: `https://dev3.4nkweb.com/storage,https://backup.4nkweb.com/storage`
- **Utilisation**: Stockage des données
- **Valeur par défaut**: `https://dev3.4nkweb.com/storage`
### 8. Variables d'environnement système
#### `NEXTJS_APP_ENV_NAME`
- **Description**: Nom de l'environnement
- **Valeurs possibles**: `development`, `staging`, `preprod`, `production`
- **Utilisation**: Sélection de la configuration par environnement
- **Valeur par défaut**: `development`
#### `NODE_ENV`
- **Description**: Environnement Node.js
- **Valeurs possibles**: `development`, `production`
- **Utilisation**: Configuration Next.js
## Configuration par environnement
### Développement
```bash
NEXTJS_APP_ENV_NAME=development
NODE_ENV=development
NEXT_PUBLIC_BACK_API_PROTOCOL=http://
NEXT_PUBLIC_BACK_API_HOST=localhost
NEXT_PUBLIC_BACK_API_PORT=3001
NEXT_PUBLIC_4NK_URL=https://dev4.4nkweb.com
```
### Staging
```bash
NEXTJS_APP_ENV_NAME=staging
NODE_ENV=production
NEXT_PUBLIC_BACK_API_PROTOCOL=https://
NEXT_PUBLIC_BACK_API_HOST=stg-api.lecoffre.com
NEXT_PUBLIC_BACK_API_PORT=443
NEXT_PUBLIC_4NK_URL=https://dev4.4nkweb.com
```
### Production
```bash
NEXTJS_APP_ENV_NAME=production
NODE_ENV=production
NEXT_PUBLIC_BACK_API_PROTOCOL=https://
NEXT_PUBLIC_BACK_API_HOST=api.lecoffre.com
NEXT_PUBLIC_BACK_API_PORT=443
NEXT_PUBLIC_4NK_URL=https://4nk.lecoffre.com
```
## Utilisation dans le code
### Configuration Next.js
Les variables sont configurées dans `next.config.js`:
```javascript
const nextConfig = {
publicRuntimeConfig: {
NEXT_PUBLIC_BACK_API_PROTOCOL: process.env.NEXT_PUBLIC_BACK_API_PROTOCOL,
// ... autres variables
},
serverRuntimeConfig: {
// Même configuration pour le serveur
},
env: {
// Configuration pour le build
}
};
```
### Initialisation dans l'application
Les variables sont initialisées dans `_app.tsx`:
```typescript
const { publicRuntimeConfig } = getConfig();
MyApp.getInitialProps = async () => {
return {
backApiProtocol: publicRuntimeConfig.NEXT_PUBLIC_BACK_API_PROTOCOL,
// ... autres variables
};
};
```
### Utilisation dans les services
```typescript
// DatabaseService.ts
private static buildBaseUrl(): string {
return `${publicRuntimeConfig.NEXT_PUBLIC_BACK_API_PROTOCOL}${publicRuntimeConfig.NEXT_PUBLIC_BACK_API_HOST}:${publicRuntimeConfig.NEXT_PUBLIC_BACK_API_PORT}${publicRuntimeConfig.NEXT_PUBLIC_BACK_API_ROOT_URL}${publicRuntimeConfig.NEXT_PUBLIC_BACK_API_VERSION}`;
}
```
## Déploiement Docker
### Variables de build
```dockerfile
ARG NEXT_PUBLIC_BACK_API_PROTOCOL
ARG NEXT_PUBLIC_BACK_API_HOST
# ... autres variables
```
### Variables d'environnement runtime
```dockerfile
ENV NEXT_PUBLIC_BACK_API_PROTOCOL=${NEXT_PUBLIC_BACK_API_PROTOCOL} \
NEXT_PUBLIC_BACK_API_HOST=${NEXT_PUBLIC_BACK_API_HOST} \
# ... autres variables
```
### Exécution
```bash
docker run -e NEXT_PUBLIC_BACK_API_PROTOCOL=https:// \
-e NEXT_PUBLIC_BACK_API_HOST=api.example.com \
lecoffre/front:latest
```
## Déploiement Kubernetes
### Via Vault (recommandé)
```yaml
annotations:
vault.hashicorp.com/agent-inject: "true"
vault.hashicorp.com/agent-inject-secret-envs: secret/data/lecoffre-front-stg/config/envs
vault.hashicorp.com/agent-inject-template-envs: |
{{ with secret "secret/data/lecoffre-front-stg/config/envs" }}
{{ range $k, $v := .Data.data }}
export {{ $k }}="{{ $v }}"
{{ end }}
{{ end }}
```
### Via ConfigMap
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: lecoffre-front-config
data:
NEXT_PUBLIC_BACK_API_PROTOCOL: "https://"
NEXT_PUBLIC_BACK_API_HOST: "api.example.com"
# ... autres variables
```
## Validation et tests
### Vérification des variables requises
```typescript
const requiredVars = [
'NEXT_PUBLIC_BACK_API_PROTOCOL',
'NEXT_PUBLIC_BACK_API_HOST',
'NEXT_PUBLIC_BACK_API_PORT',
'NEXT_PUBLIC_BACK_API_ROOT_URL',
'NEXT_PUBLIC_BACK_API_VERSION'
];
for (const varName of requiredVars) {
if (!publicRuntimeConfig[varName]) {
throw new Error(`${varName} is not defined in environment variables`);
}
}
```
### Tests d'environnement
```bash
# Vérifier les variables définies
env | grep NEXT_PUBLIC_
# Tester la construction d'URL
curl -I $(echo $NEXT_PUBLIC_BACK_API_PROTOCOL$NEXT_PUBLIC_BACK_API_HOST:$NEXT_PUBLIC_BACK_API_PORT$NEXT_PUBLIC_BACK_API_ROOT_URL$NEXT_PUBLIC_BACK_API_VERSION/health)
```
## Bonnes pratiques
1. **Sécurité**: Ne jamais exposer de secrets dans les variables `NEXT_PUBLIC_*`
2. **Validation**: Toujours valider la présence des variables requises
3. **Documentation**: Maintenir la documentation des variables
4. **Tests**: Tester avec différentes configurations d'environnement
5. **Fallbacks**: Prévoir des valeurs par défaut quand possible
## Dépannage
### Variables non définies
```bash
# Vérifier les variables d'environnement
docker exec -it <container> env | grep NEXT_PUBLIC_
# Vérifier la configuration Vault
vault kv get secret/data/lecoffre-front-stg/config/envs
```
### URLs malformées
```bash
# Tester la construction d'URL
node -e "
const config = {
protocol: process.env.NEXT_PUBLIC_BACK_API_PROTOCOL,
host: process.env.NEXT_PUBLIC_BACK_API_HOST,
port: process.env.NEXT_PUBLIC_BACK_API_PORT,
root: process.env.NEXT_PUBLIC_BACK_API_ROOT_URL,
version: process.env.NEXT_PUBLIC_BACK_API_VERSION
};
console.log(\`\${config.protocol}\${config.host}:\${config.port}\${config.root}\${config.version}\`);
"
```
---
*Documentation mise à jour le $(date) - Variables d'environnement lecoffre-front*

View File

@ -37,7 +37,7 @@
"react": "18.2.0", "react": "18.2.0",
"react-dom": "18.2.0", "react-dom": "18.2.0",
"react-gtm-module": "^2.0.11", "react-gtm-module": "^2.0.11",
"react-select": "^5.7.2", "react-select": "^5.7.2",
"react-toastify": "^9.1.3", "react-toastify": "^9.1.3",
"sass": "^1.59.2", "sass": "^1.59.2",

View File

@ -31,3 +31,8 @@ export default function AuthorizedBridge() {
return null; return null;
} }