Une API REST complète pour une plateforme d'apprentissage en ligne (e-learning) développée avec Django REST Framework.
Cette API permet de gérer une plateforme d'e-learning complète avec les fonctionnalités suivantes :
- Gestion des profils : Création et gestion de profils d'étudiants et d'enseignants
- Gestion des cours : Création, modification et suppression de cours avec support vidéo
- Système d'inscription : Inscription des étudiants aux cours
- Domaines d'expertise : Organisation des cours par domaines (Programmation, Design, Marketing, Data Science, Business)
- Système de recommandation : Recommandation de cours basée sur les intérêts et le niveau d'expérience des utilisateurs
- Support multimédia : Gestion des images de profil, photos de couverture et vidéos de cours
Le projet est structuré autour de quatre modèles principaux :
- Profile : Profils utilisateurs (étudiants et enseignants)
- Course : Cours avec vidéos et informations détaillées
- Domain : Domaines d'expertise et d'intérêt
- Enrollment : Inscriptions des étudiants aux cours
- Python 3.11 ou supérieur
- Pipenv
-
Cloner le dépôt
git clone https://github.com/jocha28/elearnig-api.git cd elearnig-api -
Installer les dépendances
pipenv install
-
Activer l'environnement virtuel
pipenv shell
-
Effectuer les migrations
cd elearning python manage.py migrate -
Créer un superutilisateur (optionnel)
python manage.py createsuperuser
-
Lancer le serveur de développement
python manage.py runserver
L'API sera accessible à l'adresse : http://localhost:8000/
GET /api/profiles/- Liste tous les profilsPOST /api/profiles/- Créer un nouveau profilGET /api/profiles/{id}/- Détails d'un profilPUT /api/profiles/{id}/- Mettre à jour un profilDELETE /api/profiles/{id}/- Supprimer un profil
GET /api/courses/- Liste tous les coursPOST /api/courses/- Créer un nouveau coursGET /api/courses/{id}/- Détails d'un coursPUT /api/courses/{id}/- Mettre à jour un coursDELETE /api/courses/{id}/- Supprimer un cours
GET /api/domains/- Liste tous les domainesPOST /api/domains/- Créer un nouveau domaineGET /api/domains/{id}/- Détails d'un domainePUT /api/domains/{id}/- Mettre à jour un domaineDELETE /api/domains/{id}/- Supprimer un domaine
GET /api/enrollments/- Liste toutes les inscriptionsPOST /api/enrollments/- Créer une nouvelle inscriptionGET /api/enrollments/{id}/- Détails d'une inscriptionPUT /api/enrollments/{id}/- Mettre à jour une inscriptionDELETE /api/enrollments/{id}/- Supprimer une inscription
name: Nom de l'utilisateuremail: Email uniquerole: Rôle (student/teacher)interests: Domaines d'intérêt (ManyToMany)experience_level: Niveau d'expérience (beginner/intermediate/advanced)objectives: Objectifs d'apprentissageprofile_picture: Photo de profilcover_photo: Photo de couverture
title: Titre du coursdescription: Description détailléeteacher: Enseignant (ForeignKey vers Profile)video: Fichier vidéo du coursdomain: Domaines associés (ManyToMany)difficulty: Niveau de difficulté (beginner/intermediate/advanced)
name: Nom du domaine
student: Étudiant inscrit (ForeignKey vers Profile)course: Cours concerné (ForeignKey vers Course)
L'API propose un système de recommandation de cours basé sur :
- Les domaines d'intérêt de l'utilisateur
- Le niveau d'expérience de l'utilisateur
- La difficulté des cours disponibles
- Support des images de profil et de couverture
- Upload et gestion de vidéos de cours
- Stockage organisé par type de média
L'API utilise les fonctionnalités d'authentification de Django REST Framework. Vous pouvez configurer l'authentification selon vos besoins (Token, JWT, Session, etc.).
elearnig-api/
├── elearning/ # Dossier principal Django
│ ├── api/ # Application API
│ │ ├── models.py # Modèles de données
│ │ ├── views.py # ViewSets
│ │ ├── serializers.py # Serializers
│ │ ├── urls.py # Routes API
│ │ └── migrations/ # Migrations de base de données
│ ├── manage.py # Script de gestion Django
│ └── db.sqlite3 # Base de données SQLite
├── Pipfile # Dépendances Python
└── Pipfile.lock # Verrouillage des versions
- Django : Framework web Python
- Django REST Framework : Toolkit pour créer des APIs REST
- Pillow : Traitement d'images pour les uploads
Ce projet est un projet éducatif open source.
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.