refactor: projet stand-alone sans dépendance aoe_technology_radar
- Intégration du code source du framework dans radar-app/ (vendoring) - Suppression de la dépendance npm aoe_technology_radar - Création de scripts build-radar.js et serve-radar.js pour remplacer le CLI techradar - Adaptation de tous les scripts et Docker pour utiliser radar-app/ au lieu de .techradar - Refactorisation complète de Dockerfile.business - Mise à jour de la documentation (architecture, déploiement, développement) - Mise à jour de .gitignore pour ignorer les artefacts de build de radar-app/ - Ajout de postcss dans les dépendances Docker pour le build Next.js Le projet est maintenant complètement indépendant du package externe. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -31,7 +31,7 @@ Données métier et contenu utilisé par l'application pour générer le radar :
|
||||
|
||||
## Vue d'ensemble
|
||||
|
||||
Le Technology Radar AJR est une application web interactive qui présente les technologies, outils, méthodes et plateformes utilisées et évaluées par AJR. Il est basé sur le framework [aoe_technology_radar](https://github.com/AOEpeople/aoe_technology_radar).
|
||||
Le Technology Radar AJR est une application web interactive qui présente les technologies, outils, méthodes et plateformes utilisées et évaluées par AJR. Il est basé sur le framework [aoe_technology_radar](https://github.com/AOEpeople/aoe_technology_radar), dont le code source est vendu dans le répertoire `radar-app/`.
|
||||
|
||||
Le radar est organisé en quatre quadrants et quatre anneaux (rings) pour classifier chaque technologie selon son niveau d'adoption et sa catégorie.
|
||||
|
||||
@@ -39,7 +39,7 @@ Le radar est organisé en quatre quadrants et quatre anneaux (rings) pour classi
|
||||
|
||||
- **Radar en ligne** : https://www.coeurbox.syoul.fr
|
||||
- **Dépôt Git** : https://git.open.us.org/AJR/TechradarDev
|
||||
- **Framework source** : https://github.com/AOEpeople/aoe_technology_radar
|
||||
- **Framework source** : https://github.com/AOEpeople/aoe_technology_radar (code vendu dans `radar-app/`)
|
||||
|
||||
## Démarrage rapide
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ Bienvenue dans la documentation du projet AJR Technology Radar (CoeurBox).
|
||||
|
||||
## Vue d'ensemble
|
||||
|
||||
Le Technology Radar AJR est une application web interactive qui présente les technologies, outils, méthodes et plateformes utilisées et évaluées par AJR. Il est basé sur le framework [aoe_technology_radar](https://github.com/AOEpeople/aoe_technology_radar).
|
||||
Le Technology Radar AJR est une application web interactive qui présente les technologies, outils, méthodes et plateformes utilisées et évaluées par AJR. Il est basé sur le framework [aoe_technology_radar](https://github.com/AOEpeople/aoe_technology_radar), dont le code source est vendu dans le répertoire `radar-app/`.
|
||||
|
||||
Le radar est organisé en quatre quadrants et quatre anneaux (rings) pour classifier chaque technologie selon son niveau d'adoption et sa catégorie.
|
||||
|
||||
@@ -38,7 +38,7 @@ Les données utilisées par l'application sont dans le dossier [`../data/`](../d
|
||||
- **Radar en ligne** : https://www.coeurbox.syoul.fr
|
||||
- **Radar Technologique Laplank** : http://laplank.techradar.syoul.fr:3006
|
||||
- **Dépôt Git** : https://git.open.us.org/AJR/TechradarDev
|
||||
- **Framework source** : https://github.com/AOEpeople/aoe_technology_radar
|
||||
- **Framework source** : https://github.com/AOEpeople/aoe_technology_radar (code vendu dans `radar-app/`)
|
||||
|
||||
## Démarrage rapide
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## Vue d'ensemble
|
||||
|
||||
Le projet AJR Technology Radar est une application web statique construite avec le framework `aoe_technology_radar` (basé sur Next.js). L'application génère un site web interactif à partir de fichiers Markdown organisés par dates de release.
|
||||
Le projet AJR Technology Radar est une application web statique construite avec le framework `aoe_technology_radar` (basé sur Next.js), dont le code source est vendu dans le répertoire `radar-app/`. L'application génère un site web interactif à partir de fichiers Markdown organisés par dates de release.
|
||||
|
||||
## Structure des répertoires
|
||||
|
||||
@@ -42,7 +42,7 @@ TechradarDev/
|
||||
│ ├── app/ # Documentation technique de l'application
|
||||
│ └── data/ # Données métier et contenu
|
||||
│ └── team/ # Profils individuels des membres de l'équipe
|
||||
├── .techradar/ # Framework aoe_technology_radar (généré pendant le build)
|
||||
├── radar-app/ # Framework aoe_technology_radar (code vendu dans le repo)
|
||||
│ ├── src/ # Code source Next.js du framework
|
||||
│ │ ├── pages/ # Pages Next.js (routes)
|
||||
│ │ │ └── team.tsx # Page /team générée par Dockerfile
|
||||
@@ -79,15 +79,17 @@ Le projet utilise le framework **aoe_technology_radar** qui est basé sur :
|
||||
|
||||
### Processus de build
|
||||
|
||||
1. **Installation des dépendances** : `npm install` installe `aoe_technology_radar` depuis GitHub
|
||||
2. **Préparation du framework** : Copie de `node_modules/aoe_technology_radar` vers `.techradar/`
|
||||
3. **Configuration** : Copie de `radar-business/config-business.json` vers `.techradar/data/config.json`
|
||||
4. **Données** : Copie des blips depuis `radar-business/2025-01-15/` vers `.techradar/data/radar/2025-01-15/`
|
||||
5. **Modifications personnalisées** :
|
||||
- Création de `.techradar/src/pages/team.tsx` (page Next.js pour `/team`)
|
||||
- Modification de `.techradar/src/components/Navigation/Navigation.tsx` (ajout du lien Équipe)
|
||||
6. **Build Next.js** : `npm run build:data` puis `npm run build` génère les fichiers statiques
|
||||
7. **Output** : Fichiers statiques dans `.techradar/out/` servis par un serveur statique
|
||||
1. **Injection des données** : Le script `scripts/build-radar.js` copie :
|
||||
- `radar-business/config-business.json` → `radar-app/data/config.json`
|
||||
- `radar-business/2025-01-15/` → `radar-app/data/radar/2025-01-15/`
|
||||
- `public/*` → `radar-app/public/`
|
||||
- Génère `team-visualization-data.json` et le copie dans `radar-app/public/`
|
||||
2. **Modifications personnalisées** :
|
||||
- Création de `radar-app/src/pages/team.tsx` (page Next.js pour `/team`)
|
||||
- Modification de `radar-app/src/components/Navigation/Navigation.tsx` (ajout du lien Équipe)
|
||||
- Modification de `radar-app/src/pages/_document.tsx` (chargement du script team-block-script.js)
|
||||
3. **Build Next.js** : `cd radar-app && npm run build:data && npm run build` génère les fichiers statiques
|
||||
4. **Output** : Fichiers statiques dans `radar-app/out/` copiés vers `build/` à la racine
|
||||
|
||||
### Modifications personnalisées
|
||||
|
||||
@@ -96,7 +98,7 @@ Le projet apporte plusieurs modifications au framework de base :
|
||||
#### 1. Page Equipe (`/team`)
|
||||
|
||||
- **Script principal** : `public/team-block-script.js` (injection du contenu et visualisations)
|
||||
- **Route Next.js** : `.techradar/src/pages/team.tsx` (page vide, le script remplace le contenu)
|
||||
- **Route Next.js** : `radar-app/src/pages/team.tsx` (page vide, le script remplace le contenu)
|
||||
- **Chargement** : Le script est charge via `_document.tsx` avec `strategy="beforeInteractive"`
|
||||
- **Bibliotheques** : Cytoscape.js et ECharts charges depuis CDN
|
||||
- **Donnees** : `public/team-visualization-data.json` genere par `scripts/generate-team-visualization-data.js`
|
||||
@@ -104,7 +106,7 @@ Le projet apporte plusieurs modifications au framework de base :
|
||||
|
||||
#### 2. Navigation modifiée
|
||||
|
||||
- **Fichier modifié** : `.techradar/src/components/Navigation/Navigation.tsx`
|
||||
- **Fichier modifié** : `radar-app/src/components/Navigation/Navigation.tsx`
|
||||
- **Modification** : Ajout du lien "👥 Équipe" vers `/team`
|
||||
- **Méthode** : Script Python dans `Dockerfile.business` qui :
|
||||
- Supprime tous les liens Équipe existants (évite les doublons)
|
||||
@@ -160,7 +162,7 @@ Description de la technologie en Markdown.
|
||||
|
||||
## Dépendances principales
|
||||
|
||||
- **aoe_technology_radar** : Framework principal (dépendance GitHub)
|
||||
- **radar-app/** : Framework principal (code vendu dans le repo, basé sur aoe_technology_radar)
|
||||
- **Node.js** : Runtime JavaScript (version 20+)
|
||||
- **npm** : Gestionnaire de paquets
|
||||
- **gray-matter** : Parsing YAML front matter
|
||||
|
||||
@@ -101,30 +101,32 @@ Le `Dockerfile.business` effectue les opérations suivantes :
|
||||
- Git et Python3 pour les scripts
|
||||
- Variables d'environnement pour désactiver Husky
|
||||
|
||||
2. **Préparation du framework** :
|
||||
- Copie de `node_modules/aoe_technology_radar` vers `.techradar/`
|
||||
- Patch du package pour inclure `gray-matter` et `postcss`
|
||||
2. **Installation des dépendances** :
|
||||
- Installation des dépendances racine (pour scripts: generate-team-visualization-data, etc.)
|
||||
- Installation des dépendances dans `radar-app/` (Next.js et dépendances du framework)
|
||||
- Désactivation du script `prepare` (husky) dans `radar-app/package.json`
|
||||
|
||||
3. **Configuration des données** :
|
||||
- Purge des données de démo : `rm -rf .techradar/data/radar/*`
|
||||
- Copie des blips business : `radar-business/2025-01-15/*` → `.techradar/data/radar/2025-01-15/`
|
||||
- Copie de la config : `radar-business/config-business.json` → `.techradar/data/config.json`
|
||||
- Purge des données de démo : `rm -rf radar-app/data/radar/*`
|
||||
- Copie des blips business : `radar-business/2025-01-15/*` → `radar-app/data/radar/2025-01-15/`
|
||||
- Copie de la config : `radar-business/config-business.json` → `radar-app/data/config.json`
|
||||
- Copie des fichiers publics : `public/*` → `radar-app/public/`
|
||||
- Génération et copie de `team-visualization-data.json` dans `radar-app/public/`
|
||||
|
||||
4. **Modifications personnalisees** :
|
||||
- Creation de `.techradar/src/pages/team.tsx` (page Next.js vide pour `/team`)
|
||||
- Modification de `.techradar/src/pages/_document.tsx` via script Python :
|
||||
- Creation de `radar-app/src/pages/team.tsx` (page Next.js vide pour `/team`)
|
||||
- Modification de `radar-app/src/pages/_document.tsx` via script Python :
|
||||
- Ajout du chargement de `team-block-script.js` avec `strategy="beforeInteractive"`
|
||||
- Modification de `.techradar/src/components/Navigation/Navigation.tsx` via script Python :
|
||||
- Modification de `radar-app/src/components/Navigation/Navigation.tsx` via script Python :
|
||||
- Suppression de tous les liens Equipe existants (evite les doublons)
|
||||
- Ajout d'un seul lien "Equipe" apres le lien "Vue d'ensemble"
|
||||
|
||||
5. **Build Next.js** :
|
||||
- `npm run build:data` : Génère les données du radar
|
||||
- `npm run build` : Build de l'application Next.js
|
||||
- `cd radar-app && npm run build:data` : Génère les données du radar
|
||||
- `cd radar-app && npm run build` : Build de l'application Next.js
|
||||
|
||||
6. **Copie des fichiers publics** :
|
||||
- Copie de `public/team-block-script.js` et `public/team-visualization-data.json` vers `.techradar/public/`
|
||||
- Les fichiers sont ensuite copies dans `out/` apres le build
|
||||
6. **Post-build** :
|
||||
- Copie des fichiers additionnels (`_team-content`, `team-visualization-data.json`, `team/`) depuis `radar-app/public/` vers `radar-app/out/`
|
||||
|
||||
7. **Demarrage** :
|
||||
- Execution de `scripts/start-business.sh` qui :
|
||||
@@ -138,7 +140,7 @@ Le `Dockerfile.business` effectue les opérations suivantes :
|
||||
|
||||
Le script `docker/add_team_link.py` :
|
||||
|
||||
1. **Verifie l'existence du fichier** : `.techradar/src/components/Navigation/Navigation.tsx`
|
||||
1. **Verifie l'existence du fichier** : `radar-app/src/components/Navigation/Navigation.tsx`
|
||||
2. **Supprime tous les liens Equipe existants** : Evite les doublons meme si le script s'execute plusieurs fois
|
||||
3. **Ajoute un seul lien Equipe** : Apres le lien "Vue d'ensemble"
|
||||
4. **Verifie le resultat** : S'assure qu'il n'y a qu'un seul lien apres l'operation
|
||||
|
||||
@@ -22,7 +22,7 @@ cd TechradarDev
|
||||
npm install
|
||||
```
|
||||
|
||||
Cette commande installe le framework `aoe_technology_radar` depuis GitHub.
|
||||
Cette commande installe les dépendances racine (pour les scripts utilitaires). Le framework Next.js est déjà présent dans `radar-app/` (code vendu dans le repo).
|
||||
|
||||
## Développement local
|
||||
|
||||
@@ -58,7 +58,7 @@ Pour générer les fichiers statiques :
|
||||
npm run build
|
||||
```
|
||||
|
||||
Les fichiers générés sont créés dans le répertoire `build/` (généré par le framework).
|
||||
Les fichiers générés sont créés dans le répertoire `build/` (copiés depuis `radar-app/out/`).
|
||||
|
||||
## Structure des fichiers radar
|
||||
|
||||
|
||||
@@ -21,10 +21,10 @@ Cette approche evite les conflits SSR tout en permettant des visualisations inte
|
||||
### Fichiers impliques
|
||||
|
||||
- **Script principal** : `public/team-block-script.js` (injection du contenu et visualisations)
|
||||
- **Page Next.js** : `.techradar/src/pages/team.tsx` (page vide, le script remplace le contenu)
|
||||
- **Page Next.js** : `radar-app/src/pages/team.tsx` (page vide, le script remplace le contenu)
|
||||
- **Donnees JSON** : `public/team-visualization-data.json` (genere par `scripts/generate-team-visualization-data.js`)
|
||||
- **Navigation** : `.techradar/src/components/Navigation/Navigation.tsx` (modifiee par script Python)
|
||||
- **Document modifie** : `.techradar/src/pages/_document.tsx` (modifie pour charger le script)
|
||||
- **Navigation** : `radar-app/src/components/Navigation/Navigation.tsx` (modifiee par script Python)
|
||||
- **Document modifie** : `radar-app/src/pages/_document.tsx` (modifie pour charger le script)
|
||||
|
||||
## Acces
|
||||
|
||||
@@ -184,8 +184,8 @@ Description du membre de l'equipe.
|
||||
|
||||
### Dans le Dockerfile
|
||||
|
||||
1. **Copie des fichiers publics** : `public/team-block-script.js` et `public/team-visualization-data.json` vers `.techradar/public/`
|
||||
2. **Creation de la page Next.js** : Genere `.techradar/src/pages/team.tsx` (page vide)
|
||||
1. **Copie des fichiers publics** : `public/team-block-script.js` et `public/team-visualization-data.json` vers `radar-app/public/`
|
||||
2. **Creation de la page Next.js** : Genere `radar-app/src/pages/team.tsx` (page vide)
|
||||
3. **Modification de _document.tsx** : Ajoute le chargement de `team-block-script.js` avec `strategy="beforeInteractive"`
|
||||
4. **Modification de Navigation** : Ajoute le lien "Equipe" dans `Navigation.tsx` via script Python
|
||||
5. **Build Next.js** : Genere les fichiers statiques dans `out/`
|
||||
@@ -332,7 +332,7 @@ Parametres disponibles :
|
||||
|
||||
**Solutions** :
|
||||
1. Verifier les logs Docker lors du build
|
||||
2. Verifier que le fichier `.techradar/src/components/Navigation/Navigation.tsx` existe
|
||||
2. Verifier que le fichier `radar-app/src/components/Navigation/Navigation.tsx` existe
|
||||
3. Rebuild avec `--no-cache` pour forcer l'execution du script
|
||||
|
||||
### La page `/team` affiche le radar au lieu des visualisations
|
||||
@@ -386,7 +386,7 @@ docker compose -f docker-compose.business.yml up -d
|
||||
## Fichiers associes
|
||||
|
||||
- **Script principal** : `public/team-block-script.js` (injection et visualisations)
|
||||
- **Page Next.js** : `docker/team-page.tsx` (page vide copiee vers `.techradar/src/pages/team.tsx`)
|
||||
- **Page Next.js** : `docker/team-page.tsx` (page vide copiee vers `radar-app/src/pages/team.tsx`)
|
||||
- **Donnees JSON** : `public/team-visualization-data.json` (genere)
|
||||
- **Script de generation** : `scripts/generate-team-visualization-data.js`
|
||||
- **Profils equipe** : `docs/data/team/*.md` (fichiers Markdown avec metadonnees YAML)
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
**Vérification** :
|
||||
```bash
|
||||
# Dans le conteneur
|
||||
grep -c 'href="/team"' .techradar/src/components/Navigation/Navigation.tsx
|
||||
grep -c 'href="/team"' radar-app/src/components/Navigation/Navigation.tsx
|
||||
# Doit retourner 1 (un seul lien)
|
||||
```
|
||||
|
||||
@@ -38,14 +38,14 @@ grep -c 'href="/team"' .techradar/src/components/Navigation/Navigation.tsx
|
||||
|
||||
**Solutions** :
|
||||
1. Vérifier les logs Docker lors du build pour voir si le script Python s'est exécuté
|
||||
2. Vérifier que le fichier `.techradar/src/components/Navigation/Navigation.tsx` existe
|
||||
2. Vérifier que le fichier `radar-app/src/components/Navigation/Navigation.tsx` existe
|
||||
3. Vérifier que le script Python a bien trouvé l'emplacement pour insérer le lien
|
||||
4. Rebuild avec `--no-cache` pour forcer l'exécution
|
||||
|
||||
**Vérification** :
|
||||
```bash
|
||||
# Dans le conteneur
|
||||
grep 'href="/team"' .techradar/src/components/Navigation/Navigation.tsx
|
||||
grep 'href="/team"' radar-app/src/components/Navigation/Navigation.tsx
|
||||
# Doit retourner le lien
|
||||
```
|
||||
|
||||
@@ -66,10 +66,10 @@ grep 'href="/team"' .techradar/src/components/Navigation/Navigation.tsx
|
||||
3. Vérifier dans les logs Docker que les données ont été copiées :
|
||||
```bash
|
||||
# Dans le conteneur
|
||||
find .techradar/data/radar -name "*.md" | wc -l
|
||||
find radar-app/data/radar -name "*.md" | wc -l
|
||||
# Doit retourner ~38 fichiers
|
||||
```
|
||||
4. Vérifier que `config-business.json` a été copié vers `.techradar/data/config.json`
|
||||
4. Vérifier que `config-business.json` a été copié vers `radar-app/data/config.json`
|
||||
|
||||
**Migration des rings** :
|
||||
```bash
|
||||
@@ -110,8 +110,8 @@ find . -name "*.md" -exec sed -i 's/^ring: support$/ring: adopt/' {} \;
|
||||
**Verification** :
|
||||
```bash
|
||||
# Dans le conteneur
|
||||
ls -l .techradar/public/team-block-script.js
|
||||
grep "team-block-script" .techradar/src/pages/_document.tsx
|
||||
ls -l radar-app/public/team-block-script.js
|
||||
grep "team-block-script" radar-app/src/pages/_document.tsx
|
||||
```
|
||||
|
||||
#### Page `/team` retourne 404
|
||||
@@ -123,14 +123,14 @@ grep "team-block-script" .techradar/src/pages/_document.tsx
|
||||
- Le serveur utilise `--single` qui redirige vers index.html
|
||||
|
||||
**Solutions** :
|
||||
1. Verifier que le Dockerfile a bien cree `.techradar/src/pages/team.tsx`
|
||||
1. Verifier que le Dockerfile a bien cree `radar-app/src/pages/team.tsx`
|
||||
2. Verifier que `scripts/start-business.sh` ne contient pas l'option `--single`
|
||||
3. Verifier les logs du build Docker
|
||||
|
||||
**Verification** :
|
||||
```bash
|
||||
# Dans le conteneur
|
||||
ls -l .techradar/src/pages/team.tsx
|
||||
ls -l radar-app/src/pages/team.tsx
|
||||
ls -l out/team/index.html
|
||||
```
|
||||
|
||||
@@ -244,20 +244,20 @@ Dans Portainer, cocher l'option "No cache" lors du rebuild de la stack.
|
||||
docker exec -it <container-name> /bin/sh
|
||||
|
||||
# Verifier les fichiers de la page equipe
|
||||
ls -la .techradar/src/pages/team.tsx
|
||||
ls -la .techradar/public/team-block-script.js
|
||||
ls -la radar-app/src/pages/team.tsx
|
||||
ls -la radar-app/public/team-block-script.js
|
||||
ls -la out/team-block-script.js
|
||||
ls -la out/team-visualization-data.json
|
||||
|
||||
# Verifier les modifications
|
||||
grep "team-block-script" .techradar/src/pages/_document.tsx
|
||||
ls -la .techradar/src/components/Navigation/Navigation.tsx
|
||||
grep "team-block-script" radar-app/src/pages/_document.tsx
|
||||
ls -la radar-app/src/components/Navigation/Navigation.tsx
|
||||
|
||||
# Compter les blips
|
||||
find .techradar/data/radar -name "*.md" | wc -l
|
||||
find radar-app/data/radar -name "*.md" | wc -l
|
||||
|
||||
# Verifier la config
|
||||
head -60 .techradar/data/config.json
|
||||
head -60 radar-app/data/config.json
|
||||
```
|
||||
|
||||
### Vérifier les logs
|
||||
@@ -287,10 +287,10 @@ grep -h "^ring:" *.md | sort | uniq -c
|
||||
|
||||
```bash
|
||||
# Compter les liens Équipe
|
||||
grep -c 'href="/team"' .techradar/src/components/Navigation/Navigation.tsx
|
||||
grep -c 'href="/team"' radar-app/src/components/Navigation/Navigation.tsx
|
||||
|
||||
# Voir le contexte autour du lien
|
||||
grep -A 3 -B 3 'href="/team"' .techradar/src/components/Navigation/Navigation.tsx
|
||||
grep -A 3 -B 3 'href="/team"' radar-app/src/components/Navigation/Navigation.tsx
|
||||
```
|
||||
|
||||
## Obtenir de l'aide
|
||||
|
||||
Reference in New Issue
Block a user