4.0 KiB
4.0 KiB
Séries, média NIP-95 et événements Nostr (spec v1, Jan 2026)
1) Événements et tags (rien en local)
Namespace tag communs (tous les events) :
site:zapwall4sciencecategory:science-fiction|scientific-researchauthor: pubkey auteurseries: id série (event id de la série)article: id article (event id de l’article)
Kinds proposés (réutilisation kind 1 pour compat) :
- Série : kind
1avec tagkind_type: series- tags :
site,category,author,series(self id),title,description,cover(URL NIP-95),preview
- tags :
- Article : kind
1avec tagkind_type: article- tags :
site,category,author,series,article(self id),title,preview,banner(URL NIP-95),media(0..n URLs NIP-95) - contenu markdown public (preview) ; privé chiffré inchangé côté storage
- tags :
- Avis (critique) : kind
1avec tagkind_type: review- tags :
site,category,author,series,article,reviewer(pubkey),title,created_at - contenu = avis en clair
- tags :
- Achat article (zap receipt) : kind
9735(zap) avec tags standardp,e, plussite,category,author,series,article,kind_type: purchase- amount = millisats, hors frais site gérés off-chain
- Paiement remerciement avis : kind
9735zap aveckind_type: review_tip, tagssite,category,author,series,article,reviewer,review_id - Paiement sponsoring : kind
9735zap aveckind_type: sponsoring, tagssite,category,author,series(optionnel),article(présentation si ciblé)
Notes :
- Tous les cumuls (sponsoring, paiements article, remerciements avis) calculés via zap receipts filtrés par
kind_type. - Séries sans sponsoring autorisées (0).
2) Média NIP-95 (images/vidéos)
- Upload via NIP-95 (encrypted file events). Contraintes :
- Images/photos : max 5 Mo, png/jpg/jpeg/webp.
- Vidéos : max 45 Mo.
- Stockage chiffré (même logique qu’articles) ; URL NIP-95 insérée dans markdown et bannière.
- Validation côté client : type MIME, taille, échec → erreur surfacée (pas de fallback).
3) Pages / navigation
Hiérarchie : site → catégorie (SF/Recherche) → auteurs → auteur → série → articles → article.
- Page auteur : liste des séries (cover type “livre”, titre, desc, preview, cumul sponsoring/paiements agrégés via zap receipts). Profil Nostr affiché.
- Page série : détails série (cover, desc, preview), cumul sponsoring série + paiements articles de la série, liste d’articles de la série.
- Article : preview public, contenu privé chiffré inchangé, bannière NIP-95, média insérés dans markdown.
- Rédaction : éditeur markdown + preview live, upload/paste NIP-95 pour images/vidéos, champs bannière (URL NIP-95), sélection série.
4) Agrégations financières (hors frais/site)
- Sponsoring : zap receipts
kind_type: sponsoring, filtressite,author, optionseries. - Paiements articles : zap receipts
kind_type: purchase. - Remerciements avis : zap receipts
kind_type: review_tip. - Cumuls par auteur et par série ; pas de détail de lecteurs (sauf auteur du zap pour avis si nécessaire au wording minimal).
5) Wording “critiques”
- Affichage des avis en tant que “critiques”.
- Liste des critiques : afficher contenu + auteur (pubkey→profil) ; pas de liste distincte “critiques” séparée des avis (juste les avis).
6) TODO d’implémentation (proposé)
- Types : étendre
types/nostr.tsavec Series, Review, media refs; enumKindType. - Upload NIP-95 : service dédié (validation taille/type, retour URL).
- Publisher : ajouter création série (event), article avec tags série/media/banner.
- Parsing :
nostrEventParsingpour séries/articles/avis avec tagskind_type. - Aggregation : service zap pour cumuls (sponsoring/purchase/review_tip) par auteur/série.
- UI :
- Form auteur/série/article (cover/banner, sélection série, markdown+preview, upload media).
- Pages auteur/série avec stats cumulées.
- Pas de stockage local pour méta (tout via events).