feat: ajouter radar stratégique business avec analyse des technologies et compétences

- Création de la structure radar-business/ avec configuration business
- Génération de 22 blips de technologies avec métadonnées business
- Scripts d'extraction et d'analyse des technologies
- Analyse stratégique avec identification de patterns
- Stratégie d'évolution technique avec roadmap 3 ans
- Documentation complète du radar business
- Analyse des compétences de l'équipe depuis profil-team.md
This commit is contained in:
syoul
2025-12-02 17:34:58 +01:00
parent 92348cd8d9
commit 9dd486c76d
34 changed files with 2769 additions and 1 deletions

View File

@@ -18,6 +18,13 @@ Cette documentation est organisée en plusieurs sections :
- **[Déploiement](./deploiement.md)** - Instructions pour déployer le radar en production
- **[Contribution](./contribution.md)** - Guide pour ajouter de nouvelles technologies au radar
### Radar Business
- **[Guide Radar Business](./guide-radar-business.md)** - Guide d'utilisation du radar stratégique business
- **[Analyse Stratégique](./analyse-strategique.md)** - Rapport d'analyse des patterns et recommandations
- **[Stratégie d'Évolution Technique](./strategie-evolution-technique.md)** - Vision et roadmap technique
- **[Technologies Duniter](./technologies-duniter.md)** - Liste des technologies de l'écosystème Duniter/Ğ1
## Liens utiles
- **Radar en ligne** : https://www.coeurbox.syoul.fr

131
docs/analyse-strategique.md Normal file
View File

@@ -0,0 +1,131 @@
# Analyse Stratégique - Radar Business Duniter/Ğ1
Date: 02/12/2025
## Vue d'ensemble
- **Total de technologies analysées** : 22
- **Coût total de remplacement** : 0€
- **Coût total de maintenance annuel** : 0€
- **Couverture moyenne de l'équipe** : 1.2 personnes par technologie
## Répartition par Quadrant
- **technologies-commodite** : 17 technologies
- **technologies-emergentes** : 3 technologies
- **technologies-differentiantes** : 2 technologies
## Répartition par Ring
- **support** : 17 technologies
- **strategic** : 3 technologies
- **core** : 2 technologies
## Distribution des Risques
- **Risque élevé** : 0 technologies
- **Risque modéré** : 19 technologies
- **Risque faible** : 3 technologies
## Distribution des Compétences
- **Expert** : 1 technologies
- **Intermédiaire** : 5 technologies
- **Débutant** : 16 technologies
## Distribution des Gaps de Compétences
- **Gap élevé** : 16 technologies
- **Gap modéré** : 5 technologies
- **Gap faible** : 1 technologies
## Technologies à Risque Élevé
Aucune technologie à risque élevé identifiée.
## Technologies avec Gap de Compétences Élevé
- **"Bash"** (1 personne(s), niveau: beginner)
- **"Cryptographie"** (1 personne(s), niveau: beginner)
- **"Dart"** (1 personne(s), niveau: beginner)
- **"Docker"** (1 personne(s), niveau: beginner)
- **"Flutter"** (1 personne(s), niveau: beginner)
- **"GitLab CI/CD"** (1 personne(s), niveau: beginner)
- **"Kubernetes"** (0 personne(s), niveau: beginner)
- **"Nostr"** (1 personne(s), niveau: beginner)
- **"PostgreSQL"** (0 personne(s), niveau: beginner)
- **"ProxMox"** (1 personne(s), niveau: beginner)
- **"Python"** (1 personne(s), niveau: beginner)
- **"Rust"** (1 personne(s), niveau: beginner)
- **"Serverless"** (1 personne(s), niveau: beginner)
- **"Squid"** (1 personne(s), niveau: beginner)
- **"Substrate Framework"** (1 personne(s), niveau: beginner)
- **"WordUp CMS"** (1 personne(s), niveau: beginner)
## Technologies Critiques
- **"Rust"** (risque: medium, gap: high, couverture: 1)
- **"Substrate Framework"** (risque: medium, gap: high, couverture: 1)
## Technologies Émergentes
- **"IPFS"** (impact: medium, différenciation: high)
- **"Nostr"** (impact: medium, différenciation: high)
- **"Serverless"** (impact: medium, différenciation: high)
## Patterns Identifiés
### Technologies Critiques Non Différenciantes
Aucune technologie critique non différenciante identifiée.
### Technologies Obsolètes
Aucune technologie obsolète identifiée.
### Opportunités d'Innovation
- **"IPFS"** (ring: strategic, impact: medium)
- **"Nostr"** (ring: strategic, impact: medium)
- **"Serverless"** (ring: strategic, impact: medium)
### Gaps de Compétences Critiques
- **"Rust"** (ring: core, impact: high, couverture: 1, niveau: beginner)
- **"Substrate Framework"** (ring: core, impact: high, couverture: 1, niveau: beginner)
## Recommandations Stratégiques
### Priorité 1 : Gérer les Risques Critiques
- **Formation et recrutement** : Investir dans la formation ou le recrutement pour les technologies suivantes :
- "Rust" (1 personne(s), niveau beginner)
- "Substrate Framework" (1 personne(s), niveau beginner)
### Priorité 2 : Optimiser les Coûts
- Aucune optimisation majeure identifiée.
### Priorité 3 : Planifier les Migrations
- Aucune migration urgente requise.
### Priorité 4 : Investir dans l'Innovation
- **Technologies émergentes** : Évaluer l'adoption de :
- "IPFS" (ring: strategic)
- "Nostr" (ring: strategic)
- "Serverless" (ring: strategic)
## Matrice Risques/Opportunités
### Zone Critique (Risque élevé + Impact élevé)
Aucune technologie en zone critique.
### Zone d'Opportunité (Faible risque + Différenciation élevée)
- **"IPFS"** : Opportunité d'investissement
- **"Nostr"** : Opportunité d'investissement
- **"Serverless"** : Opportunité d'investissement

View File

@@ -0,0 +1,175 @@
# Guide d'Utilisation du Radar Business
## Introduction
Le Radar Business est un outil stratégique pour analyser les technologies de l'écosystème Duniter/Ğ1 sous l'angle business. Il permet d'identifier les patterns, les risques, les opportunités et de définir une stratégie d'évolution technique.
## Structure du Radar
### Quadrants
Le radar est organisé en 4 quadrants business :
1. **Technologies Différenciantes** : Créent un avantage concurrentiel
2. **Technologies de Commodité** : Nécessaires mais non différenciantes
3. **Technologies à Risque** : Obsolètes, coûteuses, à migrer
4. **Technologies Émergentes** : Opportunités futures
### Anneaux (Rings)
Chaque technologie est classée dans un des 4 anneaux :
1. **Core** : Technologies critiques pour le business model
2. **Strategic** : Technologies stratégiques pour la croissance
3. **Support** : Technologies de support nécessaires
4. **Legacy** : Technologies à remplacer
## Métadonnées Business
Chaque technologie (blip) contient des métadonnées business :
### Métadonnées Standard
- **title** : Nom de la technologie
- **ring** : Anneau (core, strategic, support, legacy)
- **quadrant** : Quadrant business
- **tags** : Tags pour le filtrage
### Métadonnées Business
- **businessImpact** : Impact sur le business (high, medium, low)
- **costToReplace** : Coût estimé de remplacement en euros
- **revenueImpact** : Impact sur les revenus (direct, indirect, none)
- **riskLevel** : Niveau de risque (high, medium, low)
- **maintenanceCost** : Coût annuel de maintenance en euros
- **differentiation** : Capacité de différenciation (high, medium, low)
### Métadonnées Compétences
- **competencyLevel** : Niveau moyen de compétence (expert, intermediate, beginner)
- **teamCoverage** : Nombre de personnes maîtrisant la technologie
- **skillGap** : Risque de compétence manquante (high, medium, low)
## Utilisation
### Ajouter une Nouvelle Technologie
1. Créer un fichier Markdown dans `radar-business/2025-01-15/`
2. Utiliser le format défini dans `radar-business/FORMAT-BLIP.md`
3. Remplir toutes les métadonnées
4. Ajouter la description et les sections recommandées
### Modifier une Technologie Existante
1. Ouvrir le fichier Markdown correspondant
2. Modifier les métadonnées ou le contenu
3. Mettre à jour la date si changement significatif
### Analyser le Radar
1. Exécuter le script d'analyse :
```bash
node scripts/analyze-business-metrics.js
```
2. Consulter le rapport généré dans `docs/analyse-strategique.md`
### Générer les Blips
Pour régénérer les blips depuis `technologies-duniter.md` :
```bash
node scripts/extract-technologies.js
```
## Interprétation des Résultats
### Technologies Critiques
Les technologies en ring "core" avec businessImpact "high" sont critiques. Elles nécessitent :
- Maintenance proactive
- Formation continue
- Documentation exhaustive
- Plans de continuité
### Technologies à Risque
Les technologies avec riskLevel "high" ou skillGap "high" présentent des risques. Actions recommandées :
- Formation ou recrutement
- Documentation
- Plan de migration si nécessaire
### Opportunités d'Innovation
Les technologies émergentes avec differentiation "high" sont des opportunités. Actions :
- POC (Proof of Concept)
- Évaluation de l'impact
- Adoption progressive
### Optimisation des Coûts
Les technologies de commodité avec maintenanceCost élevé peuvent être optimisées :
- Standardisation
- Automatisation
- Réduction des coûts
## Méthodologie d'Analyse
### 1. Collecte des Données
- Inventorier toutes les technologies
- Collecter les métadonnées business
- Analyser les compétences de l'équipe
### 2. Classification
- Classer par quadrant business
- Classer par ring (core, strategic, support, legacy)
- Évaluer les métadonnées
### 3. Analyse
- Identifier les patterns
- Calculer les métriques
- Identifier les risques et opportunités
### 4. Recommandations
- Prioriser les actions
- Définir la roadmap
- Planifier les investissements
## Templates
### Template de Blip
Voir `radar-business/FORMAT-BLIP.md` pour le template complet.
### Template d'Analyse
Le script `analyze-business-metrics.js` génère automatiquement un rapport d'analyse.
## Maintenance
### Mise à Jour Régulière
- Mettre à jour les métadonnées trimestriellement
- Réviser les classifications annuellement
- Mettre à jour les coûts et risques
### Révision Stratégique
- Révision annuelle de la stratégie
- Ajustement des priorités
- Mise à jour de la roadmap
## Ressources
- **Format des blips** : `radar-business/FORMAT-BLIP.md`
- **Configuration** : `radar-business/config-business.json`
- **Analyse stratégique** : `docs/analyse-strategique.md`
- **Stratégie d'évolution** : `docs/strategie-evolution-technique.md`
## Support
Pour toute question ou contribution, consulter la documentation ou contacter l'équipe technique.

92
docs/profil-team.md Normal file
View File

@@ -0,0 +1,92 @@
poka
Je suis contributeur actif sur le projet Duniter depuis 2016 aux RML7 de Laval.
Je code Ğecko en Flutter/Dart. Je maintiens aussi linfra Axiom-Team, soit 2 serveurs ProxMox.
Jai aussi codé Ğ1-stats en bash. Et jaklis en python. Jai aussi codé py-g1-migrator
Jaime la soupe au poireaux.
edit important: Jaime aussi les tartes aux légumes. Je préfère parler de tarte plutôt que de quiche aux légumes, même si jaime beaucoup les quiches aussi. Je nai aucune animosité particulière vie-à-vis des gens qui préfèrent parler de quiche aux légumes plutôt que de tartes, même si je les considères comme éloignés de moi (au niveau de la race je veux dire hein, pas de malentendu).
Je naime pas le cresson.
ManUtopiK
Diplomé dans le domaine des énergies renouvelables, mon côté “web enthousiaste” ma finalement amené à faire du développement web depuis + de 12 ans.
Passionné par tout ce qui est “alternatif” et qui rend libre, jai découvert le concept de la monnaie libre en 2014. Léconomie actuelle est à mes yeux le principal facteur du bordel que lon a mis sur cette planète depuis des générations. Jespère en un monde un peu plus libre, auto gouverné en intelligence collective, et avec du #solarpunk comme horizon. Profitons des crises pour tout changer !
À fond sur VueJS ; il a créé un CMS basé sur VueJS.
Contributions
Développement et rédaction du site monnaie-libre.fr (Dépôt du site, de lapi)
Développement de la carte.monnaie-libre.fr (Dépôt)
Doc silkaj
WotWizard-UI
g1lib
Duniter UI avec nuxt Abandonné :confused:
En cours
Extension web g1Compagnon
Interface web pour g1Billet
Hugo Trentesaux
Je mintéresse à la Ğ1 depuis 2017 et pense que lassociation Axiom Team constitue une base juridique utile car nécessaire pour de nombreuses interactions avec le monde €.
Jai travaillé sur le dossier de financement de Ǧecko auprès de lADEME avec succès. À lavenir, je compte participer au fonctionnement dAxiom Team, et à la partie rédactionnelle des dossiers de financement.
aya
Je participe à la vulgarisation des logiciels libres depuis ma première installation de linux debian potato en 2001.
Jai découvert la monnaie libre à travers mes recherches concernant les systèmes de fichiers. Travaillant principalement sur des infrastructures dhébergement distribué, jai utilisé différents systèmes de réplication de fichiers comme glusterfs, cephfs, pour en arriver à ipfs. Cest en cherchant une alternative à filecoin, la crypto proposée par ipfs pour mettre en commun son espace de stockage, que je découvre la monnaie libre, on est en 2021.
Je rejoins Axiom-Team pour participer à la vulgarisation de la monnaie libre.
Syoul
Actuellement secrétaire dAxiom-Team
Artisan bidouilleur Libriste, formé à la bidouille (résilience numérique, énergétique, domotique). Artisan laser numérique sur le causse du Querçy (46)
Jai découvert la June en 2018. Depuis, janime avec des groupes locaux, des conférences et Ğmarchés autour de la monnaie libre G1.
Eloïs
A appris les technologies blockchain en autodidact, travaillé sur la “rustification” (passage en Rust) de Duniter v1, puis bossé chez MoonPay.
Yvv
Vieux bouc dans le CA, je tire ma révérence en tant que secrétaire. Focus sur ce qui mintéresse le plus, nouvelle forme de mobilisation.
Pour mission UNL :
Aboutir la tuyauterie autogestion des dons.
Lélargir pour une v2 sur … un goût de paradis, le WishBounty.
Pour mission fédération - services aux monnaie-libristes :
Bosser sur une FAQs version wiki, si un mediawiki ou autre voit le jour.
Bosser sur une médiathèque, si un nocodb ou autre voit le jour.
Pour ML :
Diffuser mon bouquin “une économie du don - enfin concevable” et men servir de support pour mener des ateliers éco et “passer la seconde”.
Lancer un événement structurant, le Librodrome.
Lancer une expérience de production collective monnaie-libriste, probablement une conserverie éphémère mobile.
Fred
A monté une boite (Linkeo) qui a bouffé une partie du marché de PagesJaunes début/milieu des années 2000. Très intéressé (et sachant) sur IPFS, Secure ScuttleButt, Nostr et TiddlyWiki. Il développe Astroport, un système dinformation qui combine la Ğ1, IPFS et Nostr. Par le passé, il a aussi créé G1SMS (système de paiement par SMS en Ğ1) et G1billet (paper wallet pour la Ğ1).
Vivien
Se forme pour contribuer à certains logiciels de la Ğ1 (Cesium). Développe aussi en Godot. Passionné de jeux (cartes Magic notamment).
1000i100
Développeur doutils serverless, et plombier des pipeline Gitlab (CI/CD avec Docker). Enfin une monnaie mécaniquement redistributive ! Avec un soupçon de revenu de base, une bonne dose dauto-gestion et une communauté adorable !Informaticien couteau suisse à dominante développeur web, photographe à ses heures, soutien psy informel, amateur de CNV et de modèles économiques expérimental et éthique !
tuxmain
Étudiant en math. Bien compétent sur la cryptographie, le chiffrage, les conversions de clef dune base en une autre. Administrateur de serveur Minetest. Il bidouille aussi de lélectronique.
boris
Il est assez dispersé, “jack of all trade, master of none”. Ces derniers temps, il passe beaucoup de temps à faire de la génération de musiques rigolotes (ou autre) avec les LLM et Suno. Il aime les langues étrangères (langlais surtout), la médecine traditionnelle chinoise, le Feng Shui (le tao en général). Il est communiste. Il a bossé sur lUX/UI de Ğecko (via Figma). Grâce à Cursor, il développe une app de médecine chinoise basée sur les LLM. Dans la Ğ1, il a essayé de contribuer à lonboarding (il a refait le site monnaie-libre.fr, Duniter | Accueil, et fait le site cesium.app). Il a aussi fait des clients Ğchange : Ğ1Quest (une projection des annonces Ğchange, notamment en “vue radar”), Ğrocéliande (un genre de skin pour Ğchange calqué sur linterface dAmazon, et qui ne prend que les annonces avec “envoi possible” dans la description), g1.business (qui permet de repérer les “routes commerciale”, de faire correspondre pour un produit loffre dun endroit et la demande à un endroit distant, et qui projette sur une carte les moyens de productions disponibles à la location en Ğ1). Il a aussi fait Ğ1Gate (qui permet de suivre les flux de monnaie en vue “treemap”), H2G2 “le guide du terraformeur terrien” (une vue à la recette MineCraft de choses quon peut produire “dans la vraie vie”), Ğ1 KDE Notifier (Un petit outil pour être notifié de mouvements sur un portefeuille Ğ1), un Simulateur RSA / Prime dactivité (Un simulateur RSA/prime dactivité plus très à jour au niveau des données, mais qui permet de se rendre compte à quel point le fonctionnement de la prime dactivité est complètement stupide, et incite à éviter de travailler de façon trop importante trop ponctuellement, si on ne veut pas risquer de perdre de largent en allant se casser le cul au boulot), Cerveau externe (Un truc fait avec Vis.js, pour projeter des mots, colorés suivant la rime, regroupés autour des consonnes, et liés sils appartiennent à un même thème. Dans lidée de faire des impros de rap avec. Proto sans réelle interface utilisateur utilisable par les moldus. Faire F5 pour raffraîchir et ainsi avoir un autre graphe de mots.), NoBS Troll-Emploi (Un moteur de recherche demploi basé sur lAPI Pôle-Emploi et qui permet davoir plus de filtres : mots-clefs à exclure, pas de tutoiement, pas de “digital”, etc… Idéal pour les gens qui, certes, acceptent dêtre exploités lorsquils développent du logiciel, mais veulent diminuer au maximum la quantité de bullshit dans leur job).

View File

@@ -0,0 +1,245 @@
# Stratégie d'Évolution Technique - Duniter/Ğ1
Date: 02/12/2025
## Vision Technique à 3 Ans
### Objectifs Stratégiques
1. **Renforcer la différenciation** : Maintenir et développer les technologies qui créent un avantage concurrentiel
2. **Réduire les risques** : Éliminer les dépendances critiques et les gaps de compétences
3. **Optimiser les coûts** : Réduire les coûts de maintenance des technologies de commodité
4. **Innover** : Explorer et adopter les technologies émergentes prometteuses
## Roadmap d'Évolution
### Année 1 : Consolidation et Réduction des Risques
#### Q1-Q2 : Gestion des Gaps de Compétences Critiques
**Objectif** : Réduire les risques liés aux compétences manquantes
**Actions** :
- Identifier les technologies critiques avec faible couverture d'équipe
- Mettre en place un plan de formation pour les technologies core
- Documenter les connaissances critiques
- Créer des plans de continuité en cas de départ
**Technologies prioritaires** :
- Rust / Substrate (blockchain core)
- Docker / Infrastructure
- PostgreSQL
**Budget estimé** : Formation et documentation
#### Q3-Q4 : Optimisation des Commodités
**Objectif** : Réduire les coûts de maintenance des technologies non différenciantes
**Actions** :
- Auditer les coûts de maintenance
- Identifier les opportunités d'optimisation
- Standardiser les pratiques
- Automatiser les tâches répétitives
**Technologies cibles** :
- Infrastructure (Docker, Linux, PostgreSQL)
- Outils de développement
**Budget estimé** : Automatisation et optimisation
### Année 2 : Innovation et Différenciation
#### Q1-Q2 : Évaluation des Technologies Émergentes
**Objectif** : Identifier et évaluer les technologies prometteuses
**Actions** :
- POC (Proof of Concept) sur les technologies émergentes
- Évaluer l'impact business potentiel
- Mesurer la capacité de différenciation
- Tester l'adoption par l'équipe
**Technologies à évaluer** :
- IPFS (stockage distribué)
- Nostr (protocole décentralisé)
- Serverless (architecture)
**Budget estimé** : POC et évaluation
#### Q3-Q4 : Adoption Stratégique
**Objectif** : Adopter les technologies émergentes validées
**Actions** :
- Intégrer les technologies validées dans les projets
- Former l'équipe
- Documenter les bonnes pratiques
- Monitorer l'impact
**Budget estimé** : Développement et formation
### Année 3 : Maturité et Évolution Continue
#### Objectifs
- Maintenir un radar technologique à jour
- Continuer l'innovation
- Optimiser en continu
- Gérer les risques proactivement
## Priorités d'Investissement
### Priorité 1 : Technologies Core (Critiques)
**Investissement** : Maximum
**Focus** : Stabilité, performance, sécurité
**Technologies** :
- Rust / Substrate (blockchain)
- Infrastructure critique
**Actions** :
- Maintenance proactive
- Formation continue
- Documentation exhaustive
- Plans de continuité
### Priorité 2 : Technologies Stratégiques
**Investissement** : Élevé
**Focus** : Croissance, différenciation
**Technologies** :
- Technologies différenciantes
- Technologies émergentes prometteuses
**Actions** :
- Développement actif
- Innovation
- Expérimentation
### Priorité 3 : Technologies de Support
**Investissement** : Modéré
**Focus** : Efficacité, coût
**Technologies** :
- Technologies de commodité
- Outils de développement
**Actions** :
- Optimisation
- Standardisation
- Automatisation
### Priorité 4 : Technologies Legacy
**Investissement** : Minimal (migration)
**Focus** : Remplacement, réduction des risques
**Technologies** :
- Technologies obsolètes
- Technologies à risque
**Actions** :
- Planification de migration
- Réduction progressive
- Remplacement
## Plan de Migration
### Technologies à Migrer
#### Court Terme (0-6 mois)
Aucune migration urgente identifiée actuellement.
#### Moyen Terme (6-18 mois)
- Évaluer les technologies legacy
- Planifier les remplacements
- Identifier les alternatives
#### Long Terme (18+ mois)
- Exécuter les migrations planifiées
- Valider les alternatives
- Documenter les leçons apprises
## Gestion des Risques
### Risques Identifiés
1. **Gaps de compétences** : Technologies critiques avec faible couverture
2. **Dépendances uniques** : Technologies sans alternative
3. **Obsolescence** : Technologies vieillissantes
4. **Coûts** : Maintenance élevée de certaines technologies
### Stratégies de Mitigation
1. **Formation et recrutement** : Réduire les gaps de compétences
2. **Diversification** : Éviter les dépendances uniques
3. **Veille technologique** : Détecter l'obsolescence tôt
4. **Optimisation continue** : Réduire les coûts
## KPIs de Suivi
### Métriques Techniques
- **Couverture d'équipe** : Nombre moyen de personnes par technologie
- **Gaps de compétences** : Nombre de technologies avec gap élevé
- **Risques techniques** : Nombre de technologies à risque élevé
- **Coûts** : Coût total de maintenance
### Métriques Business
- **Différenciation** : Nombre de technologies différenciantes
- **Innovation** : Nombre de technologies émergentes adoptées
- **Efficacité** : Réduction des coûts de maintenance
- **Stabilité** : Réduction des incidents techniques
### Objectifs Annuels
**Année 1** :
- Réduire les gaps de compétences de 50%
- Documenter 100% des technologies core
- Réduire les coûts de maintenance de 20%
**Année 2** :
- Adopter 2-3 technologies émergentes
- Maintenir les gaps de compétences < 2 technologies
- Optimiser les coûts de 30%
**Année 3** :
- Maintenir un radar à jour
- Continuer l'innovation
- Optimiser en continu
## Communication et Gouvernance
### Comité Technique
- Réunion trimestrielle pour revue du radar
- Décisions sur les priorités d'investissement
- Validation des migrations
### Reporting
- Rapport mensuel sur les métriques
- Rapport trimestriel sur l'avancement
- Rapport annuel sur la stratégie
### Parties Prenantes
- Équipe technique
- Direction
- Financement (si applicable)
- Communauté (open source)
## Conclusion
Cette stratégie d'évolution technique vise à aligner les choix technologiques avec les objectifs business, réduire les risques, optimiser les coûts et favoriser l'innovation.
La mise en œuvre de cette stratégie nécessite un engagement continu de l'équipe et un suivi régulier des métriques définies.

View File

@@ -0,0 +1,330 @@
# Technologies et Compétences - Écosystème Duniter/Ğ1
Ce document liste les technologies et compétences identifiées dans l'écosystème Duniter/Ğ1 basé sur l'analyse de https://git.duniter.org/
## Technologies de Développement
### Langages de Programmation
#### Rust
- **Utilisation** : Développement du nœud Duniter v2S (basé sur Substrate)
- **Projets** :
- `Duniter v2S` : Nœud blockchain principal
- `Ğcli-v2s` : Interface en ligne de commande Rust
- `homebrew-duniter-gcli` : Package Homebrew pour Ğcli
- **Compétences requises** : Rust avancé, développement blockchain, Substrate framework
#### Python
- **Utilisation** : Clients en ligne de commande et outils
- **Projets** :
- `silkaj` : Client CLI Python pour la monnaie Ğ1
- `Tikka` : Client riche pour la monnaie Ğ1
- **Compétences requises** : Python, développement CLI, APIs REST
#### JavaScript/TypeScript
- **Utilisation** : Clients web, extensions navigateur, sites web
- **Projets** :
- `Ğ1Companion` : Extension web pour navigateurs
- Clients web divers
- **Compétences requises** : JavaScript/TypeScript, développement d'extensions navigateur, Web APIs
### Frameworks et Bibliothèques
#### Substrate Framework
- **Utilisation** : Framework blockchain pour Duniter v2S
- **Description** : Framework Rust pour construire des blockchains personnalisées
- **Compétences requises** : Blockchain, Rust, Substrate, consensus algorithms
#### Nuxt.js
- **Utilisation** : Framework Vue.js pour sites web
- **Projets** :
- `monnaie-libre-fr` : Site web avec Nuxt + nuxt-content
- **Compétences requises** : Vue.js, Nuxt.js, SSR, JAMstack
#### NetlifyCMS
- **Utilisation** : CMS headless basé sur Git
- **Projets** :
- `monnaie-libre-fr` : CMS pour le site web
- **Compétences requises** : Git-based CMS, JAMstack, workflows Git
#### WordUp CMS
- **Utilisation** : CMS pour sites web
- **Projets** :
- `axiom-team-fr` : Site de production avec WordUp
- **Compétences requises** : CMS management, intégration d'APIs
### Outils et Bibliothèques Spécialisées
#### Squid (Indexer)
- **Utilisation** : Indexation de données blockchain
- **Projets** :
- `duniter-squid` : Indexer basé sur Squid pour Duniter v2S
- **Compétences requises** : Indexation de données, GraphQL, blockchain data processing
#### g1-papi
- **Utilisation** : Bibliothèque API pour Ğ1
- **Type** : Bibliothèque partagée
- **Compétences requises** : API design, développement de bibliothèques
### Clients et Interfaces
#### Clients CLI (Command Line Interface)
- **Rust CLI** : `Ğcli-v2s` - Interface avancée pour utilisateurs experts
- **Python CLI** : `silkaj`, `Tikka` - Clients en ligne de commande
- **Compétences requises** : Développement CLI, UX en ligne de commande, parsing d'arguments
#### Extensions Navigateur
- **Ğ1Companion** : Extension web pour navigateurs
- **Compétences requises** : Web Extensions API, Chrome/Firefox extensions, JavaScript
#### Clients Graphiques
- **Ğecko** : Client avec interface graphique
- **Cesium-grp/cesium2s** : Client Cesium pour Duniter v2s
- **Compétences requises** : Développement d'interfaces graphiques, frameworks UI
### Intégrations et APIs
#### Intégrations Externes
- **HelloAsso** : Intégration pour dons
- **Paheko** : Intégration comptable
- **ĞWishBounty** : Application pour automatiser les flux de dons
- **Compétences requises** : Intégration d'APIs tierces, webhooks, synchronisation de données
#### APIs Internes
- **api-axiom-team-fr** : API pour le site Axiom
- **Compétences requises** : REST APIs, GraphQL, documentation d'API
## Technologies d'Infrastructure et Déploiement
### Conteneurisation
- **Docker** : Conteneurisation des applications
- **Compétences requises** : Docker, Docker Compose, orchestration de conteneurs
### Déploiement Web
- **Netlify** : Déploiement JAMstack (mentionné pour monnaie-libre-fr)
- **Compétences requises** : CI/CD, déploiement continu, Netlify
### Gestion de Code Source
- **Git** : Système de contrôle de version
- **Forge Git** : git.duniter.org (forge Git auto-hébergée)
- **Compétences requises** : Git avancé, workflows Git, gestion de forge
### Package Management
- **Homebrew** : Gestion de paquets pour macOS
- **npm/yarn** : Gestion de paquets JavaScript
- **pip/poetry** : Gestion de paquets Python
- **Cargo** : Gestion de paquets Rust
- **Compétences requises** : Gestion de dépendances, gestion de versions, publication de paquets
## Compétences d'Administration Système
### Administration Linux/Unix
- **Systèmes d'exploitation** : Linux (Debian, Ubuntu, etc.)
- **Compétences requises** :
- Administration système Linux
- Gestion des utilisateurs et permissions
- Configuration réseau
- Monitoring système
- Gestion des logs
- Sécurisation des serveurs
### Administration Blockchain
- **Gestion de nœuds** : Administration de nœuds Duniter
- **Compétences requises** :
- Configuration de nœuds blockchain
- Gestion de la synchronisation
- Monitoring de la blockchain
- Gestion des clés cryptographiques
- Maintenance des nœuds
### Bases de Données
- **PostgreSQL** : Base de données relationnelle utilisée dans les projets
- **Compétences requises** :
- Administration PostgreSQL
- Optimisation de requêtes
- Sauvegarde et restauration
- Réplication
- Performance tuning
- SQL avancé
### Réseau et Sécurité
- **Réseau** :
- Configuration de pare-feu
- Gestion des ports et services
- Load balancing
- CDN configuration
- DNS, DHCP, VPN, SD-WAN
- Configuration réseau avancée
- **Sécurité** :
- SSL/TLS configuration
- Gestion des certificats
- Sécurisation des APIs
- Protection contre les attaques
- Audit de sécurité
- Chiffrement des communications et données
- Surveillance et détection d'intrusions
- Prévention des cyberattaques
### Monitoring et Observabilité
- **Monitoring** :
- Monitoring des applications
- Monitoring des nœuds blockchain
- Alerting
- Métriques et dashboards
- **Logs** :
- Centralisation des logs
- Analyse de logs
- Rotation des logs
### CI/CD et Automatisation
- **Intégration Continue** :
- Configuration de pipelines CI/CD
- Tests automatisés
- Build automatisé
- Déploiement automatisé
- **Outils** :
- GitHub Actions, GitLab CI, Drone CI
- Scripts d'automatisation
- Configuration de workflows
### Automatisation et Scripting
- **Scripts** :
- Bash scripting avancé
- Python scripting pour automatisation
- Automatisation de tâches d'administration
- Scripts de déploiement
- Automatisation des environnements pour cohérence
- **Compétences requises** : Scripting, automatisation, amélioration de la cohérence des environnements
### Infrastructure Cloud/On-Premise
- **Cloud** :
- Déploiement sur cloud (si applicable)
- Gestion de ressources cloud
- Auto-scaling
- **On-Premise** :
- Gestion de serveurs physiques
- Virtualisation (VMware, Hyper-V, KVM)
- Gestion de l'infrastructure
- Provisioning de serveurs
### Gestion de Configuration
- **Configuration Management** :
- Ansible, Puppet, Chef
- Infrastructure as Code
- Configuration de serveurs
- **Versioning** :
- Versioning de la configuration
- Gestion des environnements (dev, staging, prod)
### Sauvegarde et Récupération
- **Sauvegarde** :
- Stratégies de sauvegarde
- Sauvegarde des bases de données
- Sauvegarde de la configuration
- Sauvegarde de la blockchain
- **Récupération** :
- Plans de reprise après sinistre
- Tests de restauration
- RTO/RPO
## Compétences DevOps
### Container Orchestration
- **Kubernetes** : Orchestration de conteneurs (mentionné comme compétence requise)
- **Docker Swarm** : Alternative à Kubernetes
- **Compétences requises** : Orchestration, scaling, service mesh, gestion de clusters
### Infrastructure as Code
- **Terraform** : Provisioning d'infrastructure
- **CloudFormation** : Si AWS
- **Compétences requises** : IaC, provisioning automatisé
### Secrets Management
- **Gestion des secrets** : Vault, AWS Secrets Manager
- **Compétences requises** : Sécurité des secrets, rotation
## Compétences Spécialisées Blockchain
### Cryptographie
- **Cryptographie appliquée** :
- Signatures cryptographiques
- Hashing
- Clés publiques/privées
- Certificats
- **Compétences requises** : Cryptographie, sécurité
### Consensus et Réseau
- **Protocoles de consensus** : Compréhension des mécanismes de consensus
- **Réseau P2P** : Gestion de réseaux pair-à-pair
- **Compétences requises** : Blockchain, réseaux distribués
## Résumé des Compétences par Catégorie
### Développement
- Rust (avancé)
- Python
- JavaScript/TypeScript
- Vue.js / Nuxt.js
- Substrate Framework
- Développement CLI
- Extensions navigateur
- APIs REST/GraphQL
### Blockchain
- Développement blockchain
- Substrate
- Consensus algorithms
- Cryptographie
- Réseaux P2P
### Web
- Frameworks web modernes
- JAMstack
- CMS headless
- Intégrations d'APIs
### Infrastructure
- Administration Linux
- Docker/Conteneurisation
- CI/CD
- Monitoring
- Sécurité
- Bases de données
- Réseau
### DevOps
- Automatisation
- Infrastructure as Code
- Gestion de configuration
- Orchestration
## Compétences Transversales
### Communication et Collaboration
- Travail en équipe avec développeurs et parties prenantes
- Communication efficace
- Documentation technique
- Partage de connaissances
### Veille Technologique
- Suivi des évolutions technologiques
- Meilleures pratiques du secteur
- Évaluation de nouvelles technologies
- Adaptation aux changements
## Notes
Cette liste est basée sur l'analyse des projets visibles sur https://git.duniter.org/ et les informations disponibles sur l'écosystème Duniter/Ğ1. Certaines technologies peuvent être utilisées mais non explicitement mentionnées dans les descriptions de projets.
### Sources
- https://git.duniter.org/ - Dépôt principal des projets Duniter
- Documentation technique des projets individuels
- Analyse des technologies blockchain et monnaies libres
### Pour une analyse complète, il serait recommandé de :
1. Examiner le code source des projets principaux
2. Analyser les fichiers de configuration (package.json, Cargo.toml, requirements.txt, Dockerfile)
3. Examiner les fichiers de déploiement (docker-compose.yml, scripts CI/CD)
4. Consulter la documentation technique de chaque projet
5. Analyser les dépendances et bibliothèques utilisées

View File

@@ -6,7 +6,9 @@
"license": "MIT",
"scripts": {
"build": "techradar build",
"serve": "techradar serve"
"serve": "techradar serve",
"extract-tech": "node scripts/extract-technologies.js",
"analyze-business": "node scripts/analyze-business-metrics.js"
},
"dependencies": {
"aoe_technology_radar": "github:AOEpeople/aoe_technology_radar#main"

View File

@@ -0,0 +1,37 @@
---
title: "Bash"
ring: support
quadrant: technologies-commodite
tags: [bash, scripting]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: beginner
maintenanceCost: 0
differentiation: medium
teamCoverage: 1
skillGap: high
---
Technologie Bash utilisée dans l'écosystème Duniter/Ğ1.
## Impact Business
À compléter
## 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 : poka
- Niveau moyen : beginner
- Risque de compétence manquante : high
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,37 @@
---
title: "Cryptographie"
ring: support
quadrant: technologies-commodite
tags: [cryptographie, chiffrage]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: beginner
maintenanceCost: 0
differentiation: medium
teamCoverage: 1
skillGap: high
---
Technologie Cryptographie utilisée dans l'écosystème Duniter/Ğ1.
## Impact Business
À compléter
## 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 : tuxmain
- Niveau moyen : beginner
- Risque de compétence manquante : high
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,37 @@
---
title: "Dart"
ring: support
quadrant: technologies-commodite
tags: [Dart, Flutter]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: beginner
maintenanceCost: 0
differentiation: medium
teamCoverage: 1
skillGap: high
---
Technologie Dart utilisée dans l'écosystème Duniter/Ğ1.
## Impact Business
À compléter
## 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 : poka
- Niveau moyen : beginner
- Risque de compétence manquante : high
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,37 @@
---
title: "Docker"
ring: support
quadrant: technologies-commodite
tags: [Docker, conteneurisation]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: low
competencyLevel: beginner
maintenanceCost: 0
differentiation: low
teamCoverage: 1
skillGap: high
---
Technologie Docker utilisée dans l'écosystème Duniter/Ğ1.
## Impact Business
À compléter
## 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 : 1000i100
- Niveau moyen : beginner
- Risque de compétence manquante : high
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,37 @@
---
title: "Flutter"
ring: support
quadrant: technologies-commodite
tags: [Flutter, Dart]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: beginner
maintenanceCost: 0
differentiation: medium
teamCoverage: 1
skillGap: high
---
Technologie Flutter utilisée dans l'écosystème Duniter/Ğ1.
## Impact Business
À compléter
## 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 : poka
- Niveau moyen : beginner
- Risque de compétence manquante : high
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,37 @@
---
title: "GitLab CI/CD"
ring: support
quadrant: technologies-commodite
tags: [GitLab, CI/CD]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: beginner
maintenanceCost: 0
differentiation: medium
teamCoverage: 1
skillGap: high
---
Technologie GitLab CI/CD utilisée dans l'écosystème Duniter/Ğ1.
## Impact Business
À compléter
## 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 : 1000i100
- Niveau moyen : beginner
- Risque de compétence manquante : high
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,37 @@
---
title: "IPFS"
ring: strategic
quadrant: technologies-emergentes
tags: [IPFS, distribué]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: intermediate
maintenanceCost: 0
differentiation: high
teamCoverage: 2
skillGap: medium
---
Technologie IPFS utilisée dans l'écosystème Duniter/Ğ1.
## Impact Business
À compléter
## Coûts
- Coût de remplacement : 0€
- Coût de maintenance annuel : 0€
## Compétences
- Nombre de personnes maîtrisant : 2
- Membres de l'équipe : aya, Fred
- Niveau moyen : intermediate
- Risque de compétence manquante : medium
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,43 @@
---
title: "JavaScript/TypeScript"
ring: support
quadrant: technologies-commodite
tags: [JavaScript, TypeScript, web]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: expert
maintenanceCost: 0
differentiation: medium
teamCoverage: 3
skillGap: low
---
- **Utilisation** : Clients web, extensions navigateur, sites web
- **Projets** :
- `Ğ1Companion` : Extension web pour navigateurs
- Clients web divers
- **Compétences requises** : JavaScript/TypeScript, développement d'extensions navigateur, Web APIs
#
## Impact Business
À compléter
## Coûts
- Coût de remplacement : 0€
- Coût de maintenance annuel : 0€
## Compétences
- Nombre de personnes maîtrisant : 3
- Membres de l'équipe : ManUtopiK, 1000i100, boris
- Niveau moyen : expert
- Risque de compétence manquante : low
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,37 @@
---
title: "Kubernetes"
ring: support
quadrant: technologies-commodite
tags: [Kubernetes, orchestration]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: beginner
maintenanceCost: 0
differentiation: medium
teamCoverage: 0
skillGap: high
---
Technologie Kubernetes utilisée dans l'écosystème Duniter/Ğ1.
## Impact Business
À compléter
## Coûts
- Coût de remplacement : 0€
- Coût de maintenance annuel : 0€
## Compétences
- Nombre de personnes maîtrisant : 0
- Membres de l'équipe : Aucun
- Niveau moyen : beginner
- Risque de compétence manquante : high
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,37 @@
---
title: "Linux"
ring: support
quadrant: technologies-commodite
tags: [Linux, système]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: low
competencyLevel: intermediate
maintenanceCost: 0
differentiation: low
teamCoverage: 2
skillGap: medium
---
Technologie Linux utilisée dans l'écosystème Duniter/Ğ1.
## Impact Business
À compléter
## Coûts
- Coût de remplacement : 0€
- Coût de maintenance annuel : 0€
## Compétences
- Nombre de personnes maîtrisant : 2
- Membres de l'équipe : aya, boris
- Niveau moyen : intermediate
- Risque de compétence manquante : medium
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,40 @@
---
title: "NetlifyCMS"
ring: support
quadrant: technologies-commodite
tags: [CMS, Git]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: intermediate
maintenanceCost: 0
differentiation: medium
teamCoverage: 2
skillGap: medium
---
- **Utilisation** : CMS headless basé sur Git
- **Projets** :
- `monnaie-libre-fr` : CMS pour le site web
- **Compétences requises** : Git-based CMS, JAMstack, workflows Git
## Impact Business
À compléter
## Coûts
- Coût de remplacement : 0€
- Coût de maintenance annuel : 0€
## Compétences
- Nombre de personnes maîtrisant : 2
- Membres de l'équipe : ManUtopiK, 1000i100
- Niveau moyen : intermediate
- Risque de compétence manquante : medium
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,37 @@
---
title: "Nostr"
ring: strategic
quadrant: technologies-emergentes
tags: [Nostr, protocole]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: beginner
maintenanceCost: 0
differentiation: high
teamCoverage: 1
skillGap: high
---
Technologie Nostr utilisée dans l'écosystème Duniter/Ğ1.
## Impact Business
À compléter
## 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 : Fred
- Niveau moyen : beginner
- Risque de compétence manquante : high
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,40 @@
---
title: "Nuxt.js"
ring: support
quadrant: technologies-commodite
tags: [Nuxt, Vue, SSR]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: intermediate
maintenanceCost: 0
differentiation: medium
teamCoverage: 2
skillGap: medium
---
- **Utilisation** : Framework Vue.js pour sites web
- **Projets** :
- `monnaie-libre-fr` : Site web avec Nuxt + nuxt-content
- **Compétences requises** : Vue.js, Nuxt.js, SSR, JAMstack
## Impact Business
À compléter
## Coûts
- Coût de remplacement : 0€
- Coût de maintenance annuel : 0€
## Compétences
- Nombre de personnes maîtrisant : 2
- Membres de l'équipe : ManUtopiK, boris
- Niveau moyen : intermediate
- Risque de compétence manquante : medium
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,37 @@
---
title: "PostgreSQL"
ring: support
quadrant: technologies-commodite
tags: [PostgreSQL, base de données]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: low
competencyLevel: beginner
maintenanceCost: 0
differentiation: low
teamCoverage: 0
skillGap: high
---
Technologie PostgreSQL utilisée dans l'écosystème Duniter/Ğ1.
## Impact Business
À compléter
## Coûts
- Coût de remplacement : 0€
- Coût de maintenance annuel : 0€
## Compétences
- Nombre de personnes maîtrisant : 0
- Membres de l'équipe : Aucun
- Niveau moyen : beginner
- Risque de compétence manquante : high
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,37 @@
---
title: "ProxMox"
ring: support
quadrant: technologies-commodite
tags: [ProxMox, virtualisation]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: beginner
maintenanceCost: 0
differentiation: medium
teamCoverage: 1
skillGap: high
---
Technologie ProxMox utilisée dans l'écosystème Duniter/Ğ1.
## Impact Business
À compléter
## 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 : poka
- Niveau moyen : beginner
- Risque de compétence manquante : high
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,41 @@
---
title: "Python"
ring: support
quadrant: technologies-commodite
tags: [Python, CLI]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: beginner
maintenanceCost: 0
differentiation: medium
teamCoverage: 1
skillGap: high
---
- **Utilisation** : Clients en ligne de commande et outils
- **Projets** :
- `silkaj` : Client CLI Python pour la monnaie Ğ1
- `Tikka` : Client riche pour la monnaie Ğ1
- **Compétences requises** : Python, développement CLI, APIs REST
## Impact Business
À compléter
## 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 : poka
- Niveau moyen : beginner
- Risque de compétence manquante : high
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,42 @@
---
title: "Rust"
ring: core
quadrant: technologies-differentiantes
tags: [Rust, blockchain, Substrate]
businessImpact: high
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: beginner
maintenanceCost: 0
differentiation: high
teamCoverage: 1
skillGap: high
---
- **Utilisation** : Développement du nœud Duniter v2S (basé sur Substrate)
- **Projets** :
- `Duniter v2S` : Nœud blockchain principal
- `Ğcli-v2s` : Interface en ligne de commande Rust
- `homebrew-duniter-gcli` : Package Homebrew pour Ğcli
- **Compétences requises** : Rust avancé, développement blockchain, Substrate framework
## Impact Business
À compléter
## 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 : Eloïs
- Niveau moyen : beginner
- Risque de compétence manquante : high
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,37 @@
---
title: "Serverless"
ring: strategic
quadrant: technologies-emergentes
tags: [Serverless]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: beginner
maintenanceCost: 0
differentiation: high
teamCoverage: 1
skillGap: high
---
Technologie Serverless utilisée dans l'écosystème Duniter/Ğ1.
## Impact Business
À compléter
## 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 : 1000i100
- Niveau moyen : beginner
- Risque de compétence manquante : high
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,40 @@
---
title: "Squid"
ring: support
quadrant: technologies-commodite
tags: [Squid, indexer, GraphQL]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: beginner
maintenanceCost: 0
differentiation: medium
teamCoverage: 1
skillGap: high
---
- **Utilisation** : Indexation de données blockchain
- **Projets** :
- `duniter-squid` : Indexer basé sur Squid pour Duniter v2S
- **Compétences requises** : Indexation de données, GraphQL, blockchain data processing
## Impact Business
À compléter
## 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 : boris
- Niveau moyen : beginner
- Risque de compétence manquante : high
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,39 @@
---
title: "Substrate Framework"
ring: core
quadrant: technologies-differentiantes
tags: [Substrate, Rust, blockchain]
businessImpact: high
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: beginner
maintenanceCost: 0
differentiation: high
teamCoverage: 1
skillGap: high
---
- **Utilisation** : Framework blockchain pour Duniter v2S
- **Description** : Framework Rust pour construire des blockchains personnalisées
- **Compétences requises** : Blockchain, Rust, Substrate, consensus algorithms
## Impact Business
À compléter
## 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 : Eloïs
- Niveau moyen : beginner
- Risque de compétence manquante : high
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,37 @@
---
title: "Vue.js"
ring: support
quadrant: technologies-commodite
tags: [Vue, JavaScript]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: intermediate
maintenanceCost: 0
differentiation: medium
teamCoverage: 2
skillGap: medium
---
Technologie Vue.js utilisée dans l'écosystème Duniter/Ğ1.
## Impact Business
À compléter
## Coûts
- Coût de remplacement : 0€
- Coût de maintenance annuel : 0€
## Compétences
- Nombre de personnes maîtrisant : 2
- Membres de l'équipe : ManUtopiK, boris
- Niveau moyen : intermediate
- Risque de compétence manquante : medium
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,42 @@
---
title: "WordUp CMS"
ring: support
quadrant: technologies-commodite
tags: [CMS]
businessImpact: medium
costToReplace: 0
revenueImpact: indirect
riskLevel: medium
competencyLevel: beginner
maintenanceCost: 0
differentiation: medium
teamCoverage: 1
skillGap: high
---
- **Utilisation** : CMS pour sites web
- **Projets** :
- `axiom-team-fr` : Site de production avec WordUp
- **Compétences requises** : CMS management, intégration d'APIs
#
## Impact Business
À compléter
## 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 : ManUtopiK
- Niveau moyen : beginner
- Risque de compétence manquante : high
## Recommandations
À compléter avec des recommandations stratégiques.

View File

@@ -0,0 +1,139 @@
# Format de Blip Enrichi - Métadonnées Business
Ce document définit le format standard pour les blips du radar business avec toutes les métadonnées business.
## Structure de base
```markdown
---
title: "Nom de la technologie"
ring: core|strategic|support|legacy
quadrant: technologies-differentiantes|technologies-commodite|technologies-risque|technologies-emergentes
tags: [tag1, tag2]
businessImpact: high|medium|low
costToReplace: 50000
revenueImpact: direct|indirect|none
riskLevel: high|medium|low
competencyLevel: expert|intermediate|beginner
maintenanceCost: 10000
differentiation: high|medium|low
teamCoverage: 3
skillGap: low|medium|high
---
Description de la technologie en Markdown.
## Impact Business
Description de l'impact sur le business.
## Coûts
- Coût de remplacement : X€
- Coût de maintenance annuel : Y€
## Compétences
- Nombre de personnes maîtrisant : N
- Niveau moyen : expert|intermediate|beginner
- Risque de compétence manquante : low|medium|high
## Recommandations
Recommandations stratégiques pour cette technologie.
```
## Description des métadonnées
### Métadonnées standard
- **title** (obligatoire) : Nom de la technologie
- **ring** (obligatoire) :
- `core` : Critique pour le business model
- `strategic` : Stratégique pour la croissance
- `support` : De support nécessaire
- `legacy` : À remplacer
- **quadrant** (obligatoire) :
- `technologies-differentiantes` : Créent un avantage concurrentiel
- `technologies-commodite` : Nécessaires mais non différenciantes
- `technologies-risque` : Obsolètes, coûteuses, à migrer
- `technologies-emergentes` : Opportunités futures
- **tags** (optionnel) : Tags pour le filtrage
### Métadonnées business
- **businessImpact** (obligatoire) :
- `high` : Impact majeur sur le business
- `medium` : Impact modéré
- `low` : Impact faible
- **costToReplace** (obligatoire) : Coût estimé de remplacement en euros (0 si non applicable)
- **revenueImpact** (obligatoire) :
- `direct` : Impact direct sur les revenus
- `indirect` : Impact indirect (support, efficacité)
- `none` : Pas d'impact sur les revenus
- **riskLevel** (obligatoire) :
- `high` : Risque élevé (obsolescence, sécurité, dépendance)
- `medium` : Risque modéré
- `low` : Risque faible
- **maintenanceCost** (obligatoire) : Coût annuel de maintenance en euros
- **differentiation** (obligatoire) :
- `high` : Forte capacité de différenciation
- `medium` : Différenciation modérée
- `low` : Faible différenciation (commodité)
### Métadonnées compétences
- **competencyLevel** (obligatoire) : Niveau moyen de compétence de l'équipe
- `expert` : Plusieurs experts dans l'équipe
- `intermediate` : Compétences intermédiaires
- `beginner` : Compétences limitées
- **teamCoverage** (obligatoire) : Nombre de personnes maîtrisant la technologie
- **skillGap** (obligatoire) : Risque de compétence manquante
- `high` : Risque élevé (peu de personnes, départ possible)
- `medium` : Risque modéré
- `low` : Risque faible (plusieurs personnes compétentes)
## Exemple complet
```markdown
---
title: "Rust / Substrate"
ring: core
quadrant: technologies-differentiantes
tags: [blockchain, rust, substrate]
businessImpact: high
costToReplace: 200000
revenueImpact: direct
riskLevel: medium
competencyLevel: intermediate
maintenanceCost: 50000
differentiation: high
teamCoverage: 2
skillGap: high
---
Rust et le framework Substrate sont au cœur du développement de Duniter v2S, le nœud blockchain principal.
## Impact Business
Technologie critique pour le fonctionnement de la blockchain Ğ1. Sans cette technologie, le projet ne peut pas fonctionner.
## Coûts
- Coût de remplacement : 200 000€ (refonte complète)
- Coût de maintenance annuel : 50 000€ (développement, mise à jour)
## Compétences
- Nombre de personnes maîtrisant : 2 (Eloïs, autres contributeurs)
- Niveau moyen : intermediate
- Risque de compétence manquante : high (peu de personnes, compétences critiques)
## Recommandations
- Investir dans la formation de l'équipe sur Rust/Substrate
- Recruter ou former des développeurs Rust supplémentaires
- Documenter les connaissances critiques
- Créer un plan de continuité en cas de départ de contributeurs clés
```

45
radar-business/README.md Normal file
View File

@@ -0,0 +1,45 @@
# Radar Stratégique Business
Ce dossier contient le radar technologique orienté business pour analyser l'écosystème Duniter/Ğ1.
## Structure
- `config-business.json` : Configuration du radar avec quadrants et anneaux business
- `2025-01-15/` : Blips des technologies avec métadonnées business
## Format des blips
Chaque technologie est définie dans un fichier Markdown avec des métadonnées enrichies :
```markdown
---
title: "Nom de la technologie"
ring: core|strategic|support|legacy
quadrant: technologies-differentiantes|technologies-commodite|technologies-risque|technologies-emergentes
tags: [tag1, tag2]
businessImpact: high|medium|low
costToReplace: 50000
revenueImpact: direct|indirect|none
riskLevel: high|medium|low
competencyLevel: expert|intermediate|beginner
maintenanceCost: 10000
differentiation: high|medium|low
teamCoverage: 3
skillGap: low|medium|high
---
Description de la technologie.
```
## Métadonnées business
- **businessImpact** : Impact sur le business (high, medium, low)
- **costToReplace** : Coût estimé de remplacement en euros
- **revenueImpact** : Impact sur les revenus (direct, indirect, none)
- **riskLevel** : Niveau de risque technique/business (high, medium, low)
- **competencyLevel** : Niveau de compétence moyen de l'équipe (expert, intermediate, beginner)
- **maintenanceCost** : Coût annuel de maintenance en euros
- **differentiation** : Capacité de différenciation (high, medium, low)
- **teamCoverage** : Nombre de personnes maîtrisant la technologie
- **skillGap** : Risque de compétence manquante (high, medium, low)

View File

@@ -0,0 +1,124 @@
{
"basePath": "/business",
"baseUrl": "",
"editUrl": "https://git.open.us.org/syoul/TechradarDev/_edit/main/radar-business/{release}/{id}.md",
"logoFile": "logo.svg",
"jsFile": "",
"toggles": {
"showChart": true,
"showTagFilter": true,
"showQuadrantList": true,
"showEmptyRings": false
},
"sections": ["radar", "tags", "list"],
"colors": {
"foreground": "#fff",
"background": "#1a4d3a",
"highlight": "#2ecc71",
"content": "#fff",
"text": "#575757",
"link": "#2ecc71",
"border": "rgba(255, 255, 255, 0.1)",
"tag": "rgba(255, 255, 255, 0.1)"
},
"quadrants": [
{
"id": "technologies-differentiantes",
"title": "Technologies Différenciantes",
"description": "Technologies qui créent un avantage concurrentiel et de la valeur différenciante pour le business. Ce sont les technologies qui permettent de se distinguer sur le marché.",
"color": "#2ecc71"
},
{
"id": "technologies-commodite",
"title": "Technologies de Commodité",
"description": "Technologies nécessaires mais non différenciantes. Elles sont essentielles au fonctionnement mais ne créent pas d'avantage concurrentiel. À optimiser pour réduire les coûts.",
"color": "#3498db"
},
{
"id": "technologies-risque",
"title": "Technologies à Risque",
"description": "Technologies obsolètes, coûteuses ou présentant des risques techniques ou business. À migrer ou remplacer pour réduire les risques et les coûts.",
"color": "#e74c3c"
},
{
"id": "technologies-emergentes",
"title": "Technologies Émergentes",
"description": "Technologies prometteuses représentant des opportunités futures. À évaluer et potentiellement adopter pour créer de nouveaux avantages compétitifs.",
"color": "#f39c12"
}
],
"rings": [
{
"id": "core",
"title": "Core",
"description": "Technologies critiques pour le business model. Indispensables au fonctionnement et à la création de valeur. Investissement prioritaire en maintenance et évolution.",
"color": "#27ae60",
"radius": 0.5,
"strokeWidth": 5
},
{
"id": "strategic",
"title": "Strategic",
"description": "Technologies stratégiques pour la croissance et le développement. Investissements importants pour renforcer la position concurrentielle.",
"color": "#3498db",
"radius": 0.69,
"strokeWidth": 4
},
{
"id": "support",
"title": "Support",
"description": "Technologies de support nécessaires mais non critiques. À maintenir à un niveau fonctionnel sans sur-investissement.",
"color": "#95a5a6",
"radius": 0.85,
"strokeWidth": 3
},
{
"id": "legacy",
"title": "Legacy",
"description": "Technologies à remplacer. Présentent des risques techniques, des coûts élevés ou sont obsolètes. Planifier la migration vers des alternatives modernes.",
"color": "#c0392b",
"radius": 1,
"strokeWidth": 2
}
],
"flags": {
"new": {
"color": "#f1235a",
"title": "Nouveau",
"titleShort": "N",
"description": "Nouveau dans cette version"
},
"changed": {
"color": "#40a7d1",
"title": "Modifié",
"titleShort": "M",
"description": "Récemment modifié"
},
"default": {
"description": "Inchangé"
}
},
"chart": {
"size": 800,
"blipSize": 12
},
"social": [],
"imprint": "",
"labels": {
"title": "Radar Stratégique Business - Duniter/Ğ1",
"imprint": "Informations légales",
"quadrant": "Quadrant",
"quadrantOverview": "Vue d'ensemble des quadrants",
"zoomIn": "Zoomer",
"filterByTag": "Filtrer par tag",
"footer": "Radar stratégique pour analyser les technologies de l'écosystème Duniter/Ğ1 et définir une stratégie d'évolution technique alignée avec les objectifs business.",
"notUpdated": "Cet élément n'a pas été mis à jour dans les trois dernières versions du Radar.",
"notFound": "404 - Page non trouvée",
"pageAbout": "Comment utiliser le Radar Business ?",
"pageOverview": "Vue d'ensemble des technologies",
"pageSearch": "Recherche",
"searchPlaceholder": "Que recherchez-vous ?",
"metaDescription": "Radar stratégique business pour l'écosystème Duniter/Ğ1 - Analyse des technologies et définition de la stratégie d'évolution."
}
}

View File

@@ -0,0 +1,392 @@
#!/usr/bin/env node
/**
* Script pour analyser les métriques business du radar
* et identifier des patterns stratégiques
*/
const fs = require('fs');
const path = require('path');
// Parser un blip
function parseBlip(filePath) {
const content = fs.readFileSync(filePath, 'utf-8');
const frontMatterMatch = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
if (!frontMatterMatch) return null;
const frontMatter = frontMatterMatch[1];
const body = frontMatterMatch[2];
const metadata = {};
for (const line of frontMatter.split('\n')) {
const match = line.match(/^(\w+):\s*(.+)$/);
if (match) {
const key = match[1];
let value = match[2].trim();
// Parser les valeurs
if (value === 'true') value = true;
else if (value === 'false') value = false;
else if (!isNaN(value) && value !== '') value = Number(value);
else if (value.startsWith('[')) {
value = value.slice(1, -1).split(',').map(v => v.trim().replace(/['"]/g, ''));
}
metadata[key] = value;
}
}
return { metadata, body };
}
// Analyser tous les blips
function analyzeRadar(radarDir) {
const files = fs.readdirSync(radarDir).filter(f => f.endsWith('.md'));
const blips = [];
for (const file of files) {
const blip = parseBlip(path.join(radarDir, file));
if (blip) {
blips.push({
file,
...blip
});
}
}
return blips;
}
// Calculer les métriques
function calculateMetrics(blips) {
const metrics = {
total: blips.length,
byQuadrant: {},
byRing: {},
totalCostToReplace: 0,
totalMaintenanceCost: 0,
riskDistribution: { high: 0, medium: 0, low: 0 },
competencyDistribution: { expert: 0, intermediate: 0, beginner: 0 },
skillGapDistribution: { high: 0, medium: 0, low: 0 },
businessImpactDistribution: { high: 0, medium: 0, low: 0 },
differentiationDistribution: { high: 0, medium: 0, low: 0 },
totalTeamCoverage: 0,
technologiesByRisk: {
high: [],
medium: [],
low: []
},
technologiesBySkillGap: {
high: [],
medium: [],
low: []
},
criticalTechnologies: [],
emergingTechnologies: []
};
for (const blip of blips) {
const m = blip.metadata;
// Par quadrant
if (!metrics.byQuadrant[m.quadrant]) {
metrics.byQuadrant[m.quadrant] = 0;
}
metrics.byQuadrant[m.quadrant]++;
// Par ring
if (!metrics.byRing[m.ring]) {
metrics.byRing[m.ring] = 0;
}
metrics.byRing[m.ring]++;
// Coûts
metrics.totalCostToReplace += m.costToReplace || 0;
metrics.totalMaintenanceCost += m.maintenanceCost || 0;
// Distributions
if (m.riskLevel) metrics.riskDistribution[m.riskLevel]++;
if (m.competencyLevel) metrics.competencyDistribution[m.competencyLevel]++;
if (m.skillGap) metrics.skillGapDistribution[m.skillGap]++;
if (m.businessImpact) metrics.businessImpactDistribution[m.businessImpact]++;
if (m.differentiation) metrics.differentiationDistribution[m.differentiation]++;
// Coverage
metrics.totalTeamCoverage += m.teamCoverage || 0;
// Technologies à risque
if (m.riskLevel === 'high') {
metrics.technologiesByRisk.high.push({
name: m.title,
quadrant: m.quadrant,
ring: m.ring,
riskLevel: m.riskLevel
});
}
// Technologies avec gap de compétences
if (m.skillGap === 'high') {
metrics.technologiesBySkillGap.high.push({
name: m.title,
quadrant: m.quadrant,
ring: m.ring,
teamCoverage: m.teamCoverage,
competencyLevel: m.competencyLevel
});
}
// Technologies critiques (core + high impact)
if (m.ring === 'core' && m.businessImpact === 'high') {
metrics.criticalTechnologies.push({
name: m.title,
quadrant: m.quadrant,
riskLevel: m.riskLevel,
skillGap: m.skillGap,
teamCoverage: m.teamCoverage
});
}
// Technologies émergentes
if (m.quadrant === 'technologies-emergentes') {
metrics.emergingTechnologies.push({
name: m.title,
ring: m.ring,
businessImpact: m.businessImpact,
differentiation: m.differentiation
});
}
}
return metrics;
}
// Identifier les patterns
function identifyPatterns(blips, metrics) {
const patterns = {
criticalNonDifferentiating: [],
singleVendorDependencies: [],
obsoleteTechnologies: [],
innovationOpportunities: [],
skillGaps: []
};
for (const blip of blips) {
const m = blip.metadata;
// Technologies critiques non différenciantes (commodité critique)
if (m.ring === 'core' && m.differentiation === 'low') {
patterns.criticalNonDifferentiating.push({
name: m.title,
quadrant: m.quadrant,
costToReplace: m.costToReplace,
maintenanceCost: m.maintenanceCost
});
}
// Technologies obsolètes (legacy)
if (m.ring === 'legacy') {
patterns.obsoleteTechnologies.push({
name: m.title,
riskLevel: m.riskLevel,
costToReplace: m.costToReplace
});
}
// Opportunités d'innovation (émergentes + high differentiation)
if (m.quadrant === 'technologies-emergentes' && m.differentiation === 'high') {
patterns.innovationOpportunities.push({
name: m.title,
ring: m.ring,
businessImpact: m.businessImpact
});
}
// Gaps de compétences critiques
if (m.skillGap === 'high' && (m.ring === 'core' || m.businessImpact === 'high')) {
patterns.skillGaps.push({
name: m.title,
ring: m.ring,
businessImpact: m.businessImpact,
teamCoverage: m.teamCoverage,
competencyLevel: m.competencyLevel
});
}
}
return patterns;
}
// Générer le rapport
function generateReport(metrics, patterns) {
const report = `# Analyse Stratégique - Radar Business Duniter/Ğ1
Date: ${new Date().toLocaleDateString('fr-FR')}
## Vue d'ensemble
- **Total de technologies analysées** : ${metrics.total}
- **Coût total de remplacement** : ${metrics.totalCostToReplace.toLocaleString('fr-FR')}
- **Coût total de maintenance annuel** : ${metrics.totalMaintenanceCost.toLocaleString('fr-FR')}
- **Couverture moyenne de l'équipe** : ${(metrics.totalTeamCoverage / metrics.total).toFixed(1)} personnes par technologie
## Répartition par Quadrant
${Object.entries(metrics.byQuadrant).map(([q, count]) => `- **${q}** : ${count} technologies`).join('\n')}
## Répartition par Ring
${Object.entries(metrics.byRing).map(([r, count]) => `- **${r}** : ${count} technologies`).join('\n')}
## Distribution des Risques
- **Risque élevé** : ${metrics.riskDistribution.high} technologies
- **Risque modéré** : ${metrics.riskDistribution.medium} technologies
- **Risque faible** : ${metrics.riskDistribution.low} technologies
## Distribution des Compétences
- **Expert** : ${metrics.competencyDistribution.expert} technologies
- **Intermédiaire** : ${metrics.competencyDistribution.intermediate} technologies
- **Débutant** : ${metrics.competencyDistribution.beginner} technologies
## Distribution des Gaps de Compétences
- **Gap élevé** : ${metrics.skillGapDistribution.high} technologies
- **Gap modéré** : ${metrics.skillGapDistribution.medium} technologies
- **Gap faible** : ${metrics.skillGapDistribution.low} technologies
## Technologies à Risque Élevé
${metrics.technologiesByRisk.high.length > 0
? metrics.technologiesByRisk.high.map(t => `- **${t.name}** (${t.quadrant}, ${t.ring})`).join('\n')
: 'Aucune technologie à risque élevé identifiée.'}
## Technologies avec Gap de Compétences Élevé
${metrics.technologiesBySkillGap.high.length > 0
? metrics.technologiesBySkillGap.high.map(t => `- **${t.name}** (${t.teamCoverage} personne(s), niveau: ${t.competencyLevel})`).join('\n')
: 'Aucun gap de compétences élevé identifié.'}
## Technologies Critiques
${metrics.criticalTechnologies.length > 0
? metrics.criticalTechnologies.map(t => `- **${t.name}** (risque: ${t.riskLevel}, gap: ${t.skillGap}, couverture: ${t.teamCoverage})`).join('\n')
: 'Aucune technologie critique identifiée.'}
## Technologies Émergentes
${metrics.emergingTechnologies.length > 0
? metrics.emergingTechnologies.map(t => `- **${t.name}** (impact: ${t.businessImpact}, différenciation: ${t.differentiation})`).join('\n')
: 'Aucune technologie émergente identifiée.'}
## Patterns Identifiés
### Technologies Critiques Non Différenciantes
${patterns.criticalNonDifferentiating.length > 0
? patterns.criticalNonDifferentiating.map(t => `- **${t.name}** (coût remplacement: ${t.costToReplace}€, maintenance: ${t.maintenanceCost}€/an)`).join('\n')
: 'Aucune technologie critique non différenciante identifiée.'}
### Technologies Obsolètes
${patterns.obsoleteTechnologies.length > 0
? patterns.obsoleteTechnologies.map(t => `- **${t.name}** (risque: ${t.riskLevel}, coût remplacement: ${t.costToReplace}€)`).join('\n')
: 'Aucune technologie obsolète identifiée.'}
### Opportunités d'Innovation
${patterns.innovationOpportunities.length > 0
? patterns.innovationOpportunities.map(t => `- **${t.name}** (ring: ${t.ring}, impact: ${t.businessImpact})`).join('\n')
: 'Aucune opportunité d\'innovation identifiée.'}
### Gaps de Compétences Critiques
${patterns.skillGaps.length > 0
? patterns.skillGaps.map(t => `- **${t.name}** (ring: ${t.ring}, impact: ${t.businessImpact}, couverture: ${t.teamCoverage}, niveau: ${t.competencyLevel})`).join('\n')
: 'Aucun gap de compétences critique identifié.'}
## Recommandations Stratégiques
### Priorité 1 : Gérer les Risques Critiques
${patterns.skillGaps.length > 0
? `- **Formation et recrutement** : Investir dans la formation ou le recrutement pour les technologies suivantes :
${patterns.skillGaps.map(t => ` - ${t.name} (${t.teamCoverage} personne(s), niveau ${t.competencyLevel})`).join('\n')}`
: '- Aucune action urgente requise.'}
### Priorité 2 : Optimiser les Coûts
${patterns.criticalNonDifferentiating.length > 0
? `- **Optimisation des commodités** : Réduire les coûts de maintenance pour :
${patterns.criticalNonDifferentiating.map(t => ` - ${t.name} (${t.maintenanceCost}€/an)`).join('\n')}`
: '- Aucune optimisation majeure identifiée.'}
### Priorité 3 : Planifier les Migrations
${patterns.obsoleteTechnologies.length > 0
? `- **Plan de migration** : Planifier le remplacement de :
${patterns.obsoleteTechnologies.map(t => ` - ${t.name} (coût estimé: ${t.costToReplace}€)`).join('\n')}`
: '- Aucune migration urgente requise.'}
### Priorité 4 : Investir dans l'Innovation
${patterns.innovationOpportunities.length > 0
? `- **Technologies émergentes** : Évaluer l\'adoption de :
${patterns.innovationOpportunities.map(t => ` - ${t.name} (ring: ${t.ring})`).join('\n')}`
: '- Aucune opportunité d\'innovation identifiée.'}
## Matrice Risques/Opportunités
### Zone Critique (Risque élevé + Impact élevé)
${metrics.criticalTechnologies.filter(t => t.riskLevel === 'high').length > 0
? metrics.criticalTechnologies.filter(t => t.riskLevel === 'high').map(t => `- **${t.name}** : Action immédiate requise`).join('\n')
: 'Aucune technologie en zone critique.'}
### Zone d'Opportunité (Faible risque + Différenciation élevée)
${metrics.emergingTechnologies.filter(t => t.differentiation === 'high').length > 0
? metrics.emergingTechnologies.filter(t => t.differentiation === 'high').map(t => `- **${t.name}** : Opportunité d'investissement`).join('\n')
: 'Aucune opportunité majeure identifiée.'}
`;
return report;
}
// Main
function main() {
const radarDir = path.join(__dirname, '../radar-business/2025-01-15');
const outputFile = path.join(__dirname, '../docs/analyse-strategique.md');
if (!fs.existsSync(radarDir)) {
console.error(`Répertoire non trouvé: ${radarDir}`);
process.exit(1);
}
console.log('Analyse du radar business...');
const blips = analyzeRadar(radarDir);
console.log(`${blips.length} blips analysés`);
const metrics = calculateMetrics(blips);
const patterns = identifyPatterns(blips, metrics);
const report = generateReport(metrics, patterns);
fs.writeFileSync(outputFile, report, 'utf-8');
console.log(`Rapport généré: ${outputFile}`);
}
if (require.main === module) {
// Vérifier si js-yaml est disponible (optionnel)
try {
require('js-yaml');
} catch (e) {
// Pas grave, on n'en a pas besoin pour ce script
}
main();
}
module.exports = { analyzeRadar, calculateMetrics, identifyPatterns, generateReport };

241
scripts/extract-technologies.js Executable file
View File

@@ -0,0 +1,241 @@
#!/usr/bin/env node
/**
* Script pour extraire les technologies de technologies-duniter.md
* et générer les blips pour le radar business
*/
const fs = require('fs');
const path = require('path');
// Mapping des compétences de l'équipe
const teamSkills = {
'poka': ['Flutter', 'Dart', 'ProxMox', 'bash', 'Python', 'infrastructure'],
'ManUtopiK': ['VueJS', 'Nuxt.js', 'JavaScript', 'TypeScript', 'CMS', 'web'],
'aya': ['Linux', 'glusterfs', 'cephfs', 'ipfs', 'infrastructure', 'systèmes distribués'],
'Eloïs': ['Rust', 'blockchain', 'Substrate', 'migration'],
'Fred': ['IPFS', 'Secure ScuttleButt', 'Nostr', 'TiddlyWiki', 'développement'],
'Vivien': ['Cesium', 'Godot'],
'1000i100': ['Serverless', 'GitLab', 'CI/CD', 'Docker', 'web'],
'tuxmain': ['cryptographie', 'chiffrage', 'math', 'électronique'],
'boris': ['UX', 'UI', 'Figma', 'LLM', 'JavaScript', 'TypeScript', 'APIs', 'Vis.js'],
'Syoul': ['bidouille', 'résilience', 'domotique'],
'Hugo': ['financement', 'rédaction', 'gestion'],
'Yvv': ['gestion', 'médiathèque', 'wiki']
};
// Mapping technologies -> compétences de l'équipe
function findTeamCoverage(techName, techKeywords) {
const coverage = new Set();
const techLower = techName.toLowerCase();
const keywords = techKeywords.map(k => k.toLowerCase());
for (const [member, skills] of Object.entries(teamSkills)) {
const memberSkills = skills.map(s => s.toLowerCase());
// Vérifier si le nom de la technologie correspond
if (memberSkills.some(skill => techLower.includes(skill) || skill.includes(techLower))) {
coverage.add(member);
}
// Vérifier les mots-clés
for (const keyword of keywords) {
if (memberSkills.some(skill => keyword.includes(skill) || skill.includes(keyword))) {
coverage.add(member);
}
}
}
return {
count: coverage.size,
members: Array.from(coverage),
level: coverage.size >= 3 ? 'expert' : coverage.size >= 2 ? 'intermediate' : 'beginner',
gap: coverage.size === 0 ? 'high' : coverage.size === 1 ? 'high' : coverage.size === 2 ? 'medium' : 'low'
};
}
// Classification par quadrant et ring (à affiner manuellement)
function classifyTechnology(techName, category) {
const name = techName.toLowerCase();
// Technologies différenciantes (core/strategic)
if (name.includes('rust') || name.includes('substrate') || name.includes('blockchain')) {
return {
quadrant: 'technologies-differentiantes',
ring: 'core',
businessImpact: 'high',
differentiation: 'high',
riskLevel: 'medium'
};
}
// Technologies de commodité (support)
if (name.includes('docker') || name.includes('postgresql') || name.includes('linux')) {
return {
quadrant: 'technologies-commodite',
ring: 'support',
businessImpact: 'medium',
differentiation: 'low',
riskLevel: 'low'
};
}
// Technologies émergentes (strategic/assess)
if (name.includes('ipfs') || name.includes('nostr') || name.includes('serverless')) {
return {
quadrant: 'technologies-emergentes',
ring: 'strategic',
businessImpact: 'medium',
differentiation: 'high',
riskLevel: 'medium'
};
}
// Par défaut
return {
quadrant: 'technologies-commodite',
ring: 'support',
businessImpact: 'medium',
differentiation: 'medium',
riskLevel: 'medium'
};
}
// Générer un blip
function generateBlip(tech, category, description) {
const classification = classifyTechnology(tech.name, category);
const coverage = findTeamCoverage(tech.name, tech.keywords || []);
const blip = `---
title: "${tech.name}"
ring: ${classification.ring}
quadrant: ${classification.quadrant}
tags: [${(tech.tags || []).join(', ')}]
businessImpact: ${classification.businessImpact}
costToReplace: ${tech.costToReplace || 0}
revenueImpact: ${tech.revenueImpact || 'indirect'}
riskLevel: ${classification.riskLevel}
competencyLevel: ${coverage.level}
maintenanceCost: ${tech.maintenanceCost || 0}
differentiation: ${classification.differentiation}
teamCoverage: ${coverage.count}
skillGap: ${coverage.gap}
---
${description || tech.description || `Description de ${tech.name}.`}
## Impact Business
${tech.businessImpact || 'À compléter'}
## Coûts
- Coût de remplacement : ${tech.costToReplace || 0}
- Coût de maintenance annuel : ${tech.maintenanceCost || 0}
## Compétences
- Nombre de personnes maîtrisant : ${coverage.count}
- Membres de l'équipe : ${coverage.members.join(', ') || 'Aucun'}
- Niveau moyen : ${coverage.level}
- Risque de compétence manquante : ${coverage.gap}
## Recommandations
${tech.recommendations || 'À compléter avec des recommandations stratégiques.'}
`;
return blip;
}
// Parser le fichier technologies-duniter.md
function parseTechnologiesFile(filePath) {
const content = fs.readFileSync(filePath, 'utf-8');
const technologies = [];
// Liste des technologies principales à extraire
const techList = [
{ name: 'Rust', keywords: ['Rust', 'blockchain', 'Substrate'], category: 'Langages' },
{ name: 'Python', keywords: ['Python', 'CLI'], category: 'Langages' },
{ name: 'JavaScript/TypeScript', keywords: ['JavaScript', 'TypeScript', 'web'], category: 'Langages' },
{ name: 'Dart', keywords: ['Dart', 'Flutter'], category: 'Langages' },
{ name: 'Substrate Framework', keywords: ['Substrate', 'Rust', 'blockchain'], category: 'Frameworks' },
{ name: 'Nuxt.js', keywords: ['Nuxt', 'Vue', 'SSR'], category: 'Frameworks' },
{ name: 'Vue.js', keywords: ['Vue', 'JavaScript'], category: 'Frameworks' },
{ name: 'Flutter', keywords: ['Flutter', 'Dart'], category: 'Frameworks' },
{ name: 'NetlifyCMS', keywords: ['CMS', 'Git'], category: 'CMS' },
{ name: 'WordUp CMS', keywords: ['CMS'], category: 'CMS' },
{ name: 'Docker', keywords: ['Docker', 'conteneurisation'], category: 'Infrastructure' },
{ name: 'Kubernetes', keywords: ['Kubernetes', 'orchestration'], category: 'Infrastructure' },
{ name: 'PostgreSQL', keywords: ['PostgreSQL', 'base de données'], category: 'Infrastructure' },
{ name: 'ProxMox', keywords: ['ProxMox', 'virtualisation'], category: 'Infrastructure' },
{ name: 'Linux', keywords: ['Linux', 'système'], category: 'Infrastructure' },
{ name: 'IPFS', keywords: ['IPFS', 'distribué'], category: 'Technologies distribuées' },
{ name: 'Nostr', keywords: ['Nostr', 'protocole'], category: 'Technologies distribuées' },
{ name: 'GitLab CI/CD', keywords: ['GitLab', 'CI/CD'], category: 'DevOps' },
{ name: 'Serverless', keywords: ['Serverless'], category: 'Architecture' },
{ name: 'Squid', keywords: ['Squid', 'indexer', 'GraphQL'], category: 'Outils' },
{ name: 'Cryptographie', keywords: ['cryptographie', 'chiffrage'], category: 'Sécurité' },
{ name: 'Bash', keywords: ['bash', 'scripting'], category: 'Outils' }
];
// Pour chaque technologie, créer un blip
for (const tech of techList) {
// Extraire la description depuis le fichier si disponible
let description = '';
const techRegex = new RegExp(`#### ${tech.name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}[\\s\\S]*?(?=#### |## |$)`, 'i');
const match = content.match(techRegex);
if (match) {
description = match[0].split('\n').slice(1).join('\n').trim();
// Limiter à 10 lignes
description = description.split('\n').slice(0, 10).join('\n');
} else {
description = `Technologie ${tech.name} utilisée dans l'écosystème Duniter/Ğ1.`;
}
technologies.push({
name: tech.name,
category: tech.category,
description: description,
keywords: tech.keywords,
tags: tech.keywords.slice(0, 3)
});
}
return technologies;
}
// Main
function main() {
const techFile = path.join(__dirname, '../docs/technologies-duniter.md');
const outputDir = path.join(__dirname, '../radar-business/2025-01-15');
if (!fs.existsSync(outputDir)) {
fs.mkdirSync(outputDir, { recursive: true });
}
console.log('Extraction des technologies...');
const technologies = parseTechnologiesFile(techFile);
console.log(`Trouvé ${technologies.length} technologies`);
for (const tech of technologies) {
const blip = generateBlip(tech, tech.category, tech.description);
const filename = tech.name.toLowerCase()
.replace(/[^a-z0-9]+/g, '-')
.replace(/^-|-$/g, '') + '.md';
const filePath = path.join(outputDir, filename);
fs.writeFileSync(filePath, blip, 'utf-8');
console.log(`Généré: ${filename}`);
}
console.log(`\n${technologies.length} blips générés dans ${outputDir}`);
}
if (require.main === module) {
main();
}
module.exports = { parseTechnologiesFile, generateBlip, findTeamCoverage };