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:3000/authorized-client
|
||||
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
|
||||
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_4NK_IFRAME_URL=https://dev4.4nkweb.com
|
||||
NEXT_PUBLIC_IDNOT_REDIRECT_URI=http://local.4nkweb.com:3000/authorized-client
|
||||
|
||||
NEXT_PUBLIC_DOCAPOSTE_API_URL=
|
||||
NEXT_PUBLIC_API_URL=https://dev4.4nkweb.com/api
|
||||
NEXT_PUBLIC_DEFAULT_VALIDATOR_ID=28c9a3a8151bef545ebf700ca5222c63d0031ad593097e95c1de202464304a99
|
||||
NEXT_PUBLIC_DEFAULT_STORAGE_URLS=https://dev4.4nkweb.com/storage
|
||||
SIGNER_BASE_URL=https://dev3.4nkweb.com/signer/
|
||||
|
||||
# WS
|
||||
# RELAY_URLS=wss://demo.4nkweb.com/ws
|
||||
RELAY_URLS=wss://dev4.4nkweb.com/ws
|
||||
|
||||
# SIGNER_WS_URL=ws://dev4.4nkweb.com/signer/
|
||||
SIGNER_WS_URL=ws://dev3.4nkweb.com
|
||||
SIGNER_BASE_URL=https://dev3.4nkweb.com
|
||||
|
||||
# IHM URLS
|
||||
# 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
|
||||
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 ========================
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user