24 KiB
Scope v0.102 — Cahier des charges complet
Version cible : v0.102 (X=1, Y=2)
Prérequis : v0.101 taguée et stable
Objectif : Activer les routes « Coming Soon », renforcer le noyau produit, combler les lacunes critiques des modules existants
Dernière mise à jour : 19 février 2026
Effort estimé : 4-6 semaines de développement
1. Principe directeur
v0.102 = déblocage des placeholders + renforcement du cœur produit.
Trois axes :
- Débloquer les 4 routes « Coming Soon » (Gear, Live, Queue, Developer)
- Renforcer les features existantes les plus utilisées (Player, Playlists, Profils, Auth)
- Combler les lacunes qui nuisent à la cohérence produit (feature flags inactifs, UX incomplète)
Règles :
- Aucune nouvelle route/page majeure (pas de
/education,/studio,/nft)- Aucune nouvelle dépendance lourde (sauf correctif sécurité)
- Chaque feature doit correspondre à un item de
docs/archive/root-md/veza_full_features_list.md- Chaque feature livrée doit avoir : tests, story Storybook, documentation
2. Contexte — État v0.101
2.1 Features opérationnelles (19 groupes)
| # | Feature | Frontend | Backend | Couverture features list |
|---|---|---|---|---|
| 1 | Auth (register, login, JWT, refresh) | OK | OK | 53% du Module 1 |
| 2 | 2FA (TOTP) | OK | OK | Feature 19, 21 |
| 3 | OAuth (Google, GitHub, Discord) | OK | OK | Features 4-6 |
| 4 | Profils utilisateur | OK | OK | 51% du Module 2 |
| 5 | Upload de tracks | OK | OK | 63% du Module 3 |
| 6 | CRUD Tracks | OK | OK | Complet |
| 7 | Playlists (CRUD, collaboration) | OK | OK | 71% du Module 4.3 |
| 8 | Chat WebSocket | OK | OK | 51% du Module 5 |
| 9 | Dashboard | OK | OK | Partiel |
| 10 | Recherche | OK | OK | 33% du Module 11 |
| 11 | Social (feed, posts, groups) | OK | OK | 35% du Module 6 |
| 12 | Administration | OK | OK | 24% du Module 13 |
| 13 | Marketplace | OK | OK | 28% du Module 7 |
| 14 | Webhooks | OK | OK | Feature 595 |
| 15 | Inventory / Gear | OK | OK | 32% du Module 9 |
| 16 | Live Streaming (métadonnées) | OK | OK | Mock uniquement |
| 17 | Analytics | OK | OK | 40% du Module 12 |
| 18 | Roles | OK | OK | Features 46-53 partiels |
| 19 | Notifications | OK | OK | 45% du Module 19 |
2.2 Routes ex-Coming Soon — v0.102 débloquées
| Route | Backend | Frontend | Statut v0.102 |
|---|---|---|---|
/queue |
CRUD /api/v1/queue + useQueueSync | QueueView + @dnd-kit | Opérationnel |
/developer |
CRUD /api/v1/developer/api-keys | DeveloperDashboardView + CreateAPIKeyModal | Opérationnel |
/gear |
CRUD /api/v1/inventory/gear |
GearView + gearService | Opérationnel |
/live |
GET /api/v1/live/streams |
LiveView + liveService (Go Live: v0.703) | Opérationnel |
2.3 Feature flags actuels
| Flag | Valeur v0.101 | Action v0.102 |
|---|---|---|
TWO_FACTOR_AUTH |
true |
Inchangé |
PLAYLIST_COLLABORATION |
true |
Inchangé |
PLAYLIST_SEARCH |
true |
Inchangé |
PLAYLIST_SHARE |
true (v0.102) |
Activé (Lot D) |
PLAYLIST_RECOMMENDATIONS |
true (v0.102) |
Activé (Lot D) |
HLS_STREAMING |
true |
Inchangé |
ROLE_MANAGEMENT |
actif | Inchangé |
NOTIFICATIONS |
actif | Inchangé |
2.4 Couverture globale
- Features implémentées : ~204 / 600 (34%)
- Cible v0.102 : ~230 / 600 (38%)
- Delta : +26 features individuelles
3. Roadmap macro — Chemin vers la v1.0
3.1 Schéma de versioning
Format 0.X0Y : X = phase majeure (1-9), Y = itération (1-3).
27 versions de 0.101 à 0.903, puis v1.0.
Phase 1 (Fondation) : 0.101 -> 0.102 -> 0.103
Phase 2 (Contenu) : 0.201 -> 0.202 -> 0.203
Phase 3 (Social) : 0.301 -> 0.302 -> 0.303
Phase 4 (Commerce) : 0.401 -> 0.402 -> 0.403
Phase 5 (Education/Gear) : 0.501 -> 0.502 -> 0.503
Phase 6 (Admin/Securite) : 0.601 -> 0.602 -> 0.603
Phase 7 (Avance) : 0.701 -> 0.702 -> 0.703
Phase 8 (Platform) : 0.801 -> 0.802 -> 0.803
Phase 9 (Polish/Launch) : 0.901 -> 0.902 -> 0.903
-> v1.0
3.2 Vision par phase
| Phase | Versions | Focus | Modules principaux | Features cumulées |
|---|---|---|---|---|
| 1 — Fondation | 0.101-0.103 | Stabiliser, débloquer, compléter le noyau | M1, M2, M3, M4, M14 | ~270 / 600 |
| 2 — Contenu | 0.201-0.203 | Recherche avancée, métadonnées, formats | M3, M11, M12 | ~330 / 600 |
| 3 — Social | 0.301-0.303 | Social complet, chat avancé, présence | M5, M6, M19 | ~390 / 600 |
| 4 — Commerce | 0.401-0.403 | Marketplace complet, paiements, vendeur | M7 | ~440 / 600 |
| 5 — Education/Gear | 0.501-0.503 | Formation, gear avancé, cloud | M8, M9, M10 | ~490 / 600 |
| 6 — Admin/Sécu | 0.601-0.603 | Admin complet, sécurité avancée, UX | M13, M14, M20 | ~530 / 600 |
| 7 — Avancé | 0.701-0.703 | IA, livestreaming, collaboration | M15 | ~565 / 600 |
| 8 — Platform | 0.801-0.803 | API publique, intégrations, apps natives | M16, M17, M21 | ~590 / 600 |
| 9 — Polish | 0.901-0.903 | Gamification, Web3, polish final | M18, M15.4 | 600 / 600 |
3.3 Positionnement v0.102
v0.102 est la 2e des 27 versions. Elle cible :
- Déblocage des 4 routes « Coming Soon »
- +26 features individuelles (de ~204 à ~230)
- Passage de 34% à 38% de couverture globale
- Renforcement critique du coeur produit avant d'attaquer les modules secondaires en Phase 2
4. Features IN SCOPE v0.102
4.1 Lot A — Activation complète Gear & Live (priorité haute)
Objectif : Supprimer les toasts « coming soon » sur les actions principales et valider les flows end-to-end.
Effort : S (1-2 jours)
Référence : Module 9 (features 306-320), Module 15.2 (features 471-480)
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---|---|---|---|---|
| A1 | Gear — Add | Connecter le bouton « Add Gear » à un formulaire/modal utilisant gearService.create() |
Existant | Modal à connecter | Création enregistrée en base |
| A2 | Gear — Edit | S'assurer que GearDetailModal permet édition via gearService.update() |
Existant | A valider | Edition fonctionnelle |
| A3 | Gear — Delete | Confirmation + suppression via gearService.delete() |
Existant | A valider | Suppression fonctionnelle |
| A4 | Gear — Catégories | Ajouter filtre par catégorie (synthé, interface, micro, etc.) dans GearView | Existant (champ category) |
Filtre à ajouter | Filtrage par catégorie visible |
| A5 | Live — Browse | Remplacer le fallback mock par la liste réelle liveService.listStreams() |
Existant | A brancher | Affichage des streams depuis l'API |
| A6 | Live — Go Live | Conserver le toast « coming soon » ; documenter la limitation dans le composant | N/A | Toast existant | Documentation + pas de régression |
Features list v1.0 couvertes : 306 (ajouter), 307 (éditer), 308 (supprimer), 309 (catégories), 320 (recherche inventaire)
4.2 Lot B — Queue persistante (priorité haute)
Objectif : Exposer l'API queue côté backend, synchroniser QueueView avec la base, et ajouter les contrôles manquants.
Effort : M (3-5 jours)
Référence : Module 4.2 (features 126-135)
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---|---|---|---|---|
| B1 | Queue API — CRUD | Routes REST : GET /api/v1/queue, PUT /api/v1/queue, POST /api/v1/queue/items, DELETE /api/v1/queue/items/:id, DELETE /api/v1/queue |
A créer (handler + service) | N/A | CRUD conforme au schema DB |
| B2 | Queue — Sync frontend | Brancher QueueView sur l'API ; mode dégradé client-only si non authentifié | N/A | A brancher | Persistance entre sessions |
| B3 | Queue — Drag & drop reorder | Réorganiser par drag & drop (utiliser @dnd-kit déjà en dépendance) |
PUT /api/v1/queue (reorder) |
Composant existant à enrichir | Réorganisation sauvegardée |
| B4 | Queue — Clear | Bouton « Vider la queue » avec confirmation | DELETE /api/v1/queue |
Bouton + dialog | Queue vidée |
| B5 | Queue — Save as playlist | Conserver le comportement actuel (déjà fonctionnel) | Existant | Existant | Pas de régression |
| B6 | Queue — Resume | Reprendre la queue là où l'utilisateur s'est arrêté (track + position) | Persister current_index + position_ms |
Restaurer au login | Reprise automatique |
Features list v1.0 couvertes : 126 (queue list), 127 (add), 128 (remove), 129 (reorder), 130 (save as playlist), 131 (clear), 133 (resume)
4.3 Lot C — Developer Portal — API Keys (priorité moyenne)
Objectif : Permettre la création et la gestion de clés API utilisateur, distinctes des clés webhook.
Effort : M (3-5 jours)
Référence : Module 21 (features 586-600)
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---|---|---|---|---|
| C1 | Modèle api_keys |
Table : id, user_id, name, prefix (8 chars), hashed_key, scopes (JSON), last_used_at, expires_at, created_at |
Migration SQL à créer | N/A | Table créée, migration réversible |
| C2 | API Keys — CRUD | Routes : GET /api/v1/developer/api-keys, POST /api/v1/developer/api-keys, DELETE /api/v1/developer/api-keys/:id |
Service + Handler à créer | N/A | Génération, liste, révocation |
| C3 | API Keys — Frontend | Remplacer « Coming soon » par formulaire création + liste des clés + copie sécurisée | N/A | DeveloperDashboardView à modifier | Clé affichée une seule fois lors de la création |
| C4 | Auth par API key | Middleware X-API-Key header ; validation scopes ; rate limiting séparé |
Middleware à créer | N/A | Authentification API key fonctionnelle |
| C5 | API Keys — Logs | Afficher last_used_at et compteur d'appels dans la liste frontend |
last_used_at mis à jour par middleware |
Colonne dans la liste | Tracking d'usage visible |
| C6 | API Keys — Scopes | Interface de sélection des scopes (read, write, admin) lors de la création | Validation scopes | Checkboxes dans le formulaire | Scopes appliqués et vérifiés |
Features list v1.0 couvertes : 588 (auth API keys), 598 (logs API calls), 599 (analytics API usage), 600 (developer dashboard)
4.4 Lot D — Activation feature flags & UX Playlists (priorité moyenne)
Objectif : Activer les feature flags inactifs et compléter les flows playlist.
Effort : S (2-3 jours)
Référence : Module 4.3 (features 136-150)
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---|---|---|---|---|
| D1 | Playlist Share | Activer PLAYLIST_SHARE ; connecter SharePlaylistModal à playlistService.createShareLink() |
Route existante /playlists/:id/share |
Modal existant à connecter | Partage par lien fonctionnel |
| D2 | Playlist Recommendations | Activer PLAYLIST_RECOMMENDATIONS ; connecter la section à playlistService.getRecommendations() |
Route existante /playlists/recommendations |
Section UI existante | Recommandations affichées |
| D3 | Playlist Export | Activer export JSON/CSV ; les routes backend existent déjà | Routes existantes (/export/json, /export/csv) |
Boutons à connecter | Export téléchargeable |
| D4 | Playlist Duplicate | Activer le bouton « Dupliquer » ; route backend existante | Route existante (/duplicate) |
Bouton à connecter | Playlist dupliquée |
Features list v1.0 couvertes : 146 (partager), 147 (dupliquer), 149 (exporter)
4.5 Lot E — Renforcement Social (priorité moyenne)
Objectif : Remplacer les toasts « coming soon » par des appels API réels sur les interactions sociales.
Effort : S (2-3 jours)
Référence : Module 6 (features 186-225)
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---|---|---|---|---|
| E1 | Social — Like post | Connecter le bouton like à POST /api/v1/social/like |
Route existante | Bouton à connecter | Like fonctionnel, compteur mis à jour |
| E2 | Social — Comment post | Connecter le formulaire commentaire à POST /api/v1/social/comments |
Route existante | Formulaire à connecter | Commentaire ajouté et visible |
| E3 | Social — Trending | Connecter la section trending de SocialViewTrending à l'API | A évaluer | Section UI existante | v0.102 : limitation documentée, tags statiques conservés ; report v0.103 (GET /social/trending) |
| E4 | Profile — Follow count | Afficher les compteurs followers/following sur le profil public | Routes existantes | Compteurs à afficher | Compteurs visibles et à jour |
| E5 | Profile — Badges | Afficher les badges/rôles sur le profil public (données RBAC existantes) | Données existantes | Composant Badge à ajouter | Badges visibles sur profil |
Features list v1.0 couvertes : 205 (liker post), 206 (commenter post), 214 (trending), 188-189 (followers/following count), 45 (badges)
4.6 Lot F — Renforcement Player & Streaming (priorité basse)
Objectif : Ajouter les contrôles player manquants à faible effort.
Effort : S (1-2 jours)
Référence : Module 4.1 (features 106-125)
| # | Feature | Tâche détaillée | Backend | Frontend | Critère de sortie |
|---|---|---|---|---|---|
| F1 | Playback speed | Sélecteur de vitesse (0.5x, 0.75x, 1x, 1.25x, 1.5x, 2x) dans le player | N/A | Composant à ajouter | Vitesse ajustable |
| F2 | Media Session API | Contrôles OS (titre, artwork, play/pause/next/prev dans la barre système) | N/A | Hook à créer | Contrôles OS fonctionnels |
| F3 | Waveform preview | Waveform basique dans la barre de progression (données mock ou générées client-side) | N/A | Canvas/SVG dans ProgressBar | Waveform visible |
Features list v1.0 couvertes : 114 (playback speed), 123 (media session API), 117 (waveform)
5. Récapitulatif des features v0.102
5.1 Par lot
| Lot | Nom | Priorité | Effort | Features | Items v1.0 couverts |
|---|---|---|---|---|---|
| A | Gear & Live | Haute | S (1-2j) | 6 | 306-309, 320 |
| B | Queue persistante | Haute | M (3-5j) | 6 | 126-131, 133 |
| C | Developer API Keys | Moyenne | M (3-5j) | 6 | 588, 598-600 |
| D | Feature flags & Playlists | Moyenne | S (2-3j) | 4 | 146-147, 149 |
| E | Renforcement Social | Moyenne | S (2-3j) | 5 | 45, 188-189, 205-206, 214 |
| F | Player & Streaming | Basse | S (1-2j) | 3 | 114, 117, 123 |
| TOTAL | 12-20j | 30 | 26 items v1.0 |
5.2 Par service impacté
| Service | Lots impactés | Nature des changements |
|---|---|---|
| Backend Go | B, C | Nouveaux handlers, services, migration SQL (queue, api_keys) |
| Frontend React | A, B, C, D, E, F | Connexion composants existants, nouveaux composants (scopes, waveform) |
| Chat Server | - | Aucun changement |
| Stream Server | - | Aucun changement |
| Base de données | B, C | 2 nouvelles migrations (queue routes, api_keys table) |
5.3 Nouveaux endpoints API
| Méthode | Route | Lot | Description |
|---|---|---|---|
GET |
/api/v1/queue |
B | Récupérer la queue de l'utilisateur |
PUT |
/api/v1/queue |
B | Mettre à jour l'ordre de la queue |
POST |
/api/v1/queue/items |
B | Ajouter un item à la queue |
DELETE |
/api/v1/queue/items/:id |
B | Retirer un item de la queue |
DELETE |
/api/v1/queue |
B | Vider la queue |
GET |
/api/v1/developer/api-keys |
C | Lister les clés API |
POST |
/api/v1/developer/api-keys |
C | Créer une clé API |
DELETE |
/api/v1/developer/api-keys/:id |
C | Révoquer une clé API |
6. Features HORS SCOPE v0.102
| Feature | Raison | Version cible |
|---|---|---|
| Live streaming vidéo (flux réel) | Périmètre trop large ; reste mock/métadonnées | v0.703 |
| Seller dashboard complet | Shell vide ; besoin marketplace mature | v0.403 |
| Paiement Hyperswitch réel | Intégration complexe ; besoin du seller dashboard | v0.402 |
| PWA (service worker, install) | Report ; focus web d'abord | v0.803 |
| WebRTC | Non prioritaire ; HLS suffit | v0.703 |
| Nouvelles routes majeures | Pas de /education, /studio, /nft |
v0.5xx+ |
| Nouvelles dépendances | Sauf correctif sécurité | - |
| OAuth Spotify | Pas de besoin immédiat | v0.103 |
| 2FA SMS | Infrastructure SMS requise | v0.103 |
| Passkeys/WebAuthn | Complexité élevée | v0.103 |
| Upload depuis cloud (Dropbox, Drive) | Intégration tierce | v0.502 |
| Crossfade, gapless playback | Player avancé | v0.103 |
| Chat reactions, threads, mentions | Chat avancé | v0.302 |
| Gamification (XP, badges, leaderboard) | Module entier | v0.901 |
| AI features (mastering, stem separation) | Module entier | v0.701 |
7. Critères de stabilité v0.102
7.1 Build & compilation
go build ./...(backend) — 0 erreurcargo build --release(chat-server, stream-server) — 0 erreurnpm run build(frontend) — 0 erreurnpx tsc --noEmit— 0 erreur
7.2 Tests
go test ./...(backend) — 0 échecnpm test -- --run(frontend) — 0 échecnpm run test:storybook— 0 erreur console/réseau- E2E : auth, smoke, playlists, search, queue — 0 échec
- Nouveaux tests : queue CRUD, API keys CRUD, playlist share flow
7.3 Qualité
npm run lint— 0 erreur- Pas de régression sur les flows v0.101
- Stories mises à jour pour les composants modifiés (Loading, Error, Empty)
- Pas de valeurs Tailwind arbitraires ajoutées (vérifier avec
node scripts/report-arbitrary-values.mjs) - Composants > 300 lignes découpés en sous-composants
7.4 Sécurité
- API keys hashées en base (jamais stockées en clair)
- Clé API affichée une seule fois à la création
- Rate limiting sur les endpoints API keys
- Scopes vérifiés côté middleware
- Aucun secret commité
7.5 Documentation
FEATURE_STATUS.mdmis à jour avec les nouvelles featuresV0_102_RELEASE_SCOPE.mdreflète l'état final (checklist cochée)- Changelog ou release notes pour v0.102
- MSW handlers ajoutés pour les nouveaux endpoints (queue, api-keys)
- Stories Storybook pour les composants modifiés (QueueView Loading, etc.)
8. Services requis (inchangés)
| Service | Obligatoire | Note |
|---|---|---|
| Backend API (Go) | Oui | Coeur — nouveaux handlers queue + api-keys |
| PostgreSQL | Oui | Coeur — 2 nouvelles migrations |
| Redis | Oui | Sessions, rate limit, CSRF |
| Frontend (Vite) | Oui | Coeur — connexions UI |
| Chat Server (Rust) | Oui | Inchangé |
| Stream Server (Rust) | Oui | Inchangé |
| RabbitMQ | Oui | Evenements async |
| ClamAV | Oui | Scan virus uploads |
9. Dépendances et ordre de livraison
9.1 Graphe de dépendances
Lot A (Gear/Live) -----------------------------------------------+
|
Lot B (Queue) ---- [backend d'abord] ----------------------------+
+-- Lot D (Feature flags)
Lot C (API Keys) -- [backend d'abord] ---------------------------+ |
| +-- Validation finale
Lot E (Social) --------------------------------------------------+
|
Lot F (Player) --------------------------------------------------+
9.2 Ordre recommandé
| Semaine | Lots | Activités |
|---|---|---|
| S1 | A + B (backend) | Gear UI, Live browse, Queue API (Go handler + service + migration) |
| S2 | B (frontend) + C (backend) | Queue sync frontend, API Keys model + handler + migration |
| S3 | C (frontend) + D | Developer Dashboard UI, activation feature flags playlists |
| S4 | E + F | Social like/comment, profil badges, player speed/waveform/media session |
| S5 | Stabilisation | Tests, stories, documentation, bug fixes, validation E2E |
9.3 Livrables par semaine
- S1 : Gear CRUD fonctionnel, Live browse réel, Queue API disponible
- S2 : Queue persistante côté frontend, API Keys backend prêt
- S3 : Developer Dashboard opérationnel, Playlist share/export/duplicate activés
- S4 : Social interactions réelles, Player enrichi
- S5 : v0.102-rc1, tests complets, tag v0.102
10. Définition de « done » pour une feature v0.102
- Happy path fonctionne sans erreur
- Etats Loading, Error, Empty gérés dans le composant
- Tests : au moins 1 test (unit ou E2E) pour le flow principal
- Story Storybook à jour si composant modifié (états : Default, Loading, Error, Empty)
- MSW handler ajouté si nouvel endpoint
- Documentation : FEATURE_STATUS.md et scope mis à jour
- Code review : PR conforme aux conventions (commit format, scope check)
11. Processus de validation
11.1 Avant chaque PR
- Le changement est aligné avec un item du scope v0.102 (ce document)
- Pas de nouvelle route/page non listée ici
- Les tests passent (
go test,npm test,npm run lint) - La story Storybook est à jour
- Le MSW handler existe pour les nouveaux endpoints
11.2 Format de commit
feat(queue): add persistent queue API with CRUD operations
feat(developer): implement API key generation and management
feat(playlists): activate share feature flag and connect modal
fix(social): connect like button to actual API endpoint
refactor(player): add playback speed selector
test(queue): add unit tests for queue service
docs(scope): update FEATURE_STATUS.md for v0.102
11.3 Branche
- Branche de développement :
release/v0.102 - Feature branches :
feat/v0.102-queue-api,feat/v0.102-api-keys, etc. - Merge vers
release/v0.102puis versmainau tag
12. Préparation v0.103 (aperçu)
Après le tag v0.102, la version v0.103 (X=1, Y=3) clôturera la Phase 1 (Fondation) avec :
| Thème | Features candidates | Modules |
|---|---|---|
| Auth avancée | OAuth Spotify (#7), 2FA SMS (#20), Passkeys (#22), historique connexions (#26) | M1 |
| Profils complets | Bannière profil (#32), liens sociaux (#44), profil privé (#42) | M2 |
| Player avancé | Crossfade (#115), gapless (#116), PiP (#121) | M4.1 |
| Queue avancée | Queue collaborative (#134), autoplay/recommandations (#135) | M4.2 |
| Métadonnées enrichies | BPM (#95), key (#96), lyrics (#102), tags auto (#105) | M3.3 |
| Seller dashboard | Shell fonctionnel avec stats de ventes basiques | M7.4 |
Références
- V0_101_RELEASE_SCOPE.md — Version précédente (stabilisation)
- SCOPE_CONTROL.md — Processus anti-scope-creep
- FEATURE_STATUS.md — Statut des features
- veza_full_features_list.md — Cible 1.0 (600 features)
- DESIGN_TOKENS.md — Design tokens référence
- STORYBOOK_CONTRACT.md — Contrat Storybook