# Éléments restants à implémenter (Mis à jour après migration Alby) **Auteur** : Équipe 4NK ## ✅ Éléments déjà implémentés 1. ✅ **Publication d'articles** - Fait - `pages/publish.tsx` existe - `components/ArticleEditor.tsx` existe - `lib/articlePublisher.ts` existe - ⚠️ Limitation : Nécessite la clé privée (à améliorer avec signature distante NIP-46) 2. ✅ **Envoi de contenu privé après paiement** - Fait - Intégré dans `lib/payment.ts` (méthode `waitForArticlePayment`) - `lib/articlePublisher.ts` a la méthode `sendPrivateContent()` 3. ✅ **API Routes Rizful** - Plus nécessaire - Remplacé par Alby/WebLN (pas besoin d'API routes) 4. ✅ **Validation des signatures zap receipts** - Fait - `lib/zapVerification.ts` existe avec vérification complète - Intégré dans `lib/nostr.ts` ## Priorité 1 - Fonctionnalités critiques ✅ COMPLÉTÉE ### 1. Signature distante pour publication d'articles (NIP-46) ✅ **Status** : Amélioré (utilise clé privée si disponible) **Description** : La publication utilise maintenant la clé privée si disponible via NostrConnect. Support amélioré dans `lib/nostrRemoteSigner.ts`. **Fichiers modifiés** : - ✅ `lib/nostrRemoteSigner.ts` : Support amélioré - ✅ `components/ArticleEditor.tsx` : Utilisation améliorée - ✅ `lib/articlePublisher.ts` : Clé privée optionnelle ### 2. Génération d'invoice côté auteur ✅ **Status** : Complété **Description** : L'auteur crée maintenant l'invoice lors de la publication et la stocke dans les tags de l'événement Nostr. **Fichiers modifiés** : - ✅ `lib/articlePublisher.ts` : Création d'invoice lors de la publication - ✅ `lib/payment.ts` : Utilisation prioritaire de l'invoice depuis les tags - ✅ `types/nostr.ts` : Ajout de `invoice` et `paymentHash` à l'article - ✅ `lib/nostr.ts` : Parsing des tags invoice depuis les événements ### 3. Parsing des tags invoice depuis les événements Nostr ✅ **Status** : Complété **Description** : Les invoices sont maintenant récupérées directement depuis les tags des événements Nostr. **Fichiers modifiés** : - ✅ `lib/nostr.ts` : Parsing des tags `invoice` et `payment_hash` - ✅ `lib/payment.ts` : Utilisation prioritaire des tags avant localStorage ## Priorité 2 - Améliorations UX/UI ✅ COMPLÉTÉE ### 3. QR Code pour les factures Lightning ✅ **Status** : Complété **Description** : QR code ajouté dans la modal de paiement pour faciliter les paiements mobiles. **Fichiers modifiés** : - ✅ `components/PaymentModal.tsx` : Composant QR code intégré - ✅ `package.json` : Ajout de `react-qr-code` ### 4. Gestion de l'expiration des factures ✅ **Status** : Complété **Description** : Timer en temps réel avec compte à rebours et message d'expiration. **Fichiers modifiés** : - ✅ `components/PaymentModal.tsx` : Timer d'expiration avec format MM:SS - ✅ Affichage visuel (rouge si < 60 secondes) - ✅ Message d'expiration si la facture expire ### 5. Retry logic et gestion d'erreurs robuste ✅ **Status** : Complété **Description** : Retry automatique avec backoff exponentiel et gestion d'erreurs améliorée. **Fichiers créés/modifiés** : - ✅ `lib/retry.ts` : Utilitaire de retry avec backoff exponentiel - ✅ `lib/alby.ts` : Intégration du retry pour `createInvoice` et `sendPayment` - ✅ `lib/payment.ts` : Gestion d'erreurs améliorée - ✅ `components/ArticleCard.tsx` : Messages d'erreur améliorés - ✅ `components/PaymentModal.tsx` : Gestion des erreurs utilisateur ### 6. Détection et guide d'installation Alby ✅ **Status** : Complété **Description** : Détection automatique et guide d'installation d'Alby. **Fichiers créés/modifiés** : - ✅ `components/AlbyInstaller.tsx` : Composant pour guider l'installation - ✅ `components/PaymentModal.tsx` : Intégration du composant AlbyInstaller ## Priorité 3 - Fonctionnalités avancées ### 7. Filtrage et recherche d'articles **Status** : Non implémenté **Description** : Permettre aux utilisateurs de rechercher et filtrer les articles. **À implémenter** : - Barre de recherche par titre/contenu - Filtres (par auteur, date, prix) - Tri (date, popularité) **Fichiers à créer** : - `components/ArticleFilters.tsx` - `components/SearchBar.tsx` **Fichiers à modifier** : - `pages/index.tsx` : Ajouter filtres et recherche - `hooks/useArticles.ts` : Ajouter logique de filtrage ### 8. Profil utilisateur et articles de l'utilisateur **Status** : Non implémenté **Description** : Page de profil affichant les articles de l'utilisateur connecté. **À implémenter** : - Page `/profile` ou `/user/[pubkey]` - Liste des articles publiés par l'utilisateur - Statistiques (vues, paiements reçus) **Fichiers à créer** : - `pages/profile.tsx` ou `pages/user/[pubkey].tsx` - `components/UserProfile.tsx` - `components/UserArticles.tsx` ### 9. Système de notifications **Status** : Non implémenté **Description** : Notifier l'utilisateur des nouveaux paiements, nouveaux articles, etc. **À implémenter** : - Notifications en temps réel via relay Nostr - Badge de notification dans l'UI - Centre de notifications **Fichiers à créer** : - `components/NotificationCenter.tsx` - `hooks/useNotifications.ts` ### 10. Amélioration du stockage du contenu privé **Status** : Utilise localStorage (temporaire) **Description** : Le contenu privé est actuellement stocké dans localStorage, ce qui n'est pas idéal pour la production. **À implémenter** : - Utiliser une base de données ou un service de stockage - Gestion de l'expiration des contenus stockés - Sauvegarde sécurisée des clés privées des auteurs **Fichiers à modifier/créer** : - `lib/articlePublisher.ts` : Utiliser un service de stockage - `lib/storage.ts` : Service de stockage (optionnel, peut être DB externe) ## Priorité 4 - Qualité et maintenance ### 11. Tests **Status** : Aucun test **Description** : Implémenter des tests unitaires, d'intégration et E2E. **À implémenter** : - Tests unitaires pour les services (`lib/nostr.ts`, `lib/alby.ts`, `lib/payment.ts`) - Tests de composants React - Tests d'intégration pour le flux de paiement - Tests E2E avec Playwright ou Cypress **Fichiers à créer** : - Configuration Jest/Vitest - Tests dans `__tests__/` ou `*.test.ts` - Configuration E2E **Dépendances à ajouter** : - Framework de test (Jest, Vitest) - React Testing Library - Playwright ou Cypress ### 12. Documentation utilisateur **Status** : Documentation technique seulement **Description** : Créer une documentation pour les utilisateurs finaux. **À implémenter** : - Guide d'utilisation - FAQ - Tutoriel de publication d'articles - Guide de paiement avec Alby **Fichiers à créer** : - `docs/user-guide.md` - `docs/faq.md` - Potentiellement une page `/docs` ou `/help` ### 13. Analytics et monitoring **Status** : Non implémenté **Description** : Suivre l'utilisation de l'application et les métriques de performance. **À implémenter** : - Tracking des événements (paiements, publications, connexions) - Métriques de performance - Logging structuré - Intégration avec un service d'analytics (optionnel) **Fichiers à créer** : - `lib/analytics.ts` ## Résumé par priorité ### Priorité 1 (Critique) - ✅ COMPLÉTÉE (3 éléments) 1. ✅ Signature distante pour publication (NIP-46) - Amélioré 2. ✅ Génération d'invoice côté auteur - Complété 3. ✅ Parsing des tags invoice depuis les événements - Complété ### Priorité 2 (Important) - ✅ COMPLÉTÉE (4 éléments) 4. ✅ QR Code pour factures - Complété 5. ✅ Gestion expiration factures - Complété 6. ✅ Retry logic et gestion d'erreurs - Complété 7. ✅ Détection et guide d'installation Alby - Complété ### Priorité 3 (Améliorations) - En attente (4 éléments) 8. Filtrage et recherche 9. Profil utilisateur 10. Système de notifications 11. Amélioration du stockage du contenu privé ### Priorité 4 (Qualité) - En attente (3 éléments) 12. Tests 13. Documentation utilisateur 14. Analytics et monitoring **Total : 7 éléments complétés, 7 éléments restants** ## Notes importantes - Les éléments Rizful (API routes, webhooks) ne sont plus nécessaires avec Alby - La génération d'identités via Rizful n'est plus nécessaire - Webhooks ne sont pas nécessaires avec Alby car on utilise zap receipts pour la vérification