story-research-zapwall/docs/architecture.md
Nicolas Cantu f7bd7faa73 fix: Correction erreurs TypeScript, nettoyage et réorganisation documentation
- Correction toutes erreurs TypeScript :
  - Variables non utilisées supprimées
  - Types optionnels corrigés (exactOptionalPropertyTypes)
  - Imports corrigés (PLATFORM_BITCOIN_ADDRESS depuis platformConfig)
  - Gestion correcte des propriétés optionnelles

- Suppression fichiers obsolètes :
  - code-cleanup-summary.md (redondant)
  - todo-implementation*.md (todos obsolètes)
  - corrections-completed.md, fallbacks-found.md (corrections faites)
  - implementation-summary.md (redondant)
  - documentation-plan.md (plan, pas documentation)

- Suppression scripts temporaires :
  - add-ssh-key.sh
  - add-ssh-key-plink.sh

- Réorganisation documentation dans docs/ :
  - architecture.md (nouveau)
  - commissions.md (nouveau)
  - implementation-summary.md
  - remaining-tasks.md
  - split-and-transfer.md
  - commission-system.md
  - commission-implementation.md
  - content-delivery-verification.md

Toutes erreurs TypeScript corrigées, documentation centralisée.
2025-12-27 21:25:19 +01:00

69 lines
2.2 KiB
Markdown

# Architecture technique
**Auteur** : Équipe 4NK
## Vue d'ensemble
Zapwall est une plateforme décentralisée basée sur le protocole Nostr pour la publication et la monétisation de contenu. Le système utilise Lightning Network pour les paiements et Bitcoin mainnet pour le sponsoring.
## Services principaux
### Nostr (`lib/nostr.ts`)
- Gestion du pool de connexions aux relays
- Publication et récupération d'événements
- Gestion des profils utilisateurs
- Création de zap requests
### Paiements (`lib/payment.ts`, `lib/paymentPolling.ts`)
- Création d'invoices Lightning via Alby/WebLN
- Vérification des paiements via zap receipts (NIP-57)
- Polling pour confirmation des paiements
- Envoi automatique du contenu privé après paiement
### Commissions (`lib/platformCommissions.ts`)
- Configuration centralisée des commissions
- Calcul des splits (auteur/plateforme)
- Validation des montants
### Tracking (`lib/platformTracking.ts`, `lib/sponsoringTracking.ts`)
- Publication d'événements de tracking sur Nostr
- Suivi des livraisons de contenu
- Suivi des paiements de sponsoring
### Intégrations externes
- **mempool.space** (`lib/mempoolSpace.ts`) : Vérification des transactions Bitcoin
- **Lightning addresses** (`lib/lightningAddress.ts`) : Récupération depuis profils Nostr
## Flux de paiement article
1. Lecteur clique sur "Unlock for 800 sats"
2. Création d'invoice Lightning (via Alby/WebLN)
3. Publication de zap request sur Nostr
4. Lecteur paie l'invoice
5. Polling pour vérifier le zap receipt
6. Envoi automatique du contenu privé (message chiffré NIP-04)
7. Tracking de la livraison avec commissions
## Flux de sponsoring
1. Utilisateur demande sponsoring (0.046 BTC)
2. Service calcule split (0.042/0.004 BTC)
3. Retourne deux adresses Bitcoin
4. Utilisateur crée transaction avec deux sorties
5. Vérification via mempool.space
6. Tracking sur Nostr
## Stockage
- **IndexedDB** : Contenu privé chiffré (AES-GCM)
- **localStorage** : Métadonnées d'articles, invoices
- **Nostr** : Tous les contenus publics et événements de tracking
## Sécurité
- Chiffrement end-to-end pour contenu privé (NIP-04)
- Validation stricte des montants
- Tracking complet sur Nostr pour audit
- Pas de fallback implicite