story-research-zapwall/features/todo-implementation-updated.md
2025-12-22 09:48:57 +01:00

245 lines
8.3 KiB
Markdown

# É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