Backend de l'application StudySynergy, plateforme d'apprentissage assistée par IA pour le TechSprint Hackathon 2025.
- FastAPI : Framework web Python moderne et rapide
- Firebase Firestore : Base de données NoSQL
- Cloudinary : Stockage de fichiers (images, PDFs, audio, etc.)
- Google gemini-2.5-flash : Moteur d'IA pour l'analyse de documents et la génération de contenu
- JWT : Authentification sécurisée
- Python 3.9+
- Compte Firebase avec projet configuré
- Compte Cloudinary
- Clé API Google Gemini
git clone https://github.com/Darrylwin/StudySynergy.git
cd studysynergypython -m venv venv
source venv/bin/activate # Sur Windows: venv\Scripts\activatepip install -r requirements.txt- Aller sur Firebase Console
- Créer un projet (ou utiliser un existant)
- Activer Firestore Database
- Aller dans Paramètres du projet > Comptes de service
- Cliquer sur Générer une nouvelle clé privée
- Télécharger le fichier JSON et le renommer
firebase_credentials.json - Le placer à la racine du projet
- Créer un compte sur Cloudinary
- Récupérer vos credentials dans le Dashboard:
- Cloud Name
- API Key
- API Secret
- Aller sur Google AI Studio
- Créer une clé API
- La copier pour l'étape suivante
Créer un fichier .env à la racine :
# Firebase
FIREBASE_CREDENTIALS_PATH=./firebase_credentials.json
# Cloudinary
CLOUDINARY_CLOUD_NAME=votre_cloud_name
CLOUDINARY_API_KEY=votre_api_key
CLOUDINARY_API_SECRET=votre_api_secret
# Taille max des fichiers
MAX_FILE_SIZE_MB=50
# Google Gemini
GEMINI_API_KEY=votre_cle_api_ici
# JWT
JWT_SECRET_KEY=votre_cle_secrete_super_longue_et_aleatoire_ici_changez_moi
JWT_ALGORITHM=HS256
JWT_ACCESS_TOKEN_EXPIRE_MINUTES=1440
# Serveur
HOST=0.0.0.0
PORT=8000
DEBUG=TrueRemplacer :
votre_cloud_name,votre_api_key,votre_api_secretpar vos credentials Cloudinaryvotre_cle_api_icipar votre clé API GeminiJWT_SECRET_KEYpar une clé secrète aléatoire forte
python run.pyOu avec uvicorn directement :
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000L'API sera accessible sur : http://localhost:8000
Documentation interactive : http://localhost:8000/docs
POST /api/auth/register- InscriptionPOST /api/auth/login- ConnexionGET /api/auth/me- Infos utilisateurPOST /api/auth/change-password- Changer le mot de passe
Tous les autres endpoints nécessitent un header:
Authorization: Bearer <JWT_TOKEN>
POST /api/session/create- Créer une nouvelle session avec fichiersPOST /api/session/{id}/add-file- Ajouter un fichier à une sessionGET /api/session/list- Liste des sessions de l'utilisateurGET /api/session/{id}- Détails d'une sessionDELETE /api/session/{id}- Supprimer une sessionPOST /api/session/{id}/chat- Discuter avec l'IA sur le cours
POST /api/session/{id}/generate-tool- Générer un quiz, flashcards ou notesGET /api/session/{id}/artifacts- Récupérer tous les artefacts générés
Projet pour le TechSprint Hackathon 2025