277 lines
8.9 KiB
Markdown
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**
|