veza/sub_task_agents/full_monorepo/FULL_MONOREPO_AUDIT.md
senke ae586f6134 Phase 2 stabilisation: code mort, Modal→Dialog, feature flags, tests, router split, Rust legacy
Bloc A - Code mort:
- Suppression Studio (components, views, features)
- Suppression gamification + services mock (projectService, storageService, gamificationService)
- Mise à jour Sidebar, Navbar, locales

Bloc B - Frontend:
- Suppression modal.tsx deprecated, Modal.stories (doublon Dialog)
- Feature flags: PLAYLIST_SEARCH, PLAYLIST_RECOMMENDATIONS, ROLE_MANAGEMENT = true
- Suppression 19 tests orphelins, retrait exclusions vitest.config

Bloc C - Backend:
- Extraction routes_auth.go depuis router.go

Bloc D - Rust:
- Suppression security_legacy.rs (code mort, patterns déjà dans security/)
2026-02-14 17:23:32 +01:00

28 KiB
Raw Blame History

I'll conduct this comprehensive audit by systematically exploring every layer of the monorepo. Let me start by mapping the entire codebase in parallel.

[4 tools called]

Now let me dive deeper into specific critical areas that need more examination.

[2 tools called]

Now let me verify a few critical remaining items before writing the final report.

[10 tools called]

I now have comprehensive data across all layers. Let me compile the complete audit report.


RAPPORT D'AUDIT TECHNIQUE INTÉGRAL — MONOREPO VEZA

Date : 13 février 2026 Auditeur : Architecte logiciel senior / Expert sécurité Périmètre : Monorepo talas/veza — Branche main Licence : AGPL-3.0
Dernière mise à jour du document : 13 février 2026


EXECUTIVE SUMMARY

Veza est une plateforme audio collaborative (type SoundCloud/Bandcamp) avec marketplace, chat temps réel, streaming audio, et fonctionnalités sociales. Le monorepo contient 4 services (Go backend, 2 serveurs Rust, frontend React) et une infrastructure Docker/K8s mature.

Verdict global : Le produit est un MVP avancé avec une base technique solide mais des failles critiques qui interdisent un déploiement production en l'état.

Dimension Score Verdict
Architecture 7/10 Bonne structure, monorepo sous-exploité
Maintenabilité 6/10 Fichiers trop longs, features fantômes
Sécurité 5/10 Fondations OK, failles critiques présentes
Scalabilité 7/10 K8s prêt, mais services Rust incomplets

Risques bloquants immédiats (mis à jour 13/02/2026) :

  1. Fichiers .env : présents en local mais .env est dans .gitignore — vérifier quaucun secret nest dans lhistorique git.
  2. SSRF webhook : Corrigéwebhook_service.go implémente IsURLSafe() (blockedHostnames, isPrivateIP, schéma https/http uniquement).
  3. Contrôle daccès tracks : Corrigévalidate_track_access() dans veza-stream-server vérifie DB (is_public, owner, orders).
  4. Pipeline CD : steps de build actifs (Backend, Frontend, Rust) ; seuls les tags registry sont commentés.
  5. Services Rust : à valider (compilation).

1. CARTOGRAPHIE GLOBALE

1.1 Stack technique

Couche Technologie Version
Frontend React + Vite + TypeScript + TailwindCSS 4 React 18.2, Vite 7, TS 5.3
Backend API Go + Gin + GORM + PostgreSQL Go 1.23.8, Gin 1.11
Chat Server Rust + Axum + SQLx + WebSocket Axum 0.8, SQLx 0.8
Stream Server Rust + Axum + Symphonia (audio) Axum 0.8
Base de données PostgreSQL 16 16-alpine
Cache Redis 7 7-alpine
Message Queue RabbitMQ 3 3-management-alpine
Reverse Proxy HAProxy 2.8 2.8-alpine
CI/CD GitHub Actions v4/v5 actions
Monitoring Prometheus + Grafana + Loki K8s manifests
Orchestration Docker Compose (dev/staging/prod) + Kubernetes
Tests Vitest, Playwright, Go testing, Cargo test
Documentation Docusaurus

