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

229 lines
6.7 KiB
Markdown

# 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. **int-dev**: 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*