Nouvelle source chaînes télés : daddylive et fctv33 D'autres trucs arrivent mais faut que je finissent d'autres trucs pour que ca marche Suppression du code mort dans l'extension/userscript (tvvoo, vavoo) |
||
|---|---|---|
| .. | ||
| assets/crypto | ||
| components | ||
| config | ||
| context | ||
| data | ||
| hooks | ||
| i18n | ||
| lib | ||
| middleware | ||
| pages | ||
| routing | ||
| services | ||
| styles | ||
| types | ||
| utils | ||
| workers | ||
| App.tsx | ||
| index.css | ||
| main.tsx | ||
| README.md | ||
| vite-env.d.ts | ||
Frontend Movix
Le frontend Movix porte l'expérience utilisateur complète : navigation dans le catalogue, pages détails, lecture vidéo, Live TV, WatchParty, profils, listes partagées, Wishboard, VIP et Wrapped.
Le point important pour contribuer ici : src/App.tsx ne fait pas que router. Il centralise aussi plusieurs comportements transverses, dont la persistance locale et la sync de certains morceaux de localStorage vers POST /api/sync.
Démarrage
cp .env.example .env
npm install
npm run dev
Le serveur Vite écoute sur http://localhost:3000.
Commandes utiles :
npm run lint
npm run build
npm run preview
npm run wasm:watchparty-sync:setup
npm run wasm:watchparty-sync:build
Ce que le frontend gère
- découverte de films, séries, anime, collections et fiches personnes
- pages de lecture pour films, séries et anime
- Live TV et providers annexes
- WatchParty, création de room, join, liste publique et Sync Pro
- comptes, auth, profils multiples et sessions
- listes partagées, suggestions, Wishboard et soumission de liens
- pages VIP, dons, cadeaux, invoices et Wrapped
Variables d'environnement utiles
Les variables principales sont documentées dans .env.example :
VITE_MAIN_APIVITE_TMDB_API_KEYVITE_SITE_URLVITE_WATCHPARTY_APIVITE_PROXY_BASE_URLVITE_API_PROXY_BASE_URLVITE_PROXIES_EMBED_APIVITE_RIVESTREAM_PROXIESVITE_SUPPORT_TELEGRAM_URLVITE_TURNSTILE_SITE_KEYVITE_TURNSTILE_INVISIBLE_SITEKEY
La normalisation des URLs runtime est centralisée dans src/config/runtime.ts.
Architecture
src/
|-- main.tsx # Point d'entrée
|-- App.tsx # Routing principal + comportements transverses
|-- pages/ # Une page = une route
|-- components/ # UI et composants métier
|-- context/ # État global via React Context
|-- services/ # Appels HTTP
|-- hooks/ # Hooks custom
|-- utils/ # Helpers
|-- config/ # Runtime, Firebase, proxies
|-- workers/ # Web workers, dont WatchParty Sync
|-- i18n/ # Traductions
`-- components/ui/ # Primitives UI réutilisables
Routes à connaître
Le routeur principal est dans src/App.tsx. Les grandes familles de routes sont :
- navigation catalogue :
/,/movies,/tv-shows,/collections,/movie/:id,/tv/:id - lecture :
/watch/movie/:tmdbid,/watch/tv/:tmdbid/s/:season/e/:episode,/watch/anime/... - social / communautaire :
/wishboard,/list/:shareCode,/top10,/wrapped - compte / profils / VIP :
/profile,/profile-selection,/settings,/vip,/vip/don - temps réel :
/watchparty/create,/watchparty/join,/watchparty/room/:roomId - services annexes :
/live-tv,/debrid,/extension,/ftv
État global
Movix n'utilise ni Redux ni Zustand. L'état global passe surtout par React Context, le stockage local et quelques synchronisations backend.
Les contexts à connaître en premier :
AuthContext.tsxProfileContext.tsxSearchContext.tsxVipModalContext.tsxAdFreePopupContext.tsxAdWarningContext.tsxIntroContext.tsx
Où intervenir selon le sujet
- Auth et persistance :
src/App.tsx,src/context/AuthContext.tsx,src/context/ProfileContext.tsx - Calls backend :
src/services/puis les pages/composants consommateurs - WatchParty :
src/pages/WatchParty*.tsx,src/hooks/useWatchParty.ts,src/utils/watchparty.ts,src/workers/watchpartySync.worker.ts - Lecture vidéo :
src/pages/Watch/et les composants*Player* - Traductions :
src/i18n/
Notes de contribution
- Les imports inutilisés cassent le lint.
- Certaines features de lecture combinent plusieurs players et plusieurs proxies ; évite les simplifications rapides.
- Si tu touches une feature transversale, regarde aussi le backend correspondant dans
API/Mainapi/ouAPI/watchpartyAPI/.