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

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.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

  1. QR Code pour factures
  2. Gestion expiration factures
  3. Retry logic et gestion d'erreurs
  4. Webhooks pour paiements

Priorité 3 (Améliorations) - 4 éléments

  1. Génération d'identités
  2. Filtrage et recherche
  3. Profil utilisateur
  4. Système de notifications

Priorité 4 (Qualité) - 3 éléments

  1. Tests
  2. Documentation utilisateur
  3. Analytics et monitoring

Total : 15 éléments à implémenter