1.2 Organisation du monorepo

veza/
├── apps/web/                  # Frontend React (npm workspace)
├── packages/design-system/    # Design system (npm workspace, INUTILISÉ)
├── veza-backend-api/          # Backend Go
├── veza-chat-server/          # Chat Rust
├── veza-stream-server/        # Stream Rust
├── veza-common/               # Lib Rust partagée
├── veza-docs/                 # Documentation Docusaurus
├── config/                    # Config Docker/HAProxy/Incus
├── docker/                    # Certificats Docker
├── k8s/                       # Manifests Kubernetes
├── infra/                     # Configs infrastructure
├── migrations/                # Migrations SQL
├── scripts/                   # Scripts utilitaires (55+)
├── make/                      # Modules Makefile
├── fixtures/                  # Données de test
├── tests/                     # Tests E2E/intégration
└── .github/                   # CI/CD + templates

Gestion monorepo : npm workspaces uniquement. Pas de Turborepo/Nx/Lerna. Les services Go et Rust sont gérés indépendamment (pas de go.work root, pas de Cargo.toml workspace). C'est un poly-repo déguisé en monorepo — le seul lien réel est le npm workspace pour apps/web et packages/design-system.

1.3 Dépendances critiques

Dépendance Service Risque
go-clamd v0.0.0-20170520113014 Backend Go Abandonnée — dernière mise à jour 2017
redis 0.27 vs redis 0.32 Stream vs Chat Incohérence de version entre services
packages/design-system Frontend Non utilisé — 0 imports détectés
@sentry/react 10.32.1 Frontend OK mais heavy (impact bundle)

1.4 Flux de données

Browser → HAProxy → Backend Go API → PostgreSQL
                  → Chat Server Rust → PostgreSQL + Redis
                  → Stream Server Rust → PostgreSQL + Redis
                  ← RabbitMQ (inter-service messaging)

2. CE QUE LE PRODUIT PERMET RÉELLEMENT

2.1 Features validées (implémentées front + back)

Feature Backend Frontend Tests MSW
Auth (login/register/logout) OK OK OK OK
Auth 2FA (TOTP) OK OK Partiel OK
OAuth (Google, GitHub, etc.) OK OK Non Non
Gestion profil utilisateur OK OK OK OK
Upload de tracks (chunked) OK OK Partiel Partiel
Lecture de tracks OK OK OK OK
Recherche de tracks OK OK OK OK
Playlists (CRUD) OK OK OK OK
Chat WebSocket OK OK Partiel OK
Marketplace (produits) OK OK Partiel Partiel
Social (feed, posts) OK Partiel Partiel Partiel
Notifications OK OK Non OK
Webhooks OK OK Non Partiel
Analytics OK OK Non OK
Dashboard OK OK OK OK
Settings (sessions, sécurité) OK OK OK OK
Admin (rôles, modération) OK OK Partiel OK
CSRF protection OK OK OK OK

2.2 Features partiellement implémentées

Feature Statut Détail
Streaming audio HLS Backend endpoints existent, flag HLS_STREAMING: false côté front Transcoding queue existe en DB mais non connecté
Social groups Mocks MSW existent, pas d'endpoint backend CreateGroupModal.tsx existe, aucun backend
Marketplace wishlist Frontend + mocks, pas d'endpoint backend WishlistView rendu, données mockées
Marketplace panier Frontend + mocks, pas d'endpoint backend cartStore Zustand, données mockées
Commentaires avec réponses Frontend supporte replies, backend = CRUD plat Pas d'endpoint /comments/:id/replies
Export playlist Service frontend a exportPlaylist() marqué TODO Non implémenté
Duplication playlist Service frontend a duplicatePlaylist() marqué TODO Non implémenté

2.3 Features fantômes (déclarées, non fonctionnelles)

