8.9 KiB
É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.tsxoupages/publish.tsx: Page de création d'articlecomponents/ArticleEditor.tsx: Composant d'édition d'articlelib/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
edans 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/invoicepour créer des factures - API route
/api/rizful/payment/[hash]pour vérifier les paiements - API route
/api/rizful/identitypour 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.tspages/api/rizful/payment/[hash].tspages/api/rizful/identity.ts(optionnel)
Fichiers à modifier :
lib/rizful.ts: Utiliser les API routes au lieu d'appels directs.env.local: ChangerNEXT_PUBLIC_RIZFUL_API_KEYenRIZFUL_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éthodecheckZapReceipt()- 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.reactoureact-qr-code) - Affichage du QR code dans
PaymentModal - Taille et style adaptés
Fichiers à modifier :
components/PaymentModal.tsx: Ajouter composant QR codepackage.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 fetchlib/payment.ts: Améliorer gestion d'erreurscomponents/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/rizfulpour 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éshooks/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.tsxcomponents/SearchBar.tsx
Fichiers à modifier :
pages/index.tsx: Ajouter filtres et recherchehooks/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
/profileou/user/[pubkey] - Liste des articles publiés par l'utilisateur
- Statistiques (vues, paiements reçus)
Fichiers à créer :
pages/profile.tsxoupages/user/[pubkey].tsxcomponents/UserProfile.tsxcomponents/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.tsxhooks/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.mddocs/faq.md- Potentiellement une page
/docsou/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
- Publication d'articles
- Envoi de contenu privé après paiement
- API Routes pour protéger la clé API
- Validation des signatures zap receipts
Priorité 2 (Important) - 4 éléments
- QR Code pour factures
- Gestion expiration factures
- Retry logic et gestion d'erreurs
- Webhooks pour paiements
Priorité 3 (Améliorations) - 4 éléments
- Génération d'identités
- Filtrage et recherche
- Profil utilisateur
- Système de notifications
Priorité 4 (Qualité) - 3 éléments
- Tests
- Documentation utilisateur
- Analytics et monitoring
Total : 15 éléments à implémenter