Veza — Documentation Complète du Projet
Plateforme de streaming musical éthique
Version du document : 2026-03-16 | Statut : Production-Ready (v1.0.0-rc1)
Table des matières
- Vision et Mission
- Pourquoi Veza existe
- Principes fondateurs
- Fonctionnalités de la plateforme
- Architecture technique
- Stack technologique
- Backend API (Go)
- Serveur de streaming (Rust)
- Frontend (React/TypeScript)
- Infrastructure et déploiement
- Sécurité
- Modèle économique
- Parcours utilisateur
- Conformité et vie privée
- Performance et scalabilité
- Historique des versions
- Roadmap
- Équipe et processus de développement
- Glossaire
1. Vision et Mission
Veza est une plateforme de streaming musical conçue pour remettre l'artiste au centre de l'écosystème musical numérique.
Mission
Créer une plateforme de streaming musical transparente, équitable et respectueuse — où les créateurs sont rémunérés justement, les utilisateurs ne sont pas manipulés, et la technologie sert la musique plutôt que l'inverse.
Vision
Dans un paysage dominé par des plateformes qui optimisent l'engagement au détriment des créateurs et des auditeurs, Veza propose une alternative fondée sur trois piliers :
| Pilier |
Engagement |
| Équité créateur |
Commission marketplace de 15% (vs 30% industrie), paiements hebdomadaires, analytics détaillés |
| Respect utilisateur |
Zéro dark pattern, pas de tracking comportemental, flux chronologique |
| Transparence technologique |
Pas d'algorithme opaque, découverte par tags/genres déclaratifs, métriques de popularité privées |
2. Pourquoi Veza existe
Le problème
Les plateformes de streaming actuelles souffrent de défauts structurels :
- Rémunération dérisoire des artistes — Les petits créateurs reçoivent des fractions de centimes par écoute, avec des paiements trimestriels.
- Algorithmes opaques — Les systèmes de recommandation favorisent les artistes déjà populaires, créant un effet de concentration.
- Dark patterns UX — Notifications manipulatrices, FOMO artificiel, friction à la désinscription.
- Exploitation des données comportementales — Le comportement des utilisateurs est traqué, analysé et monétisé pour maximiser le temps d'écoute.
- Gamification addictive — Streaks, badges, leaderboards transforment l'écoute musicale en jeu compulsif.
La solution Veza
| Problème |
Approche Veza |
| Rémunération insuffisante |
Commission de 15%, paiements hebdomadaires (seuil $50) |
| Algorithmes opaques |
Feed chronologique, découverte par tags/genres déclaratifs |
| Dark patterns |
Aucun FOMO, notifications respectueuses, quiet hours |
| Tracking comportemental |
Zéro données comportementales pour le ranking |
| Gamification |
Aucun XP, streak, leaderboard, badge |
| Métriques publiques |
Likes et play counts visibles uniquement par le créateur |
3. Principes fondateurs
Ces principes sont inscrits dans le code source et ne peuvent être contournés :
3.1 Ce que Veza ne fera JAMAIS
- Pas d'IA/ML pour les recommandations — Pas de TensorFlow, PyTorch, ou scikit-learn. La découverte est humaine.
- Pas de blockchain/Web3 — Pas de NFT, smart contracts, ou wallets crypto.
- Pas de gamification — Pas d'XP, de streaks, de leaderboards, de badges ou de niveaux.
- Pas de métriques de popularité publiques — Les compteurs de likes et d'écoutes sont privés (visibles uniquement par le créateur dans ses analytics).
- Pas de dark patterns UX — Pas de FOMO, pas de notifications push manipulatrices, pas de friction à la désinscription.
- Pas de données comportementales pour le ranking — Le feed est chronologique. La découverte est par tags et genres déclarés par l'artiste.
3.2 Ce que Veza garantit
- Transparence totale sur le fonctionnement de la plateforme
- Portabilité des données — Export complet à tout moment (RGPD)
- Suppression réelle — Les données sont effectivement supprimées, pas masquées
- Accessibilité — Interface WCAG AA compliant, navigation clavier complète
- Internationalisation — Disponible en français, anglais et espagnol
4. Fonctionnalités de la plateforme
4.1 Pour les auditeurs
| Fonctionnalité |
Description |
| Écoute en streaming |
HLS adaptatif (qualité auto-ajustée selon la bande passante) |
| Recherche unifiée |
Recherche full-text sur les tracks, artistes et playlists (Elasticsearch + fallback PostgreSQL) |
| Découverte éthique |
Navigation par genres, tags, moods — pas d'algorithme comportemental |
| Playlists |
Création, édition, collaboration, partage public, import/export (JSON, CSV, M3U) |
| Playlists collaboratives |
Inviter d'autres utilisateurs à contribuer avec des rôles (viewer, editor, admin) |
| File d'attente |
Gestion de queue avec drag-and-drop, sessions partagées |
| Feed chronologique |
Flux des artistes suivis, strictement chronologique |
| Profils utilisateur |
Avatars, bio, liens, historique d'écoute (privé) |
| Notifications |
In-app, email digest, préférences granulaires, quiet hours |
| Chat |
Messagerie temps réel, réactions emoji, mentions, threads |
| Co-écoute |
Sessions synchronisées d'écoute entre amis |
| Social |
Follow/unfollow, groupes communautaires, posts |
| Lecteur avancé |
Vitesse de lecture (0.5x-2x), crossfade, normalisation audio, PiP |
| PWA |
Application installable, mode offline partiel, contrôles lockscreen |
| Multi-langue |
Interface en FR, EN, ES avec détection automatique |
4.2 Pour les créateurs
| Fonctionnalité |
Description |
| Upload |
Upload simple ou par chunks (reprise possible), multi-format |
| Analytics privés |
Écoutes, sources de trafic, données géographiques (anonymisées), devices |
| Analytics avancés |
Heatmaps d'écoute par track, comparaison de périodes, alertes métriques |
| Marketplace |
Vente de beats, samples, kits avec système de licences (Basic, Premium, Exclusive) |
| Distribution |
Distribution vers Spotify, Apple Music, Deezer via partenaire |
| Formation |
Création et vente de cours avec vidéos HLS, modules, certificats |
| Live streaming |
Diffusion live via OBS (RTMP), chat intégré, co-hosting |
| Stems |
Upload et partage de stems individuels pour remixage |
| Versioning |
Historique de versions des tracks avec restauration |
| Cloud storage |
Stockage cloud avec dossiers, versioning et partage |
| Gestion d'équipement |
Inventaire de gear avec photos, documents, historique de réparations |
| Payouts |
Paiements automatiques hebdomadaires via Stripe Connect |
| KYC |
Vérification d'identité vendeur via Stripe Identity |
4.3 Pour les administrateurs
| Fonctionnalité |
Description |
| Dashboard admin |
Métriques plateforme, gestion utilisateurs, gestion contenu |
| Modération |
File de rapports, détection de spam, fingerprinting audio (ACRCloud) |
| Strikes & appels |
Système de sanctions avec possibilité d'appel |
| Feature flags |
Activation/désactivation de fonctionnalités en temps réel |
| Annonces |
Annonces plateforme visibles par tous les utilisateurs |
| Mode maintenance |
Activation du mode maintenance avec message personnalisé |
| Audit logs |
Historique complet de toutes les actions admin |
| Gestion paiements |
Vue d'ensemble des paiements, remboursements |
4.4 Pour les développeurs
| Fonctionnalité |
Description |
| API publique |
API REST documentée (OpenAPI 3.0 / Swagger UI) |
| Clés API |
Génération de clés avec scopes et rate limits par clé |
| Webhooks |
Notifications d'événements vers des endpoints externes |
5. Architecture technique
5.1 Vue d'ensemble
┌─────────────────────────────────────────────────────────────────┐
│ CLIENTS │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
│ │ Web App │ │ PWA │ │ API │ │ OBS (RTMP) │ │
│ │ (React) │ │ (Mobile) │ │ Externe │ │ Live Stream │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └──────┬───────┘ │
└───────┼──────────────┼──────────────┼──────────────┼────────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌───────────────────────────────────────────────────────────────┐
│ COUCHE API │
│ ┌─────────────────────────────┐ ┌─────────────────────────┐ │
│ │ Backend API (Go/Gin) │ │ Stream Server (Rust) │ │
│ │ │ │ │ │
│ │ • REST API (/api/v1/...) │ │ • HLS Streaming │ │
│ │ • WebSocket (chat, notif) │ │ • Transcodage audio │ │
│ │ • Auth (JWT RS256) │ │ • WebSocket (sync) │ │
│ │ • Rate limiting │ │ • Adaptive bitrate │ │
│ │ • CSRF protection │ │ • Co-écoute │ │
│ │ Port: 8080 │ │ Port: 18082 │ │
│ └──────────┬──────────────────┘ └────────────┬────────────┘ │
└─────────────┼──────────────────────────────────┼──────────────┘
│ │
▼ ▼
┌───────────────────────────────────────────────────────────────┐
│ COUCHE DONNÉES │
│ │
│ ┌──────────────┐ ┌────────┐ ┌───────────────┐ │
│ │ PostgreSQL │ │ Redis │ │ Elasticsearch │ │
│ │ │ │ │ │ (optionnel) │ │
│ │ • 91 tables │ │ • Cache│ │ │ │
│ │ • 144 migr. │ │ • Sess.│ │ • Full-text │ │
│ │ • ACID │ │ • Rate │ │ • Autocomplete│ │
│ │ │ │ • CSRF │ │ • Facettes │ │
│ └──────────────┘ └────────┘ └───────────────┘ │
│ │
│ ┌──────────────┐ ┌────────────────┐ ┌───────────────────┐ │
│ │ RabbitMQ │ │ MinIO / S3 │ │ Nginx-RTMP │ │
│ │ │ │ │ │ │ │
│ │ • Jobs async │ │ • Fichiers │ │ • Ingest RTMP │ │
│ │ • Events │ │ audio │ │ • Output HLS │ │
│ │ • Notif. │ │ • Images │ │ • Live streams │ │
│ │ │ │ • Vidéos cours │ │ │ │
│ └──────────────┘ └────────────────┘ └───────────────────┘ │
│ │
│ ┌──────────────┐ ┌────────────────┐ │
│ │ Prometheus │ │ ClamAV │ │
│ │ + Grafana │ │ │ │
│ │ │ │ • Antivirus │ │
│ │ • Métriques │ │ • Scan uploads │ │
│ │ • Alerting │ │ │ │
│ └──────────────┘ └────────────────┘ │
└───────────────────────────────────────────────────────────────┘
5.2 Architecture hexagonale (Backend Go)
Le backend suit une architecture hexagonale stricte avec séparation claire des responsabilités :
internal/
├── models/ # Entités du domaine (structs Go)
│ # Aucune dépendance externe
│
├── repositories/ # Interfaces d'accès aux données + implémentations PostgreSQL
│ # Seule couche qui parle à la base de données
│
├── services/ # Logique métier pure
│ # Accepte context.Context comme 1er paramètre
│ # Dépend des interfaces repository, jamais des implémentations
│
├── handlers/ # Contrôleurs HTTP (framework Gin)
│ # Validation des entrées, appel des services, formatage des réponses
│
├── middleware/ # Middlewares transversaux
│ # Auth, CORS, rate limiting, logging, CSRF, audit
│
└── api/ # Déclaration des routes
# Associe URLs → handlers + middlewares
5.3 Flux de données
Client HTTP Request
│
▼
[Middleware Chain]
│ CORS → Rate Limit → Auth → CSRF → Audit → Cache Headers
│
▼
[Handler]
│ Parse request → Validate input → Call service
│
▼
[Service]
│ Business logic → Call repository → Return result
│
▼
[Repository]
│ SQL query → Map to model → Return
│
▼
[Handler]
│ Format response → Set headers → Return JSON
│
▼
Client HTTP Response
6. Stack technologique
6.1 Technologies principales
| Composant |
Technologie |
Version |
Justification |
| Backend API |
Go + Gin |
1.24 |
Performance, typage fort, concurrence native |
| Stream Server |
Rust + Axum + Tokio |
1.35 |
Performance maximale, safety mémoire, zero-cost abstractions |
| Frontend |
React + TypeScript + Vite |
18 / 5+ / 7 |
Écosystème mature, typage strict, build rapide |
| Base de données |
PostgreSQL |
16 |
Fiabilité, ACID, full-text search natif |
| Cache |
Redis |
7 |
Rapidité, pub/sub, structures de données riches |
| Recherche |
Elasticsearch |
8 |
Full-text search performant avec tolérance phonétique |
| Message Queue |
RabbitMQ |
3 |
Fiabilité, routing flexible, acknowledgment |
| Object Storage |
MinIO (dev) / S3 (prod) |
— |
Standard S3, coût maîtrisé |
| Paiements |
Hyperswitch + Stripe Connect |
— |
Multi-PSP, indépendance fournisseur |
| Live Streaming |
Nginx-RTMP + HLS |
— |
Standard industrie, compatible OBS |
| Antivirus |
ClamAV |
1.4 |
Scan des uploads, protection contre les malwares |
| CI/CD |
GitHub Actions |
— |
Intégration native GitHub, parallelisation |
| Conteneurs |
Docker + docker-compose |
— |
Reproductibilité, isolation |
| Monitoring |
Prometheus + Grafana |
— |
Métriques temps réel, alerting |
6.2 Dépendances Frontend clés
| Bibliothèque |
Rôle |
@tanstack/react-query |
Gestion de l'état serveur (cache, revalidation, déduplication) |
zustand |
État client léger et persistant (auth, player, UI) |
axios |
Client HTTP avec intercepteurs (refresh token, CSRF, retry) |
react-router-dom |
Routing avec lazy loading |
i18next |
Internationalisation (3 langues) |
react-hook-form + zod |
Formulaires typés avec validation runtime |
hls.js |
Lecture HLS dans le navigateur |
framer-motion |
Animations fluides |
recharts |
Graphiques pour les analytics |
@radix-ui |
Primitives UI accessibles |
@dnd-kit |
Drag-and-drop (playlists) |
lucide-react |
Icônes |
6.3 Dépendances Stream Server clés (Rust)
| Crate |
Rôle |
axum + tokio |
Framework web async haute performance |
symphonia |
Décodage audio multi-format |
hound |
Lecture/écriture WAV |
minimp3 |
Décodage MP3 |
rustfft + dasp |
Traitement du signal audio |
sqlx |
Accès DB type-safe async |
deadpool-redis |
Pool de connexions Redis |
lapin |
Client RabbitMQ |
metrics + tracing |
Observabilité (Prometheus + logs structurés) |
7. Backend API (Go)
7.1 Surface API
Le backend expose 120+ endpoints REST organisés en 26 groupes de routes, tous préfixés par /api/v1/ :
| Groupe |
Endpoints |
Description |
| Auth |
20+ |
Inscription, connexion, 2FA, OAuth, WebAuthn, sessions |
| Tracks |
40+ |
Upload, métadonnées, likes, reposts, commentaires, stems, HLS |
| Users |
25+ |
Profils, follow, block, avatar, export RGPD, présence |
| Playlists |
20+ |
CRUD, collaboration, partage, analytics, export multi-format |
| Search |
2 |
Recherche unifiée + autocomplete |
| Marketplace |
30+ |
Produits, commandes, licences, reviews, wishlist, panier |
| Subscriptions |
8 |
Plans, abonnement, facturation, annulation |
| Analytics |
20+ |
Statistiques créateur, heatmaps, comparaisons, alertes |
| Social |
15+ |
Feed, posts, groupes, likes, commentaires |
| Distribution |
6 |
Soumission aux plateformes, suivi, royalties |
| Education |
20+ |
Cours, leçons, inscriptions, certificats |
| Live |
8 |
Streams live, clé RTMP, callbacks |
| Chat |
12 |
Conversations, membres, messagerie temps réel |
| Notifications |
7 |
In-app, préférences, push web |
| Cloud |
15+ |
Fichiers, dossiers, versioning, partage |
| Modération |
10+ |
Reports, spam, fingerprints, strikes, appels |
| Admin |
15+ |
Utilisateurs, contenu, paiements, feature flags |
| Developer |
3 |
Clés API, gestion |
| Discover |
6 |
Genres, tags, playlists éditoriales |
| Feed |
1 |
Feed chronologique |
| Co-listening |
3 |
Sessions synchronisées |
| Queue |
8 |
File d'attente de lecture |
| Gear |
12 |
Inventaire d'équipement |
| Core |
15+ |
Health, metrics, uploads, audit, CSRF |
7.2 Formats de réponse
Réponse standard :
{
"data": { ... },
"message": "Track created successfully"
}
Pagination :
{
"data": [ ... ],
"pagination": {
"page": 1,
"limit": 20,
"total": 150,
"total_pages": 8
}
}
Erreur :
{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Track with ID 123 not found",
"context": { "track_id": "123" }
}
}
7.3 Entités de base de données
91 entités réparties en domaines :
| Domaine |
Entités principales |
| Utilisateurs |
User, Session, RefreshToken, MFAConfig, WebAuthnCredential, FederatedIdentity, UserSettings, UserPresence |
| Audio |
Track, TrackVersion, TrackStem, TrackPlay, TrackLike, TrackRepost, TrackComment, HLSStream, WaveformData |
| Playlists |
Playlist, PlaylistTrack, PlaylistCollaborator, PlaylistFollow, PlaylistShareLink |
| Marketplace |
Product, Order, OrderItem, License, Review, SellerStripeAccount, SellerTransfer, Royalty |
| Abonnements |
SubscriptionPlan, Subscription |
| Social |
Room, ChatMessage, MessageReaction, Post, Group |
| Analytics |
PlaybackAnalytics, DailyTrackStats, CreatorAnalytics, AdvancedAnalytics |
| Modération |
Report, Strike, Appeal, ModerationAnalytics |
| Éducation |
Course, Lesson, CourseEnrollment, Certificate |
| Cloud |
UserFile, UserFolder, CloudFileVersion, CloudFileShare, StorageQuota |
| Administration |
AuditLog, FeatureFlag, Announcement, APIKey |
| Distribution |
DistributionPlatform, Distribution |
| Live |
LiveStream |
| Équipement |
Gear, GearImage, GearDocument, GearRepair |
8. Serveur de streaming (Rust)
8.1 Rôle
Le serveur de streaming est un composant haute performance dédié à :
- La diffusion audio en streaming adaptatif (HLS)
- Le transcodage des fichiers audio (upload → multiples qualités)
- La synchronisation temps réel pour la co-écoute
- Le cache intelligent des segments audio
8.2 Codecs supportés
| Codec |
Bitrate |
Latence |
Usage |
| Opus |
6-512 kbps |
2.5ms |
Live, co-écoute (ultra-basse latence) |
| AAC |
32-320 kbps |
20ms |
iOS/Safari, compatibilité universelle |
| MP3 |
32-320 kbps |
26ms |
Compatibilité legacy |
| FLAC |
700 kbps-1.4 Mbps |
40ms |
Qualité lossless (premium) |
8.3 Pipeline de transcodage
Upload audio (WAV/MP3/FLAC/...)
│
▼
[Décodage] → PCM samples (via Symphonia)
│
▼
[Traitement] → Normalisation, effets, EQ
│
▼
[Encodage multi-qualité]
├── Opus 128kbps (standard)
├── AAC 256kbps (haute qualité)
├── MP3 320kbps (compatibilité)
└── FLAC (lossless, premium)
│
▼
[Segmentation HLS] → Segments .ts + playlist .m3u8
│
▼
[Cache LRU] → Segments fréquemment demandés en mémoire
8.4 Architecture de concurrence
- Runtime async : Tokio (multi-thread, work-stealing)
- Pool de workers : 1 worker par core CPU pour le transcodage
- Connexions concurrentes : DashMap (lock-free concurrent HashMap)
- WebSocket : Gestion simultanée de milliers de connexions
- Rate limiting : Token bucket (governor crate)
9. Frontend (React/TypeScript)
9.1 Design System SUMI
Le frontend utilise SUMI v2.0, un design system propriétaire conçu pour l'éthique et l'accessibilité :
Palette de couleurs :
- Fonds : Void (#0c0c0f) → Raised (#1a1a1f) → Overlay (#222228)
- Texte : Primary (#f0ede8) → Secondary (#a8a4a0) → Tertiary (#706c68)
- Accent : Bleu (#7c9dd6) — Actions principales
- Vermillion : Rouge (#d4634a) — Erreurs, actions destructives
- Sage : Vert (#7a9e6c) — Succès, confirmations
- Gold : Jaune (#c9a84c) — Avertissements
Typographie :
- Titres : Space Grotesk
- Corps : Inter
- Code : JetBrains Mono
- Éditorial : Noto Serif JP
Accessibilité :
- Conforme WCAG AA
- Labels ARIA sur tous les composants interactifs
- Navigation clavier complète (Tab, Enter, Escape)
- Focus visible sur tous les éléments interactifs
9.2 Modules fonctionnels
Le frontend est organisé en 37 modules fonctionnels indépendants dans /src/features/ :
features/
├── auth/ # Login, register, 2FA, sessions, email verification
├── player/ # Lecteur audio global, contrôles, queue, waveform
├── tracks/ # Pages de tracks, cards, commentaires, upload
├── playlists/ # Gestion playlists, collaboration, export
├── search/ # Recherche unifiée, autocomplete
├── dashboard/ # Page d'accueil, stats, activité récente
├── discover/ # Navigation par genres/tags/moods
├── library/ # Bibliothèque personnelle
├── notifications/ # Centre de notifications
├── chat/ # Messagerie temps réel
├── profile/ # Profil utilisateur
├── settings/ # Préférences, thème, langue, confidentialité
├── marketplace/ # Vente/achat de beats et samples
├── seller/ # Dashboard vendeur
├── checkout/ # Flux de paiement
├── analytics/ # Analytics créateur
├── distribution/ # Distribution externe
├── education/ # Cours et formations
├── live/ # Live streaming
├── social/ # Follow, like, feed
├── cloud/ # Stockage cloud
├── admin/ # Administration plateforme
├── developer/ # Dashboard développeur, webhooks
├── subscription/ # Gestion abonnement premium
├── ... # Et plus encore
9.3 Gestion d'état
| Couche |
Technologie |
Usage |
| État serveur |
React Query (TanStack) |
Tracks, playlists, profils, notifications — cache, revalidation, déduplication |
| État client |
Zustand (persist) |
Auth, player, UI (sidebar, thème, langue) |
| État formulaires |
React Hook Form + Zod |
Validation runtime typée |
| Temps réel |
WebSocket + Broadcast Channel |
Synchronisation cross-tabs, chat, notifications |
9.4 Lecteur audio
Le lecteur audio est un composant central de l'application :
- HLS adaptatif via hls.js (qualité auto-ajustée)
- Contrôles : play/pause, seek, volume, mute, next/previous
- Fonctionnalités avancées : vitesse de lecture (0.5x-2x), crossfade, normalisation audio
- Media Session API : Contrôles lockscreen (mobile)
- WakeLock : Empêche la mise en veille pendant la lecture
- Picture-in-Picture : Mini-lecteur flottant
- Queue partagée : Sessions de queue synchronisées entre utilisateurs
- Raccourcis clavier : Espace (play), flèches (seek), V (volume), > (suivant)
10. Infrastructure et déploiement
10.1 Services Docker
| Service |
Image |
Mémoire |
Port |
Rôle |
| PostgreSQL |
postgres:16 |
256 MB |
5432 |
Base de données principale |
| Redis |
redis:7-alpine |
64 MB |
6379 |
Cache, sessions, rate limit |
| RabbitMQ |
rabbitmq:3-management |
512 MB |
5672/15672 |
Message queue + dashboard |
| ClamAV |
clamav/clamav:1.4 |
512 MB |
3310 |
Antivirus scan des uploads |
| MinIO |
minio/minio |
256 MB |
9000/9001 |
Object storage (dev) |
| Nginx-RTMP |
custom |
128 MB |
1935/8088 |
Ingest RTMP + HLS live |
| Backend API |
go:1.24 |
variable |
8080 |
API REST |
| Stream Server |
rust:latest |
variable |
18082 |
Streaming audio |
10.2 Environnements
| Environnement |
Description |
Commande |
| Local |
Tous les services via Docker |
make dev |
| Dev |
Backend Docker + frontend Vite local |
make dev-backend-api |
| Staging |
Validation pré-production (Lighthouse, k6, RGPD) |
CI/CD auto |
| Production |
SSL, limites ressources, health checks |
docker-compose.prod.yml |
10.3 Health Checks
| Service |
Endpoint |
Méthode |
| Backend API |
GET /api/v1/health |
HTTP 200 |
| Backend API (deep) |
GET /api/v1/health/deep |
Vérifie toute l'infra |
| Stream Server |
GET /health |
HTTP 200 |
| PostgreSQL |
pg_isready |
CLI |
| Redis |
redis-cli ping |
CLI |
| RabbitMQ |
rabbitmq-diagnostics ping |
CLI |
10.4 Monitoring
- Prometheus : Collecte des métriques depuis
/metrics (protégé par token bearer)
- Grafana : Dashboards de visualisation et alerting
- Sentry : Tracking d'erreurs (frontend et backend)
- Logs structurés JSON :
level, time, msg, request_id, user_id
11. Sécurité
11.1 Authentification multi-couches
| Méthode |
Description |
| JWT RS256 |
Tokens signés avec clé RSA (rotation de clés supportée) |
| 2FA TOTP |
Authentification à deux facteurs via app (Google Authenticator, Authy) |
| WebAuthn/Passkeys |
Authentification sans mot de passe (FIDO2) |
| OAuth |
Connexion via Google, GitHub, Discord, Spotify |
| Codes de récupération |
Codes backup pour la 2FA |
11.2 Protections actives
| Protection |
Détail |
| Rate limiting |
Par IP (global), par utilisateur, par endpoint, par clé API |
| CSRF |
Tokens double-submit cookie, validation sur les requêtes mutatives |
| CORS |
Whitelist d'origines en production |
| CSP |
Content Security Policy stricte |
| Account lockout |
5 tentatives → verrouillage 30 min |
| Password history |
Empêche la réutilisation des derniers mots de passe |
| Token blacklist |
Révocation immédiate des JWT via Redis |
| ClamAV |
Scan antivirus de tous les fichiers uploadés |
| Audit logging |
Journalisation de toutes les actions sensibles |
| Signed URLs |
URLs S3 signées avec expiration pour les fichiers privés |
11.3 Audit de sécurité
Le projet a subi un pentest complet (v0.12.6) :
- 36 findings identifiés sur 36 fichiers
- 36/36 findings remédiés
- Conformité ASVS Level 2 (OWASP Application Security Verification Standard)
- Suppression de modules fantômes et patterns non-éthiques
12. Modèle économique
12.1 Sources de revenus
┌─────────────────────────────────────────────────────────────┐
│ SOURCES DE REVENUS │
│ │
│ ┌─────────────────┐ ┌──────────────────┐ │
│ │ MARKETPLACE │ │ ABONNEMENTS │ │
│ │ │ │ │ │
│ │ Commission 15% │ │ Creator $5.99/mo │ │
│ │ sur chaque │ │ Premium $9.99/mo │ │
│ │ vente │ │ │ │
│ └─────────────────┘ └──────────────────┘ │
│ │
│ ┌─────────────────┐ ┌──────────────────┐ │
│ │ DISTRIBUTION │ │ FORMATIONS │ │
│ │ │ │ │ │
│ │ Commission sur │ │ Commission sur │ │
│ │ les royalties │ │ les ventes de │ │
│ │ externes │ │ cours │ │
│ └─────────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────┘
12.2 Plans d'abonnement
| Plan |
Prix |
Fonctionnalités |
| Free |
$0 |
Écoute en streaming, playlists, recherche, feed, chat |
| Creator |
$5.99/mois |
Upload illimité, analytics avancés, marketplace, distribution |
| Premium |
$9.99/mois |
Qualité FLAC, téléchargements, pas de pub, remise 10% marketplace |
- Essai gratuit de 14 jours pour Creator et Premium
- Facturation via Stripe (mensuelle ou annuelle)
- Annulation en un clic, sans friction
12.3 Marketplace
| Aspect |
Détail |
| Produits |
Beats, samples, kits, presets |
| Licences |
Basic, Premium, Exclusive (prix croissant) |
| Commission |
15% (vs 30% standard industrie) |
| Paiements vendeurs |
Hebdomadaires automatiques (seuil $50) ou manuels (seuil $100) |
| Processeur |
Hyperswitch (Stripe + PayPal) |
| KYC |
Vérification d'identité obligatoire pour les vendeurs (Stripe Identity) |
12.4 Comparaison avec la concurrence
| Aspect |
Veza |
Spotify |
SoundCloud |
Bandcamp |
| Commission marketplace |
15% |
N/A |
45% |
15% |
| Fréquence paiements |
Hebdo |
Mensuel |
Mensuel |
Instantané |
| Métriques publiques |
Non |
Oui |
Oui |
Partiel |
| Dark patterns |
Aucun |
Oui |
Oui |
Limité |
| Algorithme comportemental |
Non |
Oui |
Oui |
Non |
| Export données |
Complet |
Limité |
Limité |
Limité |
| Open API |
Oui |
Oui |
Oui |
Non |
13. Parcours utilisateur
13.1 Auditeur
1. Inscription
├── Email + mot de passe
├── Vérification email
└── (optionnel) Activation 2FA
2. Découverte
├── Explorer par genres / tags / moods
├── Recherche unifiée
└── Feed chronologique des artistes suivis
3. Écoute
├── Clic sur un track → streaming HLS
├── Player bar : artwork, titre, artiste, progress, contrôles
├── Queue : ajouter, réordonner, sessions partagées
└── Raccourcis clavier pour toutes les actions
4. Organisation
├── Créer des playlists
├── Inviter des collaborateurs
├── Partager des playlists publiques
└── Exporter (JSON, CSV, M3U)
5. Social
├── Suivre des artistes
├── Rejoindre des groupes
├── Commenter des tracks
└── Chat avec d'autres utilisateurs
6. Marketplace
├── Acheter des beats / samples / kits
├── Choisir une licence (Basic / Premium / Exclusive)
└── Télécharger les produits achetés
13.2 Créateur
1. Passer au plan Creator ($5.99/mois)
2. Upload
├── Upload de tracks (drag-and-drop ou parcourir)
├── Métadonnées : titre, genre, tags, description, lyrics
├── Transcodage automatique multi-qualité
└── Upload de stems pour remix
3. Analytics (privés)
├── Nombre d'écoutes, sources de trafic
├── Données géographiques (anonymisées)
├── Heatmaps d'écoute
├── Comparaison de périodes
└── Alertes métriques personnalisées
4. Marketplace (vente)
├── Créer des produits (beats, samples, kits)
├── Définir les prix par licence
├── Suivre les ventes et revenus
└── Recevoir les paiements (hebdomadaires)
5. Distribution
├── Soumettre sur Spotify, Apple Music, Deezer
├── Suivre le statut de distribution
└── Voir les royalties externes
6. Live Streaming
├── Configurer OBS avec la clé RTMP
├── Lancer un live
└── Interagir avec le chat en direct
7. Formation
├── Créer des cours avec modules vidéo
├── Suivre les inscriptions
└── Délivrer des certificats
14. Conformité et vie privée
14.1 RGPD (Règlement Général sur la Protection des Données)
| Droit |
Implémentation |
| Droit d'accès |
GET /users/me/export — Export JSON de toutes les données |
| Droit à la portabilité |
POST /users/me/export — Export ZIP asynchrone complet |
| Droit à l'effacement |
DELETE /users/me — Suppression du compte avec période de grâce de 30 jours |
| Droit d'opposition |
Préférences de notifications granulaires, opt-out marketing |
| Minimisation des données |
Seules les données nécessaires sont collectées |
14.2 CCPA (California Consumer Privacy Act)
- Endpoint dédié :
POST /users/me/privacy/opt-out
- Opt-out du partage/vente de données personnelles (Veza ne vend pas de données, mais le mécanisme est prévu)
14.3 Politique de confidentialité des données
- Géolocalisation : Anonymisée au niveau pays (pas de ville ni d'IP stockée)
- Analytics : Agrégées à minimum 10 utilisateurs (pas de profiling individuel)
- Données comportementales : NON utilisées pour le ranking ou les recommandations
- Cookies : Uniquement fonctionnels (auth, CSRF) — aucun cookie de tracking tiers
- Chiffrement : Tokens OAuth chiffrés AES-256-GCM, passwords hashés bcrypt
15. Performance et scalabilité
15.1 Objectifs de performance
| Métrique |
Cible |
| Temps de réponse API (p95) |
< 100ms |
| Lighthouse Performance |
>= 85 |
| Lighthouse Accessibility |
>= 90 |
| Time to First Byte (TTFB) |
< 200ms |
| First Contentful Paint (FCP) |
< 1.5s |
| Largest Contentful Paint (LCP) |
< 2.5s |
| Utilisateurs concurrents (charge) |
1000+ (validé par k6) |
15.2 Stratégies de performance
| Stratégie |
Détail |
| Cache Redis |
Résultats fréquents cachés avec invalidation intelligente |
| CDN |
Assets statiques servis via CDN avec cache longue durée |
| Code splitting |
Routes lazy-loaded, vendor chunks séparés |
| HLS adaptatif |
Qualité audio ajustée automatiquement selon la bande passante |
| Cache LRU audio |
Segments audio fréquents en mémoire sur le stream server |
| Index DB |
Index PostgreSQL optimisés (144 migrations incluant les index de performance) |
| Pool de connexions |
Connexions DB/Redis poolées et réutilisées |
| Compression |
gzip/brotli/zstd sur les réponses HTTP |
15.3 Scalabilité horizontale
Load Balancer
┌───────────┐
│ Nginx / │
│ HAProxy │
└─────┬─────┘
┌───────────┼───────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ API #1 │ │ API #2 │ │ API #3 │ ← Stateless, scale horizontal
└────┬────┘ └────┬────┘ └────┬────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────┐
│ PostgreSQL (primary) │
│ + Read Replicas (optionnel) │
└─────────────────────────────────┘
│
┌────┴────┐
│ Redis │ ← Sessions, cache, rate limit (distribué)
└─────────┘
16. Historique des versions
Phase P3.5 — Consolidation & Sécurité (v0.9.x)
| Version |
Nom |
Contenu principal |
| v0.9.1 |
Migration JWT RS256 |
Rotation de clés, migration HS256 → RS256 |
| v0.9.2 |
Sécurité Infrastructure |
Rate limiting, CSP headers, protection /metrics |
| v0.9.3 |
Standardisation Toolchain |
Node 20, Rust stable, Makefile unifié |
| v0.9.4 |
Quality Gates CI/CD |
Coverage enforcement, linting, build validation |
| v0.9.5 |
Nettoyage Code |
Suppression AI/ML, blockchain, gamification |
| v0.9.6-9.7 |
Chat complet |
Réactions, mentions, fichiers, threads, groupes |
| v0.9.8-9.9 |
Dette technique |
Error handling, context propagation, goroutines |
Phase P4R — Social & Live (v0.10.x)
| Version |
Nom |
Contenu principal |
| v0.10.0 |
Système Follow |
Follow/unfollow, feed chronologique |
| v0.10.1 |
Découverte Éthique |
Tags, genres, pas de ranking comportemental |
| v0.10.2 |
Recherche Elasticsearch |
Full-text search, tolérance phonétique |
| v0.10.3 |
Interactions Sociales |
Commentaires, likes (privés), reposts, notifications |
| v0.10.4 |
Playlists Collaboratives |
Collaboration, import/export, playlists éditoriales |
| v0.10.5 |
Notifications |
In-app, email digest, préférences, quiet hours |
| v0.10.6 |
Live Streaming |
RTMP ingest, HLS distribution, chat live |
| v0.10.7 |
Collaboration Temps Réel |
Co-écoute, stems, rooms collaboratives |
| v0.10.8 |
Portabilité Données |
Export ZIP, suppression compte, grâce 30 jours |
Phase P5R — Analytics & Modération (v0.11.x)
| Version |
Nom |
Contenu principal |
| v0.11.0 |
Analytics Créateur |
Écoutes privées, géo anonymisée, sources |
| v0.11.1 |
Analytics Avancés |
Heatmaps, comparaison périodes, alertes |
| v0.11.2 |
Modération |
Reports, spam déterministe, fingerprinting ACRCloud |
| v0.11.3 |
Admin Plateforme |
Dashboard admin, gestion users/content/paiements |
Phase P6R — Premium & Infrastructure (v0.12.x)
| Version |
Nom |
Contenu principal |
| v0.12.0 |
Marketplace |
Produits, licences, checkout Hyperswitch |
| v0.12.1 |
Abonnements |
Free/Creator/Premium, Stripe, trial 14j |
| v0.12.2 |
Distribution |
Spotify/Apple/Deezer via API partenaire |
| v0.12.3 |
Formation |
Cours vidéo HLS, modules, certificats |
| v0.12.4 |
Performance |
CDN, Redis cache, query optimization, k6 |
| v0.12.5 |
PWA |
Service Worker offline, manifest, Media Session |
| v0.12.6 |
Pentest |
36 findings fixés, ASVS Level 2 |
Phase P7 — Conformité & Polish (v0.13.x)
| Version |
Nom |
Contenu principal |
| v0.12.7 |
i18n |
FR/EN/ES, 532+ clés par langue |
| v0.12.8 |
API Publique |
OpenAPI/Swagger, clés API avec scopes |
| v0.12.9 |
Tests Éthiques |
Bias checks, artistes émergents visibles |
| v0.13.0 |
Features Complètes |
SMS 2FA, CAPTCHA Turnstile, password history |
| v0.13.1 |
Audio Avancé |
Gapless, crossfade, normalisation |
| v0.13.2 |
Design System |
SUMI consolidé, design tokens, Storybook |
| v0.13.3 |
Sécurité Polish |
WebAuthn/Passkeys, IP geolocation |
| v0.13.4 |
Audio Polish |
PiP, Chromecast, visualizers |
| v0.13.5 |
Marketplace Polish |
KYC Stripe Identity, E2E testing |
Phase Validation (v0.14.x → v1.0.0)
| Version |
Nom |
Contenu principal |
| v0.14.0 |
Staging Validation |
Lighthouse, k6 load test, flux RGPD |
| v1.0.0-rc1 |
Release Candidate |
GO/NO-GO checklist, dark pattern audit, privacy policy |
| v1.0.0 |
Release Stable |
Prêt pour le lancement public |
17. Roadmap
Statut actuel
- 39 versions implémentées (v0.9.1 → v1.0.0-rc1)
- v1.0.0-rc1 tagué et testé — en attente de validation business finale
- Le code est production-ready
Prochaines étapes
-
v1.0.0 — Lancement public
- Validation finale du GO/NO-GO checklist
- Déploiement en production
- Monitoring de stabilité 48h sur staging
-
Post-lancement (v1.x)
- Retours utilisateurs et itérations
- Expansion géographique (nouvelles langues)
- Partenariats avec des labels indépendants
- Application mobile native (si demande validée)
18. Équipe et processus de développement
18.1 Organisation du code
Le projet est un monorepo organisé comme suit :
veza/
├── apps/web/ # Frontend React/TypeScript
├── veza-backend-api/ # Backend Go (API principale)
├── veza-stream-server/ # Serveur de streaming Rust
├── veza-common/ # Utilitaires partagés
├── ORIGIN/ # Spécifications (read-only)
├── docs/ # Documentation technique
├── make/ # Modules Makefile
├── docker-compose.yml # Orchestration Docker
└── .github/workflows/ # CI/CD GitHub Actions
18.2 Processus de développement
| Étape |
Détail |
| Spécification |
Fichiers ORIGIN/ (read-only, source de vérité) |
| Planification |
Roadmap versionnée dans VEZA_VERSIONS_ROADMAP.md |
| Branching |
Feature branches (feat/v{VERSION}-{nom}) |
| Développement |
Architecture hexagonale, TDD, code review |
| Tests |
Unitaires (Go, TS, Rust) + E2E (Playwright) + Load (k6) |
| CI/CD |
GitHub Actions : lint, test, build, coverage |
| Déploiement |
Docker-compose, staging validation, production |
18.3 Qualité du code
| Métrique |
Valeur |
| Backend Go |
~160,000 lignes, TypeScript strict |
| Frontend |
~37,000 lignes, TypeScript strict |
| Migrations SQL |
144 fichiers |
| Coverage Go |
>= 70% (enforced CI) |
| Coverage Rust |
>= 50% (enforced CI) |
| Linting |
golangci-lint (Go), ESLint (TS), cargo clippy (Rust) |
18.4 Commandes de développement
make dev # Démarre l'environnement complet
make test # Lance tous les tests
make lint # Linting strict
make build # Build complet
make migrate-up # Applique les migrations
make doctor # Vérifie les dépendances
make infra-up-dev # Lance l'infrastructure (Postgres, Redis, etc.)
19. Glossaire
| Terme |
Définition |
| ASVS |
Application Security Verification Standard — standard OWASP pour la vérification de sécurité des applications |
| Dark pattern |
Technique de design UX qui manipule l'utilisateur pour qu'il agisse contre son intérêt |
| Feed chronologique |
Flux d'actualités ordonné par date de publication (sans algorithme de ranking) |
| HLS |
HTTP Live Streaming — protocole de streaming adaptatif développé par Apple |
| Hyperswitch |
Routeur de paiement open-source permettant de connecter plusieurs processeurs (Stripe, PayPal) |
| KYC |
Know Your Customer — vérification d'identité obligatoire pour les vendeurs |
| Marketplace |
Place de marché intégrée pour la vente de beats, samples, kits et cours |
| ORIGIN |
Dossier de spécifications read-only qui définit les règles immuables du projet |
| Pentest |
Test de pénétration — audit de sécurité simulant des attaques |
| PWA |
Progressive Web App — application web installable avec fonctionnalités offline |
| RGPD |
Règlement Général sur la Protection des Données (règlement européen) |
| RTMP |
Real-Time Messaging Protocol — protocole pour le live streaming (ingest depuis OBS) |
| SUMI |
Design system propriétaire de Veza (couleurs, typographie, composants) |
| Stem |
Piste audio isolée (voix, batterie, basse, etc.) permettant le remixage |
| Stripe Connect |
Plateforme de paiement pour les marketplaces (paiements aux vendeurs) |
Chiffres clés
| Métrique |
Valeur |
| Lignes de code total |
~200,000+ |
| Endpoints API |
120+ |
| Entités base de données |
91 |
| Services backend |
130+ |
| Middlewares |
20+ |
| Modules frontend |
37 |
| Migrations SQL |
144 |
| Versions implémentées |
39 |
| Langues supportées |
3 (FR, EN, ES) |
| Findings pentest remédiés |
36/36 |
| Codecs audio supportés |
4 (Opus, AAC, MP3, FLAC) |
Document généré le 2026-03-16. Pour toute question technique, consultez le code source et les fichiers ORIGIN/ du repository.