# Stratégie de transposition et d’amélioration de Libria sur Cloudflare

## 1. Contexte et objectifs

Libria (`libria.pages.dev`) est actuellement un site statique hébergé sur Cloudflare Pages. Son accueil expose 20 entrées de navigation synchronisées entre l’annuaire humain et le catalogue machine ; 24 documents HTML sont publiés sous `pages/`, dont quatre livrets regroupés derrière l’entrée Constellation. L’objectif est de faire évoluer cette architecture pour en faire une base centrale dynamiquement intelligente, pilotée par les services Cloudflare, sans rompre la séparation entre découverte publique et actions privées.

## 2. Analyse comparative : Site actuel vs Portail Atlas

| Dimension | Site Libria actuel | Portail de travail (Atlas) | Recommandation Cloudflare cible |
|---|---|---|---|
| **Structure** | Annuaire statique de 20 entrées, synchronisé entre `index.html` et `index.json`, avec contrôle de cohérence local | Rail latéral persistant, carte topologique, inspecteur et feuille de route | Conserver le style épuré de Libria tout en adoptant la navigation par stations et contrats |
| **Données** | Catalogue machine `index.json` et catalogue Atlas `catalog.json`, vérifiés avant déploiement | Chargé depuis un fichier JSON unique (`catalog.json`) | Centraliser progressivement les métadonnées dans Cloudflare D1 et exposer un Worker de lecture (`/api/catalog`) |
| **Interactivité** | Liens hypertextes simples et console Bus PWA | Recherche multi-critères, favoris, export CSV, journal d’activité, simulation d’orchestration | Ajouter le journal d’activité en temps réel via Workers KV et les favoris persistants (localStorage + cloud sync optionnel) |
| **Sécurité** | Formulaire direct de token dans la page | Démonstration visuelle avec frontières d’accès explicites | Protéger les routes d’écriture et de bus par Cloudflare Access et des jetons de service non exposés au client |

## 3. Plan d’amélioration technique et visuelle

### A. Sur le plan visuel (UI / UX)
1. **Navigation unifiée** : Introduire une barre latérale ou un rail supérieur persistant sur Libria pour basculer facilement entre les projets, les contrats de stations et la documentation.
2. **Indicateurs de fraîcheur et de portée** : Généraliser l’affichage des badges de portée (`PUBLIC`, `ACCESS`, `ORCH.`) et des horodatages de synchronisation sur chaque fiche de projet.
3. **Journal d’activité partagé** : Remplacer l’affichage statique par un flux d’événements alimenté par le bus Cloudflare KV, permettant de suivre les synchronisations de stations en direct.

### B. Sur le plan technique (Architecture Cloudflare)
1. **API Edge (Workers)** : Créer un Worker unique pour servir le catalogue JSON validé (`/api/catalog`) et le journal d’activité (`/api/activity`), en s’appuyant sur le cache Cloudflare (TTL 60s) pour réduire la latence à 0€.
2. **Stockage relationnel (D1)** : Migrer progressivement les métadonnées des ressources et les statuts des stations vers une base SQLite hébergée sur Cloudflare D1.
3. **Bus de messages (KV + Workflows)** : Sécuriser la CloudTemple Bus Console en extrayant la logique de token du navigateur client vers un Worker proxy protégé par Cloudflare Access (Service Tokens).

## 4. Recommandations pour l’utilisation des extensions du poste local

L’utilisateur a installé la panoplie de plugins Cloudflare sur son poste local. Ces outils (commandes Wrangler, déploiement Pages, gestion KV/D1) constituent un excellent levier pour automatiser la transposition :
- **Wrangler CLI** : Permet de tester localement les futurs Workers de catalogue et de bus avant publication.
- **Git / GitHub integration** : Permet de lier le dépôt Libria à un pipeline CI/CD automatisant la régénération du catalogue et le déploiement sur Pages.
- **Variables d’environnement & Secrets** : Assurer la gestion des jetons de service et des clés de chiffrement Fernet (AES-128-CBC) hors du code source.

## 5. Prochaines étapes suggérées

1. **Valider le contrat JSON unifié** : Utiliser le fichier `catalog.json` testé dans le portail comme modèle canonique pour les ressources de Libria.
2. **Déployer le Worker de lecture** : Écrire un Worker minimal (`/api/catalog`) sur Cloudflare Workers pour remplacer le fichier statique par une requête dynamique.
3. **Sécuriser la console opérateur** : Transférer les appels de la CloudTemple Bus Console derrière un proxy d’authentification Access.
