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

8.3 KiB

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

  1. QR Code pour factures - Complété
  2. Gestion expiration factures - Complété
  3. Retry logic et gestion d'erreurs - Complété
  4. Détection et guide d'installation Alby - Complété

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

  1. Filtrage et recherche
  2. Profil utilisateur
  3. Système de notifications
  4. Amélioration du stockage du contenu privé

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

  1. Tests
  2. Documentation utilisateur
  3. 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