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