ci: docker_tag=ext - Update documentation and analysis
All checks were successful
build-and-push-ext / build_push (push) Successful in 1m26s
All checks were successful
build-and-push-ext / build_push (push) Successful in 1m26s
This commit is contained in:
parent
9e8ed1ad1d
commit
96f8788c08
16
.env.example
16
.env.example
@ -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
301
docs/ANALYSE-DEPENDANCES.md
Normal 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
228
docs/ANALYSE-REPOSITORY.md
Normal 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
47
docs/ANALYSE.md
Normal 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:19‑alpine, `server.js`).
|
||||||
|
|
||||||
|
### Variables d’environnement
|
||||||
|
|
||||||
|
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 image‑processing Alpine), `jszip`, `jwt-decode`, `react-select`, `react-toastify`.
|
||||||
|
|
||||||
|
### Risques et points d’attention
|
||||||
|
|
||||||
|
- `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 (20‑alpine) et tester `sharp`.
|
||||||
|
- Documenter toutes les variables NEXT_PUBLIC et fournir `.env.example`.
|
||||||
|
- Mettre en place code‑splitting (React.lazy/Suspense) et centraliser l’état (Context/Redux) selon les règles projet.
|
||||||
|
|
||||||
|
|
||||||
|
|
27
docs/ENV-RESUME.md
Normal file
27
docs/ENV-RESUME.md
Normal 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 l’API 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 d’attention
|
||||||
|
|
||||||
|
- 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
159
docs/RESUME-ANALYSE.md
Normal 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*
|
336
docs/VARIABLES-ENVIRONNEMENT.md
Normal file
336
docs/VARIABLES-ENVIRONNEMENT.md
Normal 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*
|
@ -31,3 +31,8 @@ export default function AuthorizedBridge() {
|
|||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user