Feature Route frontend Backend Statut réel
Gear Inventory /gear → ComingSoon Aucun endpoint UI vide
Live Streaming /live → ComingSoon Aucun endpoint UI vide
Education/Courses /education → ComingSoon Aucun endpoint Mocks MSW seulement
Queue de lecture /queue → ComingSoon Aucun endpoint UI vide
Developer Dashboard /developer → ComingSoon Aucun endpoint Mocks MSW seulement
Gamification Pas de route Aucun endpoint Mocks MSW existent (/api/v1/gamification/*)
Contests Tables DB existent Tables contests, contest_entries, etc. en migration Aucun handler Go

2.4 Features mortes

Feature Localisation Statut
packages/design-system npm workspace 0 imports dans le frontend — complètement inutilisé
PWA Install Banner App.tsx ligne 209 Commenté : "too intrusive"
Storybook tests vitest.config.ts lignes 49-170 Entièrement commenté
Playlist version history playlistService.ts TODO, test exclu (T0509)
WebRTC dans stream-server src/streaming/webrtc.rs Structure présente, aucune lib WebRTC intégrée

2.5 Incohérences produit/code

  1. ~30 endpoints backend n'ont pas de mock MSW — impossible de tester en Storybook/dev mode
  2. 10+ mocks MSW n'ont aucun backend — les features apparaissent fonctionnelles en dev mais crasheront en production
  3. Le search frontend utilise /api/v1/search générique alors que le backend a des endpoints séparés /tracks/search, /playlists/search, /users/search
  4. Tables DB pour contests/gamification existent dans les migrations mais aucun code applicatif ne les utilise

3. VALIDATION FONCTIONNELLE

3.1 Points de rupture identifiés

Flow critique Risque Impact
Chat en production Le fallback JWT (ligne 415, jwt_manager.rs) crée un utilisateur "user" avec rôle "user" si l'utilisateur n'est pas trouvé en DB Un utilisateur supprimé garde un token valide avec un username/rôle forgé
Streaming audio validate_track_access() = placeholder Corrigé : vérification DB (is_public, owner, orders) dans token_validator.rs
Webhook dispatch Pas de validation SSRF Corrigé : IsURLSafe() dans webhook_service.go (IP privées, hostnames bloqués, schéma)
Marketplace en prod Wishlist, panier, paiement = mocks seulement Crash immédiat en environnement sans MSW
Social groups CreateGroupModal.tsx appelle un endpoint inexistant Erreur 404 silencieuse en production

3.2 Scénarios de crash évidents

  1. Accès marketplace sans MSW : Le cartStore appelle /api/v1/commerce/cart — endpoint inexistant. En prod = erreur 404.
  2. Accès wishlist sans MSW : Appels vers /api/v1/marketplace/wishlist — endpoint inexistant.
  3. Upload > 5GB : Le chunked upload a des endpoints backend mais le MSW mock est simplifié. Pas de tests d'intégration.
  4. Perte de connexion Redis : Le rate limiter a un fallback, mais le CSRF store (Redis) n'en a pas clairement défini.
  5. Session 100ms delay : App.tsx introduit un délai de 100ms à l'initialisation auth — possible race condition avec des requêtes précoces.

3.3 Couverture de tests

Zone Fichiers test Qualité Verdict
Backend Go 261 fichiers *_test.go Table-driven, mocks, security tests Bonne
Frontend composants 186 .test.tsx Testing Library, userEvent, a11y Bonne
Frontend services 94 .test.ts Mocks Axios, edge cases Correcte
Chat Server Rust Quelques unit tests Beaucoup #[ignore] Faible
Stream Server Rust Quelques unit tests Beaucoup #[ignore] Faible
E2E Playwright configuré Config présente, peu de tests visibles Insuffisante
Storybook tests 324 stories Tests d'interaction commentés dans vitest Désactivés

4. AUDIT DE SÉCURITÉ — OWASP TOP 10

A01 — Broken Access Control

Vulnérabilité Gravité Impact Scénario
validate_track_access() = placeholder Corrigé Implémentation réelle dans veza-stream-server (is_public, owner, orders)
JWT fallback dans chat server : user non trouvé → username="user", role="user" ÉLEVÉE Usurpation d'identité Un utilisateur supprimé conserve un accès chat avec un token valide et un username forgé
Query params non validés (pagination) MOYENNE DoS potentiel page=-1&limit=999999 — pas de bounds checking dans playlist_handler.go:145, profile_handler.go:205, track/handler.go:814

Correctifs :

  1. Implémenter validate_track_access()Fait (token_validator.rs)
  2. Rejeter le refresh token si l'utilisateur n'existe plus en DB
  3. Ajouter validation bounds sur tous les query params de pagination

A02 — Cryptographic Failures

Vulnérabilité Gravité Impact Scénario
.env avec secrets committés dans git CRITIQUE Compromission de tous les secrets JWT_SECRET, DB_PASSWORD, RABBITMQ_URL exposés dans l'historique git
Developer API keys stockées en localStorage (chiffrées Web Crypto) MOYENNE Vol de clés si XSS Même chiffré, le localStorage est accessible via JavaScript
SSL désactivé en dev (sslmode=disable) FAIBLE Interception en dev Acceptable en développement uniquement

Points positifs :

  • JWT HS256 avec validation d'algorithme
  • Tokens httpOnly cookies (pas de localStorage)
  • CSRF tokens stockés en mémoire
  • Refresh tokens avec rotation et version checking
  • Bcrypt/Argon2 pour hashing mots de passe
  • Access token TTL court (5 minutes)

A03 — Injection

Vulnérabilité Gravité Impact
SQL LIKE wildcard non échappé dans message_repository.rs:563 FAIBLE Résultats de recherche inattendus (pas d'injection SQL)
dangerouslySetInnerHTML dans le chat MOYENNE XSS si DOMPurify mal configuré

Points positifs :

  • GORM (Go) : requêtes paramétrées partout
  • SQLx (Rust) : .bind() systématique
  • DOMPurify pour sanitization HTML côté frontend
  • SanitizeText utilitaire côté backend

A04 — Insecure Design

Vulnérabilité Gravité Impact
Pas de validation d'URL webhook (SSRF) ÉLEVÉE Scan réseau interne, accès à metadata cloud
Features mockées en dev qui crashent en prod ÉLEVÉE Dégradation UX en production
Pas de feature flag system MOYENNE Features fantômes exposées aux utilisateurs

A05 — Security Misconfiguration

Vulnérabilité Gravité Impact
Hardcoded passwords dans docker-compose.yml ÉLEVÉE Réutilisation accidentelle en prod
docker-compose.prod.yml requiert variables DB_PASS, JWT_SECRET OK Bien configuré avec ? operator
CORS validé en production, wildcard bloqué OK Correctement implémenté
Rate limiting désactivé en dev FAIBLE Acceptable
Stack traces en production MOYENNE Potentielle fuite d'information — vérifier includeStackTrace

A06 — Vulnerable & Outdated Components

Composant Version Risque
go-clamd 2017 (pseudo-version) ÉLEVÉE — Aucune maintenance depuis 7 ans
Redis incohérent 0.27 vs 0.32 MOYENNE — Comportements divergents possibles
Go 1.23.8 Récent OK
Vite 7 Récent OK
React 18.2 Stable OK

Points positifs :

  • govulncheck dans CI
  • cargo audit dans CI
  • npm audit --audit-level=high dans CI

A07 — Identification & Authentication Failures

Aspect Statut
JWT algorithme validé (HS256 only) OK
Token version checking OK
Refresh token rotation OK
Session management (Redis) OK
2FA (TOTP) OK
Password reset flow OK
OAuth providers OK
Rate limiting sur login OK
Account lockout OK (via admin unlock endpoint)

Verdict : Implémentation auth robuste. Seul point faible : le fallback JWT du chat server.

A08 — Software & Data Integrity Failures

Vulnérabilité Gravité Impact
Pipeline CD commenté — aucun déploiement automatique réel ÉLEVÉE Pas de déploiement vérifié
Pas de signature des builds Docker MOYENNE Intégrité des images non vérifiable
Pas de SBOM (Software Bill of Materials) FAIBLE Conformité limitée

Points positifs :

  • CI avec lint, typecheck, tests, security audit
  • Zod validation des inputs côté frontend
  • Go validator côté backend
  • Dependabot configuré

A09 — Logging & Monitoring Failures

Aspect Statut
Structured logging (Go: Zap, Rust: tracing, Front: Sentry) OK
Request ID correlation OK
Audit trail OK (backend audit endpoints)
Slow request detection OK (frontend 1000ms threshold)
Error tracking (Sentry) OK
Prometheus metrics OK
K8s monitoring (Prometheus/Grafana/Loki) OK (manifests prêts)
Log rotation OK (scripts/rotate_logs.sh)

Verdict : Bonne couverture monitoring.

A10 — SSRF

Vulnérabilité Gravité Impact Localisation
Webhook URL non validée Corrigé IsURLSafe() dans webhook_service.go (IPs privées, hostnames, schéma)
OAuth redirect validation OK isAllowedRedirectOrigin() vérifie les origines oauth_handlers.go:124-150
Status handler URLs OK URLs depuis config, pas user input status_handler.go

Correctif webhook : Implémenté (IsURLSafe : IPs privées, hostnames bloqués, schémas http/https).


5. DETTE TECHNIQUE

5.1 Dette critique (bloquante)

Item Localisation Impact
Secrets dans git .env est dans .gitignore ; fichiers .env présents en local — vérifier historique git Rotation des secrets si jamais committés
CD pipeline .github/workflows/cd.yml — builds actifs (Backend, Frontend, Rust) ; tags registry commentés Déploiement partiel possible
CI paths chat-ci.yml utilise veza-chat-server/** (vérifié 13/02/2026) OK
Migration UUID incomplète migrations/001_migrate_ids_to_uuid_up.sql ajoute new_id mais ne migre pas les PKs/FKs Migration impossible à compléter
Stream server validate_track_access Corrigé Implémentation réelle dans token_validator.rs

5.2 Dette structurante

Item Localisation Impact
interceptors.ts = 1204 lignes apps/web/src/services/api/interceptors.ts Maintenance difficile, logique CSRF dupliquée
handlers.ts MSW = 1700+ lignes apps/web/src/mocks/handlers.ts Impossible à maintenir, features fantômes mélangées
Features fantômes exposées 5 routes ComingSoon + 10+ mocks sans backend Confusion produit, dette de maintenance
Design system inutilisé packages/design-system/ Workspace npm pollué, duplication avec src/components/ui/
Tables DB sans code contests, contest_*, equipment, hardware_sales Schema DB pollué, migrations fragiles
Redis version mismatch Chat 0.32 vs Stream 0.27 Comportements divergents, maintenance complexe
Absence de workspace Rust Pas de Cargo.toml root Pas de build/test unifié des services Rust
Absence de workspace Go Pas de go.work actif Services Go isolés

5.3 Dette cosmétique

Item Localisation
Code commenté dans vitest.config.ts (120+ lignes) apps/web/vitest.config.ts:49-170
Debug fetch calls commentés OfflineIndicator.tsx
TODOs non résolus dans services playlistService.ts:236,255,291,299
dist_verification comme nom de build output vite.config.ts
Scripts archivés non nettoyés scripts/archive/
HACK comment PlayerExpanded.tsx:132

6. QUALITÉ ARCHITECTURALE

Score d'architecture : 7/10

Justification :

  • (+) Clean architecture côté Go (handlers/services/repositories/middleware)
  • (+) Feature-based structure côté React
  • (+) Séparation microservices claire (API, Chat, Stream)
  • (+) Shared library Rust (veza-common)
  • (-) Monorepo sans orchestrateur (pas de Turborepo/Nx)
  • (-) Pas de workspace Rust/Go unifié
  • (-) Design system package inutilisé
  • (-) Couplage frontend/mocks trop fort (features fantômes)

Score de maintenabilité : 6/10

Justification :

  • (+) TypeScript strict, Go avec linting, Rust avec clippy
  • (+) 541 fichiers de tests au total
  • (+) i18n (en/fr)
  • (+) Storybook avec 324 stories
  • (-) Fichiers critiques trop longs (interceptors 1204L, handlers MSW 1700L)
  • (-) Features fantômes créant confusion
  • (-) Tests Storybook désactivés
  • (-) Tests Rust largement #[ignore]
  • (-) 30+ endpoints backend sans mock MSW correspondant

Score de sécurité : 5/10

Justification :

  • (+) Auth JWT solide (rotation, versioning, httpOnly)
  • (+) CSRF implémenté (Redis + memory)
  • (+) Rate limiting multi-couche
  • (+) CORS validé en production
  • (+) XSS sanitization (DOMPurify)
  • (+) Vulnerability scanning en CI (govulncheck, cargo audit, npm audit)
  • (-) Secrets : .env dans .gitignore — vérifier historique git (critique si committés)
  • (✓) SSRF via webhooks Corrigé (IsURLSafe)
  • (✓) Track access = always true Corrigé (validate_track_access réel)
  • (-) JWT fallback user dans chat server (élevé)
  • (-) Dépendance abandonnée (go-clamd 2017)

Score de scalabilité : 7/10

Justification :

  • (+) Architecture microservices
  • (+) K8s manifests complets (HPA, VPA, monitoring)
  • (+) Docker Compose pour dev/staging/prod
  • (+) HAProxy reverse proxy
  • (+) Redis pour cache/sessions
  • (+) RabbitMQ pour messaging inter-services
  • (+) Code splitting frontend (vendor chunks)
  • (-) Stream server incomplet (pas de WebRTC réel)
  • (-) Pas de CDN configuré pour les assets audio
  • (-) Connection pooling DB à valider sous charge

7. INFRA & DEVOPS

7.1 Docker

Aspect Statut Détail
Multi-stage builds OK Tous les Dockerfiles
Non-root user OK USER app partout
Health checks OK Tous les services
Alpine base images OK Taille minimale
Secrets en build args OK Pas de secrets dans les Dockerfiles
Healthcheck path mismatch KO Dockerfile.production backend utilise /health au lieu de /api/v1/health

7.2 Configuration

Aspect Statut
Dev compose OK mais passwords hardcodées
Prod compose OK — variables requises avec ? operator
Staging compose OK — variables séparées
Test compose OK — tmpfs pour performance
K8s manifests OK — complets avec External Secrets, monitoring
HAProxy OK — config référencée mais non auditée en profondeur

7.3 Secrets exposés

État 13/02/2026 : Le fichier .env est listé dans .gitignore (racine). Les fichiers .env peuvent exister en local (non suivis). À faire : vérifier quaucun .env avec secrets na été committé dans lhistorique git (git log -p -- .env). Si oui, rotation obligatoire des secrets.

7.4 Reproductibilité du setup

  • docker-compose.yml fournit un setup dev complet
  • .env.example existe mais les .env réels sont aussi committés
  • Scripts de setup dans scripts/ et make/
  • Score : 7/10 — fonctionnel mais pollué par les .env committés

8. RISQUES BUSINESS

En tant que CTO

Peut-on lancer ce produit en prod ? Non, pas en l'état. Raisons :

  1. Secrets exposés → rotation obligatoire avant tout déploiement
  2. Stream server = placeholder → les tracks payantes sont accessibles à tous
  3. Pipeline CD non fonctionnel → déploiement manuel uniquement
  4. Features mockées en dev qui crasheront en prod (wishlist, cart, groups)

Peut-on le maintenir ? Oui, avec effort modéré. La base de code est bien structurée, les conventions sont claires. Les fichiers trop longs et les features fantômes sont le principal frein. L'équipe doit maîtriser Go, Rust, TypeScript et l'infrastructure K8s — compétence rare.

Faut-il le refactorer ? Oui, partiellement. Les fondations sont saines. Le refactoring doit se concentrer sur :

  • Nettoyage des features fantômes
  • Split des fichiers > 300 lignes
  • Complétion du stream server
  • Activation du pipeline CD

Faut-il le réécrire ? Non. La codebase est de qualité suffisante. Réécrire serait un gaspillage.

En tant qu'investisseur

La technologie supporte-t-elle le business ? Partiellement. Le core (auth, tracks, playlists, chat) fonctionne. La marketplace et le streaming sont incomplets. Le ratio features implémentées / features annoncées est d'environ 60%.

Quel est le time-to-market restant ?

  • Pour un MVP fonctionnel (core features) : 2-4 semaines (corrections sécurité + nettoyage)
  • Pour un produit complet (marketplace + streaming) : 3-6 mois

Risque d'investissement :

  • Stack multi-langage (Go + Rust + TS) = coût d'embauche élevé
  • Seul développeur visible → bus factor = 1
  • Licence AGPL-3.0 → implications pour les clients SaaS

En tant qu'acquéreur

Peut-on le vendre en l'état ? Non. Les failles de sécurité et les features fantômes constituent un risque réputationnel.

Valeur technique :

  • Architecture solide et extensible
  • Bonne couverture de tests (541 fichiers)
  • Infrastructure K8s prête
  • Base technique saine pour un build-out

9. PLAN D'ACTION PRIORISÉ

Phase 1 — Urgent (sécurité & stabilité) — 1-2 semaines

Action Effort Priorité
Vérifier historique git pour .env + rotation de secrets si nécessaire S P0
Implémenter validation URL webhook (anti-SSRF) Fait (IsURLSafe)
Implémenter validate_track_access() réel dans stream server Fait (token_validator.rs)
Supprimer le JWT fallback user dans chat server (rejeter si user non trouvé) S P0
Corriger les paths CI pour Rust Fait (veza-chat-server utilisé)
Ajouter validation bounds sur query params pagination S P1
Fixer le healthcheck path dans Dockerfile.production backend S P1

Phase 2 — Stabilisation — 2-4 semaines

Action Effort Priorité
Supprimer ou isoler les features fantômes (ComingSoon routes, mocks sans backend) M P1
Supprimer packages/design-system inutilisé S P1
Splitter interceptors.ts en modules (CSRF, retry, validation, cache) M P1
Splitter handlers.ts MSW par domaine M P1
Compléter les mocks MSW pour les 30+ endpoints backend manquants L P2
Réactiver les tests Storybook M P2
Standardiser la version Redis entre services Rust S P2
Remplacer go-clamd (2017) par une alternative maintenue M P2
Activer le pipeline CD (décommenter, configurer registry) M P2
Nettoyer les tables DB fantômes (contests, equipment) ou les migrer M P2

Phase 3 — Amélioration & refonte — 2-3 mois

Action Effort Priorité
Implémenter le streaming WebRTC réel dans stream server XL P2
Implémenter la marketplace complète (panier, paiement, wishlist) XL P2
Ajouter un orchestrateur monorepo (Turborepo recommandé) L P3
Créer un workspace Rust unifié M P3
Ajouter E2E Playwright pour les flows critiques L P3
Implémenter un système de feature flags M P3
Compléter la migration UUID (PKs + FKs) XL P3
Ajouter SBOM et signature des builds Docker M P3
Configurer un CDN pour les assets audio L P3
Réduire le bundle frontend (analyser et optimiser) M P3

CONCLUSION STRATÉGIQUE

Veza est un projet techniquement ambitieux avec une base de code de qualité correcte, mais qui souffre de son sur-scope. Le développeur a construit une infrastructure impressionnante (4 services, K8s, CI/CD, monitoring) mais a dispersé ses efforts sur trop de features, laissant des placeholders dangereux dans des zones critiques (contrôle d'accès, streaming).

Les 3 actions les plus impactantes :

  1. Sécurité immédiate : SSRF webhook et validate_track_access() corrigés (13/02/2026). Reste : rotation des secrets si .env jamais committés.
  2. Nettoyage du scope : supprimer les features fantômes → clarifie le produit et réduit la dette de 40%
  3. Pipeline CD fonctionnel : builds actifs ; décommenter les tags registry pour déploiement complet.

Score global de maturité technique : 6/10 — MVP avancé. Corrections sécurité majeures en place ; 2-4 semaines de travail ciblé restant avant lancement production (secrets, JWT chat, pagination, healthcheck). Mise à jour 13/02/2026.