- corrige l’extraction Fsvid/Vidzy dans proxiesembed, les extensions et le userscript avec un décodage XOR/P.A.C.K.E.R plus robuste - rejette les URL « troll » et supprime les résultats Fsvid/Vidzy contaminés des caches - ajoute KissKH pour les films et séries avec matching TMDB, catalogue, cache distribué, verrouillage, rotation des proxys et fallback sécurisé - ajoute le relais KissKH HLS/MP4 dans proxiesembed, avec retry SOCKS5 sur les erreurs 403 et streaming des segments BYTERANGE - prend en charge les sous-titres KissKH SRT/TXT/TXT2, leur déchiffrement AES et leur conversion en WebVTT - intègre KissKH au lecteur, aux priorités de sources, aux extensions Chrome/Firefox et au userscript - améliore la sélection, le formatage sécurisé, la traduction et l’affichage Picture-in-Picture des sous-titres - corrige le Cast web et Android pour transmettre les sous-titres internes, externes, KissKH et traduits - ajoute le support des pistes WebVTT inline via le relais LAN Android et améliore le suivi des sessions Cast - protège les liens jouables des caches Cpasmal et Coflix contre les rafraîchissements vides ou concurrents - fiabilise la sélection des saisons FStream et améliore le matching DarkiWorld par TMDB, titre et année - simplifie les nouvelles URL TMDB tout en conservant le décodage des anciens identifiants encodés - corrige l’opacité des icônes SVG dans toute l’interface en séparant la couleur de leur niveau d’opacité - met à jour le Dockerfile vers Node.js 22 et installe uniquement les dépendances runtime du workspace Hono - ajoute le workspace server avec ses dépendances dédiées et un arrêt gracieux sur SIGTERM/SIGINT - accélère le healthcheck Docker et évite de recopier tous les node_modules du builder dans l’image finale - retire les migrations et créations de tables automatiques au démarrage de la Main API au profit de db:init - attribue un port CycleTLS distinct à chaque worker pour éviter les conflits en mode cluster - ajoute des tests de non-régression pour KissKH, les caches de sources, CycleTLS et le Cast Android - publie Android 2.5.8 build 17 avec le nouvel APK - met à jour les extensions Chrome 1.3.13 et Firefox 1.5.10 Co-authored-by: GPT-5.6 Sol <noreply@openai.com> |
||
|---|---|---|
| API | ||
| app | ||
| baddomain | ||
| cloudflareproxy | ||
| extension | ||
| functions | ||
| others | ||
| PreMid | ||
| public | ||
| RivestreamCloudflareProxy | ||
| scripts | ||
| server | ||
| src | ||
| userscript | ||
| wasm/watchparty-sync | ||
| .dockerignore | ||
| .env.example | ||
| .gitattributes | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| Dockerfile | ||
| eslint.config.js | ||
| index.html | ||
| LICENSE | ||
| manifest.json | ||
| movix.png | ||
| next.config.js | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.js | ||
| README.md | ||
| tailwind.config.js | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
Movix
Le 1er site de streaming open source made in France et 100% vibecodé.
React | Vite | TypeScript | Node.js | MySQL | Redis | Socket.IO | Python | Rust
Licence : Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) · LICENSE
Movix est un monorepo produit pour une plateforme de streaming communautaire. Le frontend, l'API principale, la WatchParty, les proxies, les outils navigateur et plusieurs briques d'infra vivent dans le même dépôt parce qu'ils évoluent ensemble.
Ce n'est pas un simple duo "frontend + backend". Une feature peut très vite traverser plusieurs couches à la fois : interface React, persistance locale, sync backend, extraction vidéo, proxy Python et parfois extension navigateur.
Ce que contient le repo
| Zone | Rôle | Documentation |
|---|---|---|
src/ |
Frontend Vite + React + TypeScript | Frontend |
API/Mainapi/ |
Backend principal clusterisé | Main API |
API/watchpartyAPI/ |
Service temps réel WatchParty | WatchParty API |
API/proxiesembed/ |
Proxy aiohttp pour embeds, flux et DRM | Proxies Embed |
API/miscs/ |
Micro-service Flask pour certains 403 | bypass403 |
extension/ + userscript/ |
Outils navigateur Movix | Movix OS |
app/ |
App mobile React Native (Android OK, iOS non testé) | App mobile |
wasm/watchparty-sync/ |
Moteur Rust/WASM de la Sync Pro | WatchParty Sync WASM |
cloudflareproxy/ |
Worker Cloudflare CORS/proxy | Cloudflare Proxy |
Architecture du monorepo
movix-main/
|-- src/ # Frontend principal
|-- public/ # Assets statiques et artefacts WASM publiés
|-- API/
| |-- Mainapi/ # Backend actif
| |-- watchpartyAPI/ # Temps réel WatchParty
| |-- proxiesembed/ # Proxy Python haute charge
| `-- miscs/ # Micro-services annexes
|-- extension/ # Extension Chrome / Firefox
|-- userscript/ # Variante Tampermonkey
|-- app/ # App mobile React Native (Android/iOS)
|-- wasm/watchparty-sync/ # Sync Pro en Rust/WASM
|-- cloudflareproxy/ # Worker Cloudflare
|-- functions/ # Handlers serverless annexes
|-- PreMid/ # Présence PreMiD
`-- RivestreamCloudflareProxy/ # Variante de worker pour Rivestream
Démarrage rapide
⚠️ L'utilisation de ce code implique le maintien des crédits et l'interdiction stricte de le monétiser (Zéro pub et abonnements). Voir la License complète
Prérequis
- Node.js 18+ et npm
- Python 3.10+ pour les services Python
- MySQL et Redis pour
API/Mainapi - Rust +
wasm-bindgenseulement si tu touches la Sync Pro WASM - React Native CLI + Android Studio (et Xcode + CocoaPods sur Mac) seulement si tu touches l'app mobile
app/— iOS n'a pas été testé, voirapp/README.md
Installer les dépendances utiles
npm install
cd API/Mainapi
npm install
API/watchpartyAPI/ n'a pas son propre package.json : il consomme les dépendances du node_modules racine.
Configurer les .env avant de lancer quoi que ce soit
Ne saute pas cette étape. Une bonne partie du monorepo dépend des variables d'environnement pour les URLs, la base de données, Redis, les proxys, TMDB, Turnstile et plusieurs intégrations de lecture.
# Frontend
cp .env.example .env
# API principale
cp API/Mainapi/.env.example API/Mainapi/.env
# WatchParty
cp API/watchpartyAPI/.env.example API/watchpartyAPI/.env
# Proxy embed
cp API/proxiesembed/.env.example API/proxiesembed/.env
# bypass403
cp API/miscs/.env.example API/miscs/.env
Initialise ensuite le schéma de l'API principale avant de démarrer les services :
cd API/Mainapi
npm run db:init
Sur une base existante, la commande demande confirmation ; elle en demande une seconde pour les modifications des tables Wrapped, qui peuvent être longues si elles sont volumineuses.
Lancer le minimum utile en local
# Frontend - http://localhost:3000
npm run dev
# Backend principal - http://localhost:25565
cd API/Mainapi
npm run dev
# WatchParty - http://localhost:25566
node API/watchpartyAPI/watchparty.js
Services optionnels selon la zone que tu touches :
# Proxy embed
cd API/proxiesembed
pip install -r requirements.txt
python server.py
# bypass403
cd API/miscs
pip install flask requests python-dotenv
python bypass403.py
Configuration
Les fichiers d'exemple ou de config existants sont déjà dans le repo :
- Frontend :
.env.example - API principale :
API/Mainapi/.env.example - WatchParty :
API/watchpartyAPI/.env.example - Proxy embed :
API/proxiesembed/.env.example - bypass403 :
API/miscs/.env.example
Les variables frontend les plus importantes sont VITE_MAIN_API, VITE_WATCHPARTY_API, VITE_PROXY_BASE_URL, VITE_API_PROXY_BASE_URL, VITE_PROXIES_EMBED_API et VITE_SITE_URL.
Pour un premier lancement local, configure au minimum :
/.envAPI/Mainapi/.envAPI/watchpartyAPI/.env
Comment s'orienter vite
- Feature frontend : commence par
src/App.tsx, puis la page cible danssrc/pages/. - Auth, profils, persistance : regarde
src/context/,src/App.tsx,API/Mainapi/routes/authRoutes.jsetAPI/Mainapi/routes/sync.js. - Lecture vidéo et proxies : recoupe
src/pages/Watch/, les composants player,API/Mainapi/liveTvRoutes.js,API/proxiesembed/et parfoisextension/. - WatchParty : vérifie à la fois
API/watchpartyAPI/watchparty.js,src/pages/WatchParty*.tsx,src/hooks/useWatchParty.ts,src/utils/watchparty*.tsetsrc/workers/watchpartySync.worker.ts. - Browser tooling : si tu modifies l'extension, compare toujours
extension/Chrome/etextension/Firefox/, puis vérifie si le userscript doit suivre. - Sync Rust/WASM : modifie
wasm/watchparty-sync/, puis rebuildpublic/wasm/watchparty-sync/.
Points importants avant de contribuer
- Le backend actif est
API/Mainapi/. Le vieux contenu directement sousAPI/n'est plus la référence. - Ce monorepo n'utilise pas de workspace tooling : chaque sous-projet garde ses scripts.
- Une partie importante de l'état produit vit dans
localStorageet dans la sync backend. Ne raisonne pas "base de données only". - Le lint frontend se lance à la racine avec
npm run lint. - Il n'y a pas de suite de tests globale fiable pour tout le repo. Vérifie au minimum les scripts touchés et le comportement manuel.
Documentation par module
- Frontend
- Services backend
- Main API
- WatchParty API
- Proxies Embed
- bypass403
- Movix OS
- Extension navigateur
- Userscript Tampermonkey
- App mobile React Native — Android fonctionnel, iOS non testé (aide recherchée)
- WatchParty Sync WASM
- Cloudflare Proxy
Licence
Ce projet est distribué sous licence Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0). Le texte complet est disponible dans LICENSE.
Avertissement
Ce projet est fourni uniquement à des fins éducatives, de recherche et de démonstration. Il n'encourage ni ne cautionne une utilisation illégale, le contournement de droits, ou toute violation des lois applicables. Chaque utilisateur est seul responsable de l'usage qu'il en fait.