Une application Flask complète combinant un système d'authentification robuste et un convertisseur de devises en temps réel.
- ✅ Inscription/Connexion avec JWT
- ✅ Gestion des sessions multi-appareils
- ✅ Refresh tokens avec rotation automatique
- ✅ Rate limiting et sécurité renforcée
- ✅ Gestion des mots de passe avec bcrypt
- ✅ Conversion en temps réel (30+ devises)
- ✅ Providers multiples avec fallback (Fixer.io, ECB)
- ✅ Cache Redis pour performances optimales
- ✅ Historique des conversions
- ✅ Devises favorites par utilisateur
- ✅ Support des cryptomonnaies
- ✅ Interface web moderne avec Bootstrap
- ✅ Statistiques utilisateur
- ✅ Conversion rapide
- ✅ Gestion des favoris
- Backend: Flask, SQLAlchemy, Redis
- Authentification: Flask-JWT-Extended
- Base de données: PostgreSQL/SQLite
- Cache: Redis
- Tâches: Celery + Redis
- Frontend: Bootstrap 5, Axios
- Tests: Pytest
- Déploiement: Docker, Gunicorn
- Python 3.11+
- PostgreSQL (ou SQLite pour dev)
- Redis
# 1. Cloner le projet
git clone <repository>
cd flask-auth-currency
# 2. Créer un environnement virtuel
python -m venv venv
source venv/bin/activate # Linux/Mac
# ou
venv\Scripts\activate # Windows
# 3. Installer les dépendances
pip install -r requirements/development.txt
# 4. Configurer l'environnement
cp .env.example .env
# Éditer .env avec vos configurations
# 5. Initialiser la base de données
## Migration base de données
flask db init
flask db migrate -m "Initial migration"
flask db upgrade
python scripts/populate_currencies.py
# 6. Créer un utilisateur admin (optionnel)
python scripts/create_admin.py
# 7. Lancer l'application
python run.py
# Lancer tous les services
docker-compose up -d
# Initialiser la base
docker-compose exec web flask db upgrade
docker-compose exec web python scripts/populate_currencies.py
# Flask
SECRET_KEY=your-super-secret-key
JWT_SECRET_KEY=your-jwt-secret-key
# Base de données
DATABASE_URL=postgresql://user:pass@localhost/db_name
# Redis
REDIS_URL=redis://localhost:6379/0
# APIs externes (optionnel)
FIXER_API_KEY=your-fixer-api-key
# Email (optionnel)
MAIL_SERVER=smtp.gmail.com
MAIL_USERNAME=[email protected]
MAIL_PASSWORD=your-app-password
POST /api/auth/register # Inscription
POST /api/auth/login # Connexion
POST /api/auth/refresh # Rafraîchir token
POST /api/auth/logout # Déconnexion
GET /api/auth/profile # Profil utilisateur
POST /api/conversions/convert # Convertir devises
GET /api/conversions/history # Historique utilisateur
POST /api/conversions/batch # Conversion en lot
GET /api/currencies # Liste des devises
GET /api/currencies/popular # Devises populaires
POST /api/currencies/favorites # Ajouter favori
GET /api/currencies/rates # Taux actuels
curl -X POST http://localhost:5000/api/conversions/convert \
-H "Content-Type: application/json" \
-d '{"amount": 100, "from_currency": "USD", "to_currency": "EUR"}'
# Connexion
curl -X POST http://localhost:5000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]", "password": "password123"}'
# Utiliser le token
curl -X GET http://localhost:5000/api/auth/profile \
-H "Authorization: Bearer <access_token>"
# Lancer tous les tests
pytest
# Tests avec couverture
pytest --cov=app tests/
# Tests spécifiques
pytest tests/test_auth.py
pytest tests/test_conversions.py
# 1. Construire l'image
docker build -t currency-converter .
# 2. Variables d'environnement production
cp .env.example .env.prod
# Configurer pour la production
# 3. Lancer avec docker-compose
docker-compose -f docker-compose.prod.yml up -d
# Installation
pip install -r requirements/production.txt
# Lancement
gunicorn --bind 0.0.0.0:5000 --workers 4 wsgi:app
# Worker
celery -A tasks.celery_app worker --loglevel=info
# Scheduler (tâches périodiques)
celery -A tasks.celery_app beat --loglevel=info
# Monitor
celery -A tasks.celery_app flower
- Les logs sont configurés via la variable
LOG_LEVEL
- Intégration Sentry pour la production
- Métriques Redis disponibles via CLI
- Fork le projet
- Créer une branche (
git checkout -b feature/nouvelle-fonctionnalite
) - Commit (
git commit -am 'Ajouter nouvelle fonctionnalité'
) - Push (
git push origin feature/nouvelle-fonctionnalite
) - Créer une Pull Request
Ce projet est sous licence MIT. Voir le fichier LICENSE
pour plus de détails.
- Issues: Ouvrir une issue sur GitHub
- Documentation: Voir
/docs
pour plus de détails - API: Documentation interactive à
/docs/api
(en développement)
- Interface React/Vue.js
- Support WebSocket pour taux temps réel
- API GraphQL
- Notifications par email/SMS
- Dashboard analytics avancé
- Support plus de cryptomonnaies
- API mobile (React Native/Flutter)
Made with ❤️ using Flask