# Guide de développement ## Prérequis - **Node.js** : Version 20 ou supérieure - **npm** : Gestionnaire de paquets Node.js - **Git** : Pour cloner et gérer le dépôt - **Python 3** : Pour les scripts de modification (optionnel, utilisé dans Docker) ## Installation ### Cloner le dépôt ```bash git clone https://git.open.us.org/AJR/TechradarDev.git cd TechradarDev ``` ### Installer les dépendances ```bash npm install ``` 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 ### Démarrer le serveur de développement (Radar Principal) ```bash npm run serve ``` Le serveur démarre sur http://localhost:3000/techradar ### Démarrer le serveur de développement (Radar Business) ```bash npm run serve-business ``` Le serveur démarre sur http://localhost:3006 **Note importante** : Le script `serve-business.sh` : - Sauvegarde temporairement `config.json` et le dossier `radar/` - Copie `radar-business/config-business.json` vers `config.json` - Copie `radar-business/2025-01-15/` vers `radar/` - Restaure la configuration originale à la sortie (Ctrl+C) Le Radar Technologique Laplank est protégé par un mot de passe : `laplank-radar` ### Build de production Pour générer les fichiers statiques : ```bash npm run build ``` Les fichiers générés sont créés dans le répertoire `build/` (copiés depuis `radar-app/out/`). ## Structure des fichiers radar ### Créer un nouveau blip 1. Créer un nouveau fichier Markdown dans le dossier de release approprié : ``` radar-business/2025-01-15/nom-technologie.md ``` 2. Utiliser le format suivant : ```markdown --- title: "Nom de la technologie" ring: adopt|trial|assess|hold quadrant: technologies-differentiantes|technologies-commodite|technologies-risque|technologies-emergentes tags: [tag1, tag2] businessImpact: high|medium|low costToReplace: 0 revenueImpact: indirect riskLevel: medium competencyLevel: beginner maintenanceCost: 0 differentiation: high teamCoverage: 1 skillGap: high --- Description de la technologie en Markdown. ## Impact Business Description de l'impact sur le business. ## Coûts - Coût de remplacement : 0€ - Coût de maintenance annuel : 0€ ## Compétences - Nombre de personnes maîtrisant : 1 - Membres de l'équipe : pseudo - Niveau moyen : beginner - Risque de compétence manquante : high ## Recommandations Recommandations stratégiques pour cette technologie. ``` ### Format des métadonnées - **title** (obligatoire) : Nom de la technologie - **ring** (obligatoire) : `adopt`, `trial`, `assess`, ou `hold` (voir [configuration.md](./configuration.md)) - **quadrant** (obligatoire) : Un des quatre quadrants définis dans `radar-business/config-business.json` - **tags** (optionnel) : Tableau de tags pour le filtrage - **Métadonnées business** : Voir `radar-business/FORMAT-BLIP.md` pour la liste complète **Important** : Tous les blips doivent utiliser les rings standards (adopt, trial, assess, hold). Les anciens rings (core, strategic, support) ne sont plus utilisés. ### Exemple complet ```markdown --- title: "Docker" ring: adopt quadrant: technologies-commodite tags: [devops, ci/cd, infrastructure] businessImpact: medium costToReplace: 0 revenueImpact: indirect riskLevel: low competencyLevel: intermediate maintenanceCost: 5000 differentiation: low teamCoverage: 3 skillGap: low --- Docker est une plateforme de conteneurisation qui permet de packager des applications avec leurs dépendances. ## Impact Business Technologie essentielle pour le déploiement et la gestion des environnements. ## Coûts - Coût de remplacement : 0€ (pas de remplacement prévu) - Coût de maintenance annuel : 5 000€ (licences, support) ## Compétences - Nombre de personnes maîtrisant : 3 - Membres de l'équipe : pseudo1, pseudo2, pseudo3 - Niveau moyen : intermediate - Risque de compétence manquante : low ## Recommandations Continuer à utiliser Docker pour tous les nouveaux projets. Standardiser les pratiques de conteneurisation. ``` ## Modifier un blip existant 1. Localiser le fichier dans `radar-business/2025-01-15/` 2. Modifier le contenu Markdown 3. Si nécessaire, modifier les métadonnées (ring, quadrant, tags) 4. Tester localement avec `npm run serve-business` ## Créer une nouvelle release 1. Créer un nouveau dossier avec la date au format `YYYY-MM-DD` : ```bash mkdir radar-business/2025-07-15 ``` 2. Copier les blips pertinents depuis la release précédente ou créer de nouveaux blips 3. Mettre à jour les blips existants si nécessaire (changement de ring, quadrant, description) ## Gestion des profils équipe ### Créer un profil équipe 1. Créer un fichier Markdown dans `docs/data/team/` : ``` docs/data/team/pseudo.md ``` 2. Utiliser le format suivant : ```markdown --- name: "pseudo" fullName: "Nom complet" role: "Rôle" availability: 50 seniorityLevel: expert yearsExperience: 8 joinDate: "2016-01" interests: ["Mobile", "Infrastructure"] skills: - name: "Flutter" level: expert years: 4 lastUsed: "2024-12" - name: "Python" level: intermediate years: 5 lastUsed: "2024-11" softSkills: - "Autonomie" - "Pédagogie" projects: - "Projet1" - "Projet2" --- Description du membre de l'équipe. ``` ### Générer les données de visualisation Après avoir modifié les profils équipe ou les technologies, régénérer les données : ```bash node scripts/generate-team-visualization-data.js ``` Ce script génère `public/team-visualization-data.json` utilisé par la page `/team`. ## Ajouter des images 1. Placer les images dans `public/images/` 2. Référencer dans les fichiers Markdown : ```markdown ![Description](images/nom-image.png) ``` ## Personnalisation CSS Le fichier `custom.css` permet d'ajouter des styles personnalisés. Les styles sont appliqués globalement à l'application. ## Scripts disponibles ### Extraction des technologies ```bash npm run extract-tech # ou node scripts/extract-technologies.js ``` Extrait les technologies depuis `docs/data/technologies-duniter.md` et génère les blips dans `radar-business/2025-01-15/`. ### Analyse des métriques business ```bash npm run analyze-business # ou node scripts/analyze-business-metrics.js ``` Analyse les métriques business et génère un rapport dans `docs/data/analyse-strategique.md`. ### Génération des données équipe ```bash node scripts/generate-team-visualization-data.js ``` Génère `public/team-visualization-data.json` à partir des profils équipe et des technologies. ## Débogage ### Vérifier les erreurs de format Le framework valide les fichiers Markdown. En cas d'erreur : - Vérifier la syntaxe YAML front matter - Vérifier que les valeurs de `ring` et `quadrant` correspondent aux valeurs définies dans `radar-business/config-business.json` - Vérifier la syntaxe Markdown ### Problèmes courants 1. **Erreur de parsing YAML** : Vérifier les guillemets et l'indentation 2. **Blip non affiché** : Vérifier que le quadrant et le ring sont corrects (adopt, trial, assess, hold) 3. **Images non chargées** : Vérifier le chemin relatif depuis `public/` 4. **Rings invalides** : Vérifier que tous les blips utilisent les rings standards ### Vérifier les rings utilisés ```bash cd radar-business/2025-01-15 grep -h "^ring:" *.md | sort | uniq -c ``` Doit retourner uniquement : adopt, trial, assess, hold ## Workflow recommandé 1. Créer une branche Git pour vos modifications 2. Ajouter/modifier les fichiers radar dans `radar-business/2025-01-15/` 3. Modifier les profils équipe dans `docs/data/team/` si nécessaire 4. Régénérer les données équipe : `node scripts/generate-team-visualization-data.js` 5. Tester localement avec `npm run serve-business` 6. Vérifier l'affichage et le formatage 7. Commiter et pousser les changements 8. Créer une pull request si applicable ## Commandes utiles ```bash # Installer les dépendances npm install # Démarrer le serveur de développement (business) npm run serve-business # Build de production npm run build # Extraire les technologies npm run extract-tech # Analyser les métriques npm run analyze-business # Générer les données équipe node scripts/generate-team-visualization-data.js # Vérifier les fichiers modifiés git status # Voir les différences git diff ``` ## Intégration continue Le projet utilise Drone CI pour l'intégration continue. Voir `.drone.yml` pour la configuration. Les builds automatiques : - Construisent l'image Docker - Déploient sur l'environnement de test - Envoient des notifications Telegram ## Tests locaux avant déploiement Avant de déployer, vérifier : 1. **Tous les blips utilisent les rings standards** : ```bash cd radar-business/2025-01-15 grep -h "^ring:" *.md | sort | uniq ``` 2. **Les données équipe sont à jour** : ```bash node scripts/generate-team-visualization-data.js ``` 3. **La page équipe fonctionne** : - Démarrer `npm run serve-business` - Accéder à http://localhost:3006/team - Vérifier que les visualisations se chargent 4. **La navigation est correcte** : - Vérifier qu'il n'y a qu'un seul lien "Équipe" - Vérifier que tous les liens fonctionnent