Ce dépôt contient le backend de la plateforme Elimu, qui permet de gérer des vidéos YouTube via une API FastAPI et de stocker leurs informations dans une base de données MySQL. Le projet inclut également des exemples d'API CRUD (création, lecture, mise à jour et suppression) ainsi qu'une fonction pour récupérer les données d'une vidéo YouTube à partir de son URL.
- Prérequis
- Installation
- Lancement de l'application
- Structure du projet
- Utilisation des endpoints
- Licence
- Python 3.8+
- pip
- Virtualenv (optionnel, mais recommandé)
- XAMPP (pour MySQL)
- Une clé API YouTube
Clone le dépôt sur ta machine locale :
git clone https://github.com/babekaja/elimu-backend.git
cd elimu-backendCrée un environnement virtuel :
python -m venv .venv
.venv\Scripts\activatepython3 -m venv .venv
source .venv/bin/activateInstalle toutes les dépendances via le fichier requirements.txt :
pip install -r requirements.txtfastapi
uvicorn
sqlalchemy
mysql-connector-python
python-dotenv
requestsCrée un fichier .env à la racine du projet et ajoute-y les variables suivantes :
DATABASE_URL=mysql+mysqlconnector://root:@localhost/elimu
YOUTUBE_API_KEY=VOTRE_CLE_API_YOUTUBECe fichier sera chargé automatiquement par python-dotenv (assure-toi d'appeler load_dotenv() dans ton code, par exemple dans config.py).
- Télécharge et installe XAMPP.
- Lance le panneau de contrôle XAMPP et démarre le service MySQL.
- Connecte-toi à phpMyAdmin via http://localhost/phpmyadmin et crée une base de données nommée
elimu(ou utilise le script SQL fourni dans le répertoiresql/si présent).
Lancer le backend FastAPI :
Depuis la racine du projet, exécute :
uvicorn main:app --reloadL'application sera accessible à http://127.0.0.1:8000.
La documentation interactive se trouve à http://127.0.0.1:8000/docs.
Utilise un outil comme Postman ou la documentation interactive de FastAPI pour tester les endpoints (création, lecture, mise à jour et suppression de vidéos).
elimu-backend/
├── main.py # Point d'entrée de l'application FastAPI
├── config.py # Configuration (variables d'environnement, etc.)
├── database.py # Connexion à la base de données via SQLAlchemy
├── models.py # Définition des modèles SQLAlchemy (Video, Progress, etc.)
├── schemas.py # Schémas Pydantic pour validation des données
├── crud.py # Fonctions CRUD pour la gestion des vidéos et progression
├── youtube_api.py # Intégration avec l'API YouTube (extraction de l'ID, récupération des données)
├── routers/
│ ├── video.py # Routes FastAPI pour la gestion des vidéos
│ └── progress.py # Routes FastAPI pour la gestion de la progression
├── requirements.txt # Liste des dépendances Python
├── .env # Fichier de variables d'environnement (non versionné)
└── README.md # Ce fichier README
Endpoint : POST /videos/
Body JSON :
{
"youtube_url": "https://youtu.be/dQw4w9WgXcQ",
"mentor_email": "mentor@example.com",
"category": "Flutter"
}Endpoint : GET /videos/{video_id}
Endpoint : PUT /videos/{video_id}
Body JSON (exemple) :
{
"title": "Nouveau titre",
"description": "Nouvelle description",
"category": "Nouvelle Catégorie"
}Endpoint : DELETE /videos/{video_id}
Remarques :
- XAMPP & MySQL : Assure-toi que le service MySQL est lancé via XAMPP avant de démarrer l'application.
- Variables d'environnement : Ne partage pas ta clé API publiquement. Utilise un fichier
.envet ajoute-le à ton fichier.gitignore.
N'hésite pas à contribuer ou à signaler des problèmes via les Issues du dépôt.
Happy coding! 🚀