API Backend sécurisée développée en FastAPI pour la plateforme de traduction de TalAIt. Cette API permet aux équipes de traduire rapidement des textes entre le français et l'anglais en utilisant les modÚles Hugging Face, avec une authentification JWT robuste.
âââââââââââââââââââ
â Frontend â
â (Next.js) â
ââââââââââŹâââââââââ
â HTTP + JWT
âŒ
âââââââââââââââââââ
â FastAPI â
â Backend â
ââââââŹâââââââââŹââââ
â â
â ââââââââââââââââ
⌠âŒ
âââââââââââââââ ââââââââââââââââââââ
â PostgreSQL â â Hugging Face â
â Database â â Inference API â
âââââââââââââââ ââââââââââââââââââââ
- Framework: FastAPI
- Base de données: PostgreSQL 18
- ORM: SQLAlchemy
- Authentification: JWT (python-jose)
- Sécurité: hashlib pour le hashing des mots de passe
- API IA: Hugging Face Inference API
- Validation: Pydantic
- Documentation: Swagger UI
- Python 3.11+
- PostgreSQL 15+
- Token Hugging Face API (gratuit)
- Docker & Docker Compose (optionnel)
git clone https://github.com/Assma-IBIKAS/talAIt_Plateforme_de_Traduction_Backend.gitpython -m venv venv
source venv/bin/activate # Linux/Mac
# ou
venv\Scripts\activate # Windowspip install -r requirements.txtCréer un fichier .env à la racine du dossier backend :
# Database
DATABASE_URL=postgresql://user:password@localhost:5432/talAIt_db
# JWT Configuration
SECRET_KEY=votre_secret_key_super_securisee_changez_la
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
# Hugging Face API
HF_API_TOKEN=votre_token_hugging_face
HF_API_URL=https://api-inference.huggingface.co/models
# Models
MODEL_FR_EN=Helsinki-NLP/opus-mt-fr-en
MODEL_EN_FR=Helsinki-NLP/opus-mt-en-fr
# Server
HOST=0.0.0.0
PORT=8000# Créer la base de données PostgreSQL
createdb talAIt_db
# Les tables seront créées automatiquement au démarrageuvicorn main:app --reload uvicorn main:app --host 0.0.0.0 --port 8000 --workers 4# Build l'image
docker build -t talAIt-backend .
# Lancer le conteneur
docker run -p 8000:8000 --env-file .env talait-backend# Depuis la racine du projet
docker-compose up -dUne fois l'application lancée, la documentation interactive est disponible sur :
- Swagger UI: http://localhost:8000/docs
Création d'un nouveau compte utilisateur.
Request Body:
{
"username": "user@talait.com",
"password": "SecurePass123!"
}Response:
{
"id": 1,
"username": "user@talait.com"
}Connexion et obtention d'un token JWT.
Request Body (form-data):
username: user@talait.com
password: SecurePass123!
Response:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "bearer"
}Traduit un texte entre français et anglais.
Headers:
Authorization: Bearer <votre_token_jwt>
Request Body:
{
"text": "Bonjour, comment allez-vous ?",
"direction": "fr-en"
}Response:
{
"original_text": "Bonjour, comment allez-vous ?",
"translated_text": "Hello, how are you?",
"direction": "fr-en"Directions supportées:
fr-en: Français â Anglaisen-fr: Anglais â Français
backend/
âââ app/
â âââ __init__.py
â âââ main.py # Point d'entrĂ©e FastAPI
â âââ database.py # Connexion DB
â âââ models.py # ModĂšles SQLAlchemy
â âââ schemas.py # SchĂ©mas Pydantic
â âââ huggingface.py # Service Hugging Face
âââ tests/
â âââ test_unitaire.py
âââ Dockerfile
âââ requirements.txt
âââ .env.example
âââ README.md
# Tous les tests
pytest1. User Register/Login
â
2. Backend valide credentials
â
3. Backend génÚre JWT (expire aprÚs 30min)
â
4. Frontend stocke le token
â
5. Frontend envoie token dans Authorization header
â
6. Backend vérifie et décode le JWT
â
7. Si valide â accĂšs endpoint protĂ©gĂ©
Si invalide â 401 Unauthorized
â
Passwords hashés avec hashlib
â
JWT avec expiration (30 minutes)
â
CORS configuré pour le frontend uniquement
â
Rate limiting sur les endpoints sensibles
â
Validation stricte des inputs (Pydantic)
â
Gestion des erreurs centralisée
â
Variables sensibles dans .env (jamais commitées)
| Code | Description |
|---|---|
| 200 | SuccĂšs |
| 201 | Créé (register) |
| 400 | Bad Request (données invalides) |
| 401 | Unauthorized (JWT manquant/invalide) |
| 403 | Forbidden |
| 404 | Not Found |
| 422 | Validation Error |
| 500 | Internal Server Error |
| 503 | Service Unavailable (Hugging Face down) |
- FR â EN:
Helsinki-NLP/opus-mt-fr-en - EN â FR:
Helsinki-NLP/opus-mt-en-fr
- Rate Limit: 1000 requĂȘtes/jour (compte gratuit)
- Timeout: 30 secondes par requĂȘte
- Taille max: 1000 caractĂšres par traduction
- Disponibilité: 99% (cold start possible)
# Timeout aprĂšs 30s
# Retry automatique (3 tentatives)
# Fallback si modĂšle indisponible
# Log dĂ©taillĂ© des erreursdocker build -t talait-backend:latest .1. Utilisateur s'inscrit â POST /register
2. Utilisateur se connecte â POST /login â reçoit JWT
3. Frontend stocke le JWT (localStorage/cookie)
4. Utilisateur demande une traduction â POST /translate
5. Backend vérifie le JWT
6. Backend appelle Hugging Face API
7. Backend retourne la traduction
8. Frontend affiche le résultat
DĂ©veloppĂ© avec â€ïž par l'Ă©quipe TalAIt Tech