Plateforme d'enseignement en ligne moderne, responsive et sécurisée avec système d'authentification complet, gestion de cours par matière, upload de fichiers/vidéos, et conférences vidéo en temps réel.
- ✅ Système d'authentification sécurisé avec hashage bcryptjs
- ✅ Rôles d'utilisateurs : Élève / Administrateur
- ✅ Création de plusieurs comptes avec le même email
- ✅ Stockage sécurisé en base de données SQLite
- ✅ Matières disponibles : SVT, Français, Mathématiques, Physique-Chimie, Histoire, Géographie, Philosophie, Anglais
- ✅ Création de cours (Admin uniquement)
- ✅ Inscription aux cours (Élèves)
- ✅ Ressources pédagogiques par cours
- ✅ Photo de profil personnalisée
- ✅ Upload et stockage des photos
- ✅ Affichage en temps réel de tous les utilisateurs
- ✅ Sélection de plusieurs classes
- ✅ Upload de fichiers (PDF, DOC, ZIP, etc.)
- ✅ Upload de vidéos (MP4, WebM, etc.)
- ✅ Lecture vidéo intégrée
- ✅ Téléchargement de ressources
- ✅ Création de salles Jitsi Meet (Admin)
- ✅ Rejoindre les conférences (Élèves)
- ✅ Affichage en temps réel des participants
- ✅ Support multi-matière
- ✅ Affichage de votre profil
- ✅ Statistiques en temps réel
- ✅ Liste des utilisateurs connectés
- ✅ Recherche d'utilisateurs
- ✅ Design moderne avec dégradé (violet/bleu)
- ✅ Interface responsive (mobile, tablette, desktop)
- ✅ Animations fluides
- ✅ Footer personnalisé "Design by Leonard"
- React 18 - Framework JavaScript
- Vite - Build tool ultra-rapide
- CSS3 - Responsive design avec media queries
- Fetch API - Communication avec le backend
- Node.js - Runtime JavaScript
- Express.js - Framework web
- SQLite3 - Base de données
- Multer - Upload de fichiers
- bcryptjs - Hashage des mots de passe
- CORS - Gestion des requêtes cross-origin
- users (id, email, password, identifier, country, classes, role, profilePhoto)
- courses (id, title, subject, description, instructorId)
- enrollments (id, courseId, userId)
- materials (id, courseId, title, type, fileName, uploadedBy)
- conference_rooms (id, title, subject, createdBy, jitsiRoomName, startTime)
- room_participants (id, roomId, userId)- Node.js 16+ et npm
- Un navigateur moderne
- Cloner ou accéder au dossier du projet
cd "c:\Users\HP\OneDrive\Desktop\numerique"- Installer les dépendances
npm installTerminal 1 - Backend
npm run dev:serverTerminal 2 - Frontend
npm run devDouble-cliquez sur START.bat
npm run dev:all- Frontend : http://localhost:5173
- Backend : http://localhost:5000
- Cliquez sur "S'inscrire"
- Entrez votre email
- Créez un mot de passe sécurisé
- Entrez un nom d'utilisateur
- Sélectionnez votre pays
- Sélectionnez votre/vos classe(s) (plusieurs possibles)
- Choisissez votre rôle : Élève ou Admin (test)
- Cliquez sur "S'inscrire"
- Entrez votre email
- Entrez votre mot de passe
- Cliquez sur "Se connecter"
- Photo de profil : Cliquez sur votre avatar pour uploader une photo
- Profil : Consultez vos informations
- Statistiques : Nombre d'utilisateurs, admins, etc.
- Utilisateurs en temps réel : Voyez qui est connecté maintenant
- Accédez à l'onglet "🔧 Admin"
- Cliquez sur "📚 Créer Cours"
- Entrez le titre et la matière
- Ajoutez une description (optionnel)
- Cliquez sur "Créer le Cours"
- Allez à "Cours"
- Parcourez les matières disponibles
- Cliquez sur "S'inscrire" pour un cours
- Une fois inscrit, cliquez sur "Voir ressources"
- Allez dans l'onglet "Admin"
- Cliquez sur "📤 Upload Fichiers"
- Glissez vos fichiers ou cliquez pour en sélectionner
- Supports : PDF, DOC, MP4, WebM, etc.
- Allez dans l'onglet "Admin"
- Cliquez sur "🎥 Créer Salle Visio"
- Entrez un titre et une matière (optionnel)
- Cliquez sur "Créer la Salle"
- Copiez le lien généré pour le partager
- Allez à "Conférences"
- Consultez les salles disponibles
- Voyez qui est connecté
- Cliquez sur "🎤 Rejoindre (Jitsi Meet)"
- Jitsi Meet s'ouvre dans un nouvel onglet
Pour tester les différentes fonctionnalités :
- Email : admin@academie.fr
- Mot de passe : Admin123!
- Identifiant : Administrator
- Rôle : Administrateur
- Email : eleve@academie.fr
- Mot de passe : Eleve123!
- Identifiant : Eleve123
- Rôle : Élève
Vous pouvez créer vos propres comptes avec la même adresse email
numerique/
├── src/
│ ├── App.jsx # Composant principal
│ ├── App.css # Styles globaux (responsive)
│ ├── main.jsx # Point d'entrée React
│ ├── index.css # Styles de base
│ └── components/
│ ├── Login.jsx # Page de connexion
│ ├── Register.jsx # Page d'inscription
│ ├── Dashboard.jsx # Tableau de bord
│ ├── CourseManager.jsx # Gestion des cours
│ ├── Conference.jsx # Gestion des conférences
│ └── AdminPanel.jsx # Panneau admin
│
├── server/
│ ├── server.js # Serveur Express
│ ├── academie.db # Base de données SQLite
│ └── uploads/
│ ├── profiles/ # Photos de profil
│ ├── files/ # Fichiers pédagogiques
│ └── videos/ # Vidéos
│
├── dist/ # Build production
├── package.json # Dépendances
├── vite.config.js # Configuration Vite
├── START.bat # Script de démarrage
└── README.md # Cette documentation
# Démarrage du backend uniquement
npm run dev:server
# Démarrage du frontend uniquement
npm run dev
# Démarrage des deux en parallèle
npm run dev:all
# Build pour production
npm run build
# Aperçu du build production
npm run preview
# Linting du code
npm run lintFichiers
- PDF (application/pdf)
- Documents : DOC, DOCX, TXT
- Archives : ZIP, RAR
- Autres formats bureautiques
Vidéos
- MP4 (video/mp4)
- WebM (video/webm)
- Ogg (video/ogg)
- Autres formats vidéo standard
- Taille maximale : 50 MB
- Les fichiers sont stockés dans
/server/uploads/ - Accessibles via
http://localhost:5000/uploads/
France, Belgique, Suisse, Canada, Maroc, Sénégal, Côte d'Ivoire, Autre
- 📖 SVT (Sciences de la Vie et de la Terre)
- 📝 Français
- 🔢 Mathématiques
- ⚗️ Physique-Chimie
- 📜 Histoire
- 🗺️ Géographie
- 🤔 Philosophie
- 🌐 Anglais
6ème, 5ème, 4ème, 3ème, 2nde, 1ère, Terminale, Licence, Master
- ✅ Mise à jour automatique de la liste des utilisateurs (toutes les 3 secondes)
- ✅ Affichage en direct des participants aux conférences
- ✅ Synchronisation instantanée des inscriptions aux cours
- ✅ Photos de profil mises à jour en temps réel
- ✅ Hachage des mots de passe avec bcryptjs
- ✅ Validation côté serveur
- ✅ CORS configuré
- ✅ Restrictions d'accès par rôle
- ✅ Stockage sécurisé des fichiers
npm run buildLes fichiers compilés seront dans le dossier /dist/
Pour servir en production :
npm run preview- Vérifiez que le backend est lancé (
npm run dev:server) - Vérifiez le port 5000 :
netstat -ano | findstr :5000
- Assurez-vous que le backend est lancé avant le frontend
- Vérifiez que les ports ne sont pas en conflit
- Vérifiez que le dossier
uploads/existe - Vérifiez les permissions du dossier
- Vérifiez la taille du fichier (max 50 MB)
Pour toute question ou problème, consultez les logs du serveur :
- Terminal du backend :
npm run dev:server - Terminal du frontend :
npm run dev
Projet privé - ACADEMIE NUMERIQUE
Tous les éléments respectent le design moderne avec dégradé violet/bleu. Le footer affiche "Design by Leonard" avec la date actuelle mise à jour automatiquement.
Version : 2.0.0 (Avec Backend & Base de Données)
Dernière mise à jour : 24 février 2026
Design by Leonard © 2026
🚀 Site en production à l'adresse http://localhost:5173