Une plateforme d'apprentissage en ligne moderne avec gamification complète, parcours personnalisés et recommandations intelligentes
- À propos du projet
- Fonctionnalités principales
- Technologies utilisées
- Architecture
- Prérequis
- Installation
- Configuration
- Utilisation
- Documentation
- Équipe
- Licence
9awi Niveau est une plateforme d'apprentissage en ligne (LMS - Learning Management System) complète développée dans le cadre du Projet d'Intégration encadré par Madame Lamia Mansouri.
La plateforme offre une expérience d'apprentissage moderne et engageante grâce à :
- 🎮 Gamification complète : Système de points XP, niveaux, badges et défis
- 🛤️ Parcours d'apprentissage structurés : Progression guidée avec validation automatique
- 🤖 Recommandations intelligentes : Suggestions personnalisées basées sur l'IA
- 📜 Certification automatique : Génération de certificats PDF professionnels
- 👥 Multi-rôles : Support pour Apprenants, Formateurs et Administrateurs
- 💬 Assistant IA : Chatbot intelligent pour l'aide contextuelle
- Matière : Projet d'Intégration
- Encadrante : Madame Lamia Mansouri
- Institution : [Votre institution]
- Année académique : 2024-2025
- ✅ Inscription et authentification sécurisée (locale + Google OAuth 2.0)
- ✅ Catalogue de cours avec recherche et filtrage avancés
- ✅ Suivi de progression en temps réel avec statistiques détaillées
- ✅ Quiz et exercices interactifs avec correction automatique
- ✅ Parcours d'apprentissage personnalisés avec déblocage progressif
- ✅ Système de gamification : XP, niveaux (1-10), badges, défis
- ✅ Classement et leaderboard pour stimuler la compétition
- ✅ Recommandations intelligentes de cours et parcours
- ✅ Certificats PDF générés automatiquement
- ✅ Chatbot IA pour assistance contextuelle
- ✅ Création de cours avec éditeur riche et upload d'images
- ✅ Structuration du contenu : Cours → Modules → Leçons
- ✅ Création de quiz et exercices avec correction automatique
- ✅ Conception de parcours d'apprentissage avec conditions de validation
- ✅ Suivi détaillé des apprenants avec analytics de performance
- ✅ Dashboard formateur avec statistiques en temps réel
- ✅ Gestion des certificats pour les parcours
- ✅ Dashboard administrateur avec métriques en temps réel
- ✅ Gestion complète des utilisateurs (CRUD, activation, rôles)
- ✅ Configuration de la gamification : badges, défis, niveaux
- ✅ Gestion des classements et analytics d'engagement
- ✅ Export de données (CSV) pour reporting
- ✅ Monitoring de la plateforme avec graphiques interactifs
| Technologie | Version | Utilisation |
|---|---|---|
| Spring Boot | 3.5.7 | Framework principal |
| Java | 17 | Langage de programmation |
| Spring Security | - | Authentification et autorisation |
| JWT | 0.11.5 | Gestion des tokens d'authentification |
| Spring Data JPA | - | ORM et accès aux données |
| MySQL | 8.0 | Base de données relationnelle |
| OAuth2 Client | - | Authentification Google |
| Brevo (Sendinblue) API | 6.0.0 | Envoi d'emails transactionnels |
| Apache PDFBox | 2.0.29 | Génération de certificats PDF |
| Python | 3.8+ | Moteur de recommandations IA |
| Scikit-learn | - | Machine Learning (filtrage collaboratif) |
| Maven | 3.9 | Gestionnaire de dépendances |
| Lombok | - | Réduction du code boilerplate |
| Technologie | Version | Utilisation |
|---|---|---|
| Angular | 20.2.0 | Framework frontend |
| TypeScript | 5.9.2 | Langage de programmation |
| Tailwind CSS | 7.0.3 | Framework CSS utility-first |
| RxJS | 7.8.0 | Programmation réactive |
| Chart.js | 4.5.1 | Graphiques et visualisations |
| SweetAlert2 | 11.26.17 | Modales et alertes élégantes |
| Angular CLI | 20.2.2 | Outil de ligne de commande |
| Technologie | Version | Utilisation |
|---|---|---|
| Docker | - | Conteneurisation |
| Docker Compose | - | Orchestration multi-conteneurs |
| Nginx | - | Serveur web pour le frontend |
┌─────────────────────────────────────────────────────────────┐
│ FRONTEND (Angular) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Apprenant│ │Formateur │ │ Admin │ │ Chatbot │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────┘
│
┌───────▼───────┐
│ API REST │
│ (JWT Auth) │
└───────┬───────┘
│
┌─────────────────────────────────────────────────────────────┐
│ BACKEND (Spring Boot) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │Controllers│ │ Services │ │Repository│ │ Entities │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Modules Métier │ │
│ │ • Authentification & Sécurité (JWT, OAuth2) │ │
│ │ • Gestion des cours (CRUD, progression) │ │
│ │ • Gamification (XP, badges, défis, leaderboard) │ │
│ │ • Parcours d'apprentissage (étapes, validation) │ │
│ │ • Recommandations IA (Python ML) │ │
│ │ • Certificats (génération PDF) │ │
│ │ • Chatbot (OpenRouter AI) │ │
│ │ • Emails (Brevo/Sendinblue) │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
┌───────▼───────┐
│ MySQL 8.0 │
│ (30+ tables) │
└───────────────┘
┌─────────────────────────────────────────────────────────────┐
│ COUCHE PRÉSENTATION │
│ Controllers (43) : API REST endpoints │
│ • AuthController, CoursController, ParcoursController... │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ COUCHE SERVICE │
│ Services (50+) : Logique métier │
│ • GamificationService, RecommendationService... │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ COUCHE REPOSITORY │
│ Repositories (28) : Accès aux données (Spring Data JPA) │
│ • UserRepository, CoursRepository, BadgeRepository... │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────────────────────────────────────────────┐
│ COUCHE ENTITÉS │
│ Entities (38) : Modèle de données │
│ • User, Cours, Badge, Parcours, UserXP... │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ APP COMPONENT (Root) │
│ • Router Outlet │
└─────────────────────────────────────────────────────────────┘
│
┌───────────────────┼───────────────────┐
│ │ │
┌───────▼───────┐ ┌────────▼────────┐ ┌──────▼──────┐
│ APPRENANT │ │ FORMATEUR │ │ ADMIN │
│ (20+ comps) │ │ (10+ comps) │ │ (10+ comps)│
└───────────────┘ └─────────────────┘ └─────────────┘
│ │ │
┌───────▼───────────────────▼───────────────────▼───────┐
│ SERVICES (30+) │
│ • AuthService, CoursService, GamificationService... │
└────────────────────────────────────────────────────────┘
│
┌───────▼───────┐
│ HTTP CLIENT │
│ (JWT Intercep)│
└───────────────┘
Pour plus de détails, consultez :
Avant de commencer, assurez-vous d'avoir installé :
- Java 17 ou supérieur (Télécharger)
- Node.js 18+ et npm (Télécharger)
- MySQL 8.0 (Télécharger)
- Maven 3.9+ (Télécharger)
- Python 3.8+ (pour le moteur de recommandations) (Télécharger)
- Angular CLI :
npm install -g @angular/cli
- Docker (Télécharger)
- Docker Compose (inclus avec Docker Desktop)
La méthode la plus simple pour démarrer l'application complète.
# 1. Cloner le repository
git clone https://github.com/votre-username/9awi-niveau.git
cd 9awi-niveau
# 2. Lancer tous les services avec Docker Compose
docker-compose up -d
# 3. Vérifier que les conteneurs sont démarrés
docker-compose ps
# L'application sera accessible sur :
# - Frontend : http://localhost:4200
# - Backend API : http://localhost:8080
# - MySQL : localhost:3306Services démarrés :
9awi-mysql: Base de données MySQL 8.09awi-backend: API Spring Boot (port 8080)9awi-frontend: Application Angular (port 4200)
Pour un environnement de développement avec hot-reload.
# 1. Naviguer vers le dossier backend
cd backend
# 2. Installer les dépendances Python pour les recommandations
cd src/main/python
pip install -r requirements.txt
cd ../../..
# 3. Configurer la base de données MySQL
# Créer une base de données nommée '9awi_niveau'
mysql -u root -p
CREATE DATABASE 9awi_niveau;
EXIT;
# 4. Configurer application.properties
# Éditer backend/src/main/resources/application.properties
# Ajuster les paramètres de connexion MySQL si nécessaire
# 5. Compiler et lancer le backend
mvn clean install
mvn spring-boot:run
# Le backend sera accessible sur http://localhost:8080# 1. Naviguer vers le dossier frontend
cd frontend
# 2. Installer les dépendances npm
npm install
# 3. Lancer le serveur de développement
npm start
# Le frontend sera accessible sur http://localhost:4200Fichier : backend/src/main/resources/application.properties
# Base de données
spring.datasource.url=jdbc:mysql://localhost:3306/9awi_niveau
spring.datasource.username=root
spring.datasource.password=root
# JWT
jwt.secret=votre_secret_jwt_tres_long_et_securise
jwt.expiration=86400000 # 24 heures
# OAuth2 Google
spring.security.oauth2.client.registration.google.client-id=votre_client_id
spring.security.oauth2.client.registration.google.client-secret=votre_client_secret
# Brevo (Emails)
brevo.api.key=votre_cle_api_brevo
brevo.sender.email=votre_email@example.com
brevo.sender.name=9awi Niveau
# OpenRouter AI (Chatbot)
ai.api.key=votre_cle_api_openrouter
ai.api.url=https://openrouter.ai/api/v1/chat/completions
ai.model=meta-llama/llama-3.2-3b-instruct:free
# Upload de fichiers
upload.dir=uploads
spring.servlet.multipart.max-file-size=10MBFichier : frontend/src/environments/environment.ts
export const environment = {
production: false,
apiUrl: "http://localhost:8080/api",
};Pour la production : frontend/src/environments/environment.prod.ts
export const environment = {
production: true,
apiUrl: "/api", // Utilise le proxy Nginx
};Fichier : docker-compose.yml (déjà configuré)
Les variables d'environnement sont définies dans le fichier docker-compose.yml. Vous pouvez les modifier selon vos besoins.
Une fois l'application démarrée, accédez à :
Frontend : http://localhost:4200
Email : admin@9awiniveau.com
Mot de passe : admin123
Email : formateur@9awiniveau.com
Mot de passe : formateur123
Email : apprenant@9awiniveau.com
Mot de passe : apprenant123
- S'inscrire ou se connecter (email/mot de passe ou Google)
- Explorer le catalogue de cours et parcours
- S'inscrire aux cours et parcours d'intérêt
- Suivre les leçons et compléter les modules
- Passer les quiz et exercices interactifs
- Gagner des XP, monter de niveau et débloquer des badges
- Consulter les recommandations personnalisées
- Télécharger les certificats après complétion des parcours
- Utiliser le chatbot pour obtenir de l'aide
- Créer des cours avec modules et leçons
- Ajouter des quiz et exercices interactifs
- Concevoir des parcours d'apprentissage structurés
- Suivre la progression des apprenants
- Consulter les statistiques de performance
- Gérer les certificats pour les parcours
- Gérer les utilisateurs (création, modification, suppression)
- Configurer la gamification (badges, défis, niveaux)
- Consulter les analytics de la plateforme
- Gérer les classements et leaderboards
- Exporter les données pour reporting
- Monitorer l'engagement des utilisateurs
- Architecture Backend - Architecture détaillée du backend Spring Boot
- Architecture Frontend - Architecture détaillée du frontend Angular
- Rapport des fonctionnalités - Liste complète des fonctionnalités implémentées
L'API REST est documentée et accessible via les endpoints suivants :
Base URL : http://localhost:8080/api
Endpoints principaux :
/api/auth/*- Authentification (login, register, OAuth2)/api/cours/*- Gestion des cours/api/modules/*- Gestion des modules/api/lecons/*- Gestion des leçons/api/quiz/*- Gestion des quiz/api/exercices/*- Gestion des exercices/api/parcours/*- Gestion des parcours d'apprentissage/api/gamification/*- Système de gamification/api/recommendations/*- Recommandations personnalisées/api/certificates/*- Génération de certificats/api/chatbot/*- Assistant IA/api/admin/*- Administration
Le dossier backend/ contient de nombreux scripts SQL pour :
- Migrations :
migration_*.sql- Scripts de migration de la base de données - Tests :
test_*.sql- Scripts de test et validation - Debug :
debug_*.sql- Scripts de diagnostic - Fix :
fix_*.sql- Scripts de correction de données
Ce projet a été développé par :
| Nom | Rôle | GitHub / Contact |
|---|---|---|
| Baha Eddine Manai | Développeur Full Stack | @BahaManai |
| Amine Kilani | Développeur Full Stack | @amineekilani |
| Kamel Anas Farrah | Développeur Full Stack | @anas-farrah |
Encadrante : Madame Lamia Mansouri
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Nous tenons à remercier :
- Madame Lamia Mansouri pour son encadrement et ses conseils précieux
- Notre institution pour le cadre et les ressources fournis
- La communauté open source pour les technologies et bibliothèques utilisées
Pour toute question ou problème :
- 📧 Email : bahaeddinmanai7@gmail.com
- 🐛 Issues : GitHub Issues
Une application mobile Android native a été développée pour étendre l'expérience d'apprentissage sur mobile !
- Langage : Kotlin
- Architecture : MVVM (Model-View-ViewModel)
- Injection de dépendances : Hilt
- Plateforme : Android natif
Consultez le repository mobile pour plus de détails sur l'installation et l'utilisation.
- 🔔 Notifications push enrichies avec Firebase Cloud Messaging
- 💬 Messagerie interne entre apprenants et formateurs
- 🎥 Visioconférence intégrée (Zoom/Jitsi)
- 💳 Système de paiement pour cours premium (Stripe/PayPal)
- 🌍 Multilingue (i18n) pour le web et mobile
- 📊 Analytics avancés pour formateurs
- 🔍 Recherche full-text (Elasticsearch)
- 🚀 Optimisations (Redis cache, RabbitMQ)
- 📱 Version iOS de l'application mobile
Développé avec ❤️ par l'équipe 9awi Niveau
⭐ Si vous aimez ce projet, n'hésitez pas à lui donner une étoile sur GitHub !