Une plateforme de streaming vidéo moderne construite avec React, TypeScript, Express.js et Nginx.
# Double-cliquez sur le fichier ou exécutez dans un terminal
start.bat# Rendez le script exécutable (une seule fois)
chmod +x start.sh
# Lancez la plateforme
./start.sh# Backend (Terminal 1)
cd backend
npm install
npm run dev
# Frontend (Terminal 2)
npm install
npm run dev- Frontend: http://localhost:3000
- Backend API: http://localhost:3001/api
- Santé du serveur: http://localhost:3001/api/health
- Interface moderne avec React 18 + TypeScript
- Design responsive avec Tailwind CSS
- Animations fluides avec Framer Motion
- Lecteur vidéo personnalisé avec contrôles avancés
- Navigation intuitive et recherche en temps réel
- Optimisé pour mobile et desktop
- API RESTful avec Express.js
- Gestion des vidéos (upload, streaming, métadonnées)
- Système de recherche et filtrage avancé
- Statistiques et analytics
- Sécurité renforcée avec Helmet et rate limiting
- Proxy inverse Nginx pour la performance
- Configuration de production prête à déployer
- Optimisation du streaming vidéo
- Compression et cache automatiques
- Node.js 18+
- npm ou yarn
- Nginx (pour la production)
git clone https://github.com/votre-username/monika-streaming.git
cd monika-streamingnpm installcd backend
npm installCopiez et configurez les variables d'environnement :
cp backend/.env.example backend/.env# Démarrer frontend et backend simultanément
npm start
# Ou séparément :
# Frontend (port 3000)
npm run dev
# Backend (port 3001)
npm run backenddocker-compose up -d# Build du frontend
npm run build
# Démarrage du backend
cd backend
npm start
# Configuration Nginx
sudo cp nginx/monika-streaming.conf /etc/nginx/sites-available/
sudo ln -s /etc/nginx/sites-available/monika-streaming.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx- Placez vos fichiers vidéo dans
public/videos/ - Ajoutez les miniatures dans
public/videos/thumbnails/ - Les vidéos apparaîtront automatiquement dans l'interface
Formats supportés: MP4, WebM, OGV
monika-streaming/
├── src/ # Code source frontend
│ ├── components/ # Composants React réutilisables
│ │ ├── Navbar.tsx # Navigation principale
│ │ ├── VideoCard.tsx # Carte d'affichage vidéo
│ │ └── CustomVideoPlayer.tsx # Lecteur vidéo personnalisé
│ ├── pages/ # Pages de l'application
│ │ ├── Home.tsx # Page d'accueil
│ │ ├── Browse.tsx # Page de navigation/recherche
│ │ └── VideoPlayer.tsx # Page de lecture vidéo
│ ├── hooks/ # Hooks React personnalisés
│ ├── utils/ # Utilitaires et helpers
│ └── types/ # Types TypeScript
├── backend/ # API Backend
│ ├── server.js # Serveur Express principal
│ ├── routes/ # Routes API
│ ├── middleware/ # Middlewares personnalisés
│ ├── models/ # Modèles de données
│ └── utils/ # Utilitaires backend
├── nginx/ # Configuration Nginx
│ └── monika-streaming.conf # Configuration du proxy
├── public/ # Fichiers statiques
└── docs/ # Documentation
- Contrôles personnalisés avec design moderne
- Support des raccourcis clavier (espace, flèches, etc.)
- Mode plein écran natif
- Contrôle du volume avec molette
- Barre de progression interactive
- Saut temporel (±10 secondes)
- Paramètres de qualité (futur)
- Sous-titres (futur)
GET /api/videos- Liste des vidéos avec paginationGET /api/videos/:id- Détails d'une vidéoGET /api/videos/:id/related- Vidéos recommandéesGET /api/search?q=term- Recherche de vidéos
GET /api/categories- Liste des catégories
GET /api/stats- Statistiques globalesGET /api/health- Santé de l'API
Les couleurs sont configurées dans tailwind.config.js :
colors: {
primary: { /* Couleurs principales */ },
dark: { /* Thème sombre */ }
}Tous les composants utilisent Tailwind CSS et sont entièrement personnalisables.
- Headers de sécurité avec Helmet
- Rate limiting pour prévenir les abus
- CORS configuré correctement
- Validation des entrées côté backend
- CSP (Content Security Policy) configuré
- Mobile-first approach
- Breakpoints optimisés pour tous les écrans
- Touch gestures pour mobile
- Navigation adaptive selon la taille d'écran
- Lazy loading des composants
- Optimisation des images et vidéos
- Code splitting automatique avec Vite
- Compression GZIP via Nginx
- Meta tags dynamiques
- URLs optimisées pour le référencement
- Structured data pour les vidéos
- Sitemap automatique
- React 18 - Framework UI
- TypeScript - Typage statique
- Vite - Build tool moderne
- Tailwind CSS - Framework CSS utilitaire
- Framer Motion - Animations
- React Router - Navigation
- Axios - Client HTTP
- Node.js - Runtime JavaScript
- Express.js - Framework web
- Helmet - Sécurité
- Morgan - Logging
- CORS - Cross-Origin Resource Sharing
- Compression - Compression des réponses
- Nginx - Proxy inverse et serveur web
- Docker - Conteneurisation (optionnel)
- Fork le projet
- Créez votre branche (
git checkout -b feature/nouvelle-fonctionnalite) - Committez vos changements (
git commit -m 'Ajout nouvelle fonctionnalité') - Push vers la branche (
git push origin feature/nouvelle-fonctionnalite) - Ouvrez une Pull Request
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Pour toute question ou problème :
- 📧 Email : support@monika-streaming.com
- 🐛 Issues : GitHub Issues
- 📖 Documentation : Wiki du projet
Développé avec ❤️ par l'équipe Monika Streaming