Modification du Oauth : Pouvoir manager les apps depuis le panel admin Correction de l'affichage des images des admins Majs des urls extension, userscript et premid Correction d'un crash sur les commentaires Ajout d'un light mode sur le frontend |
||
|---|---|---|
| .. | ||
| 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/.