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

277 lines
8.9 KiB
Markdown

# Éléments restants à implémenter
**Auteur** : Équipe 4NK
## Priorité 1 - Fonctionnalités critiques
### 1. Publication d'articles (côté auteur)
**Status** : Non implémenté
**Description** : Permettre aux auteurs de créer et publier des articles avec aperçus et contenu payant.
**À implémenter** :
- Page/interface pour créer un nouvel article
- Formulaire avec titre, aperçu (contenu public), contenu complet (contenu privé)
- Publication de la note publique (kind:1) avec tags `title`, `preview`, `zap`
- Stockage du contenu privé pour envoi après paiement
- Intégration avec le système de paiement
**Fichiers à créer** :
- `pages/create.tsx` ou `pages/publish.tsx` : Page de création d'article
- `components/ArticleEditor.tsx` : Composant d'édition d'article
- `lib/articlePublisher.ts` : Service pour publier des articles
### 2. Envoi de contenu privé après paiement
**Status** : Partiellement implémenté (réception seulement)
**Description** : Une fois le paiement confirmé, l'auteur doit automatiquement envoyer le contenu privé chiffré au lecteur.
**À implémenter** :
- Service/worker pour surveiller les paiements confirmés
- Envoi automatique de message privé (kind:4) chiffré avec NIP-04
- Tag `e` dans le message privé pour lier à l'article
- Stockage temporaire du contenu privé jusqu'au paiement
**Fichiers à modifier/créer** :
- `lib/articlePublisher.ts` : Méthode pour envoyer le contenu privé
- `lib/payment.ts` : Intégration de l'envoi après paiement confirmé
### 3. API Routes Next.js pour protéger la clé API Rizful
**Status** : Non implémenté (sécurité critique)
**Description** : La clé API Rizful est actuellement exposée côté client (NEXT_PUBLIC_*). Il faut créer des API routes pour protéger la clé.
**À implémenter** :
- API route `/api/rizful/invoice` pour créer des factures
- API route `/api/rizful/payment/[hash]` pour vérifier les paiements
- API route `/api/rizful/identity` pour générer des identités (optionnel)
- Stockage sécurisé de la clé API côté serveur
- Validation des requêtes côté serveur
**Fichiers à créer** :
- `pages/api/rizful/invoice.ts`
- `pages/api/rizful/payment/[hash].ts`
- `pages/api/rizful/identity.ts` (optionnel)
**Fichiers à modifier** :
- `lib/rizful.ts` : Utiliser les API routes au lieu d'appels directs
- `.env.local` : Changer `NEXT_PUBLIC_RIZFUL_API_KEY` en `RIZFUL_API_KEY` (sans NEXT_PUBLIC)
### 4. Validation des signatures des zap receipts
**Status** : Non implémenté
**Description** : Actuellement, on vérifie seulement l'existence d'un zap receipt, mais pas sa signature ni l'identité du payeur.
**À implémenter** :
- Vérification de la signature du zap receipt (kind:9735)
- Validation que le paiement provient bien de l'utilisateur connecté
- Vérification du montant exact du paiement
**Fichiers à modifier** :
- `lib/nostr.ts` : Méthode `checkZapReceipt()` - ajouter validation de signature
## Priorité 2 - Améliorations UX/UI
### 5. QR Code pour les factures Lightning
**Status** : Non implémenté
**Description** : Ajouter un QR code dans la modal de paiement pour faciliter les paiements mobiles.
**À implémenter** :
- Bibliothèque de génération de QR code (ex: `qrcode.react` ou `react-qr-code`)
- Affichage du QR code dans `PaymentModal`
- Taille et style adaptés
**Fichiers à modifier** :
- `components/PaymentModal.tsx` : Ajouter composant QR code
- `package.json` : Ajouter dépendance QR code
### 6. Gestion de l'expiration des factures
**Status** : Partiellement implémenté
**Description** : Les factures expirent mais l'UI ne le montre pas clairement à l'utilisateur.
**À implémenter** :
- Timer/compte à rebours dans la modal
- Message d'expiration si la facture expire
- Bouton pour régénérer une nouvelle facture
**Fichiers à modifier** :
- `components/PaymentModal.tsx` : Ajouter timer d'expiration
### 7. Retry logic et gestion d'erreurs robuste
**Status** : Basique
**Description** : Améliorer la gestion des erreurs réseau et des échecs d'API.
**À implémenter** :
- Retry automatique avec backoff exponentiel
- Messages d'erreur plus explicites pour l'utilisateur
- Gestion des timeouts réseau
- Logging structuré des erreurs
**Fichiers à modifier** :
- `lib/rizful.ts` : Ajouter retry logic dans les méthodes fetch
- `lib/payment.ts` : Améliorer gestion d'erreurs
- `components/ArticleCard.tsx` : Messages d'erreur améliorés
### 8. Webhooks pour notifications de paiement
**Status** : Non implémenté (utilisation de polling actuellement)
**Description** : Remplacer le polling par des webhooks pour une réactivité en temps réel.
**À implémenter** :
- API route `/api/webhooks/rizful` pour recevoir les webhooks
- Validation de la signature du webhook (si Rizful le supporte)
- Mise à jour automatique de l'état de paiement
- Alternative au polling actuel
**Fichiers à créer** :
- `pages/api/webhooks/rizful.ts`
**Fichiers à modifier** :
- `lib/payment.ts` : Utiliser webhooks si disponibles, fallback sur polling
## Priorité 3 - Fonctionnalités avancées
### 9. Génération d'identités Nostr via Rizful
**Status** : Code présent mais non utilisé
**Description** : La méthode `generateIdentity()` existe mais n'est pas intégrée dans le flux utilisateur.
**À implémenter** :
- Option pour créer une nouvelle identité Nostr lors de l'inscription
- Stockage sécurisé des clés privées générées
- Intégration avec le système d'authentification
**Fichiers à créer/modifier** :
- `components/IdentityGenerator.tsx` : Composant pour générer des identités
- `hooks/useIdentity.ts` : Hook pour gérer les identités
### 10. 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
### 11. 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`
### 12. 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`
## Priorité 4 - Qualité et maintenance
### 13. 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/rizful.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
### 14. 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
**Fichiers à créer** :
- `docs/user-guide.md`
- `docs/faq.md`
- Potentiellement une page `/docs` ou `/help`
### 15. 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) - 4 éléments
1. Publication d'articles
2. Envoi de contenu privé après paiement
3. API Routes pour protéger la clé API
4. Validation des signatures zap receipts
### Priorité 2 (Important) - 4 éléments
5. QR Code pour factures
6. Gestion expiration factures
7. Retry logic et gestion d'erreurs
8. Webhooks pour paiements
### Priorité 3 (Améliorations) - 4 éléments
9. Génération d'identités
10. Filtrage et recherche
11. Profil utilisateur
12. Système de notifications
### Priorité 4 (Qualité) - 3 éléments
13. Tests
14. Documentation utilisateur
15. Analytics et monitoring
**Total : 15 éléments à implémenter**