EcoData Platform đ
Plateforme de collecte de données pour le calcul du bilan carbone.
đ Description
EcoData Platform est une application web full-stack permettant aux entreprises, partenaires et particuliers de dĂ©poser des fichiers CSV/Excel contenant des donnĂ©es pour le calcul du bilan carbone. LâĂ©quipe interne peut ensuite consulter, tĂ©lĂ©charger et gĂ©rer ces fichiers via une interface intuitive.
Architecture
âââââââââââââââââââ ââââââââââââââââââââ âââââââââââââââââââ
â â â â â â
â Streamlit âââââââ¶â FastAPI âââââââ¶â PostgreSQL â
â Frontend â â Backend â â Database â
â (Port 8501) â â (Port 8000) â â (Port 5432) â
â â â â â â
âââââââââââââââââââ ââââââââââââââââââââ âââââââââââââââââââ
â
âŒ
ââââââââââââââââââââ
â File Storage â
â (uploads/) â
ââââââââââââââââââââ
Stack Technique
- Backend: Python FastAPI 0.104.1
- Frontend: Streamlit 1.28.2
- Base de données: PostgreSQL 15
- ORM: SQLAlchemy 2.0.23
- Containerisation: Docker & Docker Compose
- Orchestration: Kubernetes
- CI/CD: GitHub Actions
Structure du Projet
projet-final/
âââ ecodata-platform/ # Plateforme EcoData
âââ backend/ # API FastAPI
â âââ main.py
â âââ models.py
â âââ database.py
â âââ schemas.py
â âââ Dockerfile
âââ frontend/ # Application Streamlit
â âââ app.py
â âââ Dockerfile
âââ k8s/ # Manifestes Kubernetes
â âââ namespace.yaml
â âââ backend-deployment.yaml
â âââ frontend-deployment.yaml
â âââ postgres-statefulset.yaml
â âââ secrets-and-pvc.yaml
âââ docs/ # Documentation
âââ docker-compose.yml # Configuration Docker Compose
EcoData Platform
Accéder à la plateforme EcoData Platform complÚte
Composants
Backend (FastAPI)
- Vue dâensemble du Backend
- Application FastAPI principale
- Configuration de la base de données
- ModĂšles SQLAlchemy
- Schémas Pydantic
Frontend (Streamlit)
Documentation
Installation et Lancement
Prérequis
- Python 3.11+
- PostgreSQL 15+
- Docker & Docker Compose (optionnel)
- Kubernetes (pour déploiement en production)
1. Installation Locale
Configuration PostgreSQL
# Créer la base de données et l'utilisateur
sudo -u postgres psql
CREATE DATABASE ecodata_db;
CREATE USER ecodata_user WITH PASSWORD 'ecodata_password';
GRANT ALL PRIVILEGES ON DATABASE ecodata_db TO ecodata_user;
\qBackend
cd ecodata-platform/backend
# Créer un environnement virtuel
python3 -m venv venv
source venv/bin/activate # Linux/Mac
# ou
venv\Scriptsctivate # Windows
# Installer les dépendances
pip install -r requirements.txt
# Lancer le backend
python main.py
# ou
uvicorn main:app --reloadLe backend sera accessible sur http://localhost:8000
Frontend
cd ecodata-platform/frontend
# Installer les dépendances
pip install -r requirements.txt
# Lancer le frontend
streamlit run app.pyLe frontend sera accessible sur http://localhost:8501
2. Déploiement avec Docker Compose
cd ecodata-platform
# Construire et lancer tous les services
docker-compose up -d
# Voir les logs
docker-compose logs -f
# ArrĂȘter les services
docker-compose downServices disponibles :
- Frontend: http://localhost:8501
- Backend: http://localhost:8000
- PostgreSQL: localhost:5432
3. Déploiement sur Kubernetes
cd ecodata-platform/k8s
# Créer le namespace
kubectl apply -f namespace.yaml
# Créer les secrets et PVC
kubectl apply -f secrets-and-pvc.yaml
# Déployer PostgreSQL
kubectl apply -f postgres-statefulset.yaml
# Déployer le backend
kubectl apply -f backend-deployment.yaml
# Déployer le frontend
kubectl apply -f frontend-deployment.yaml
# Vérifier les déploiements
kubectl get pods -n ecodata-platform
kubectl get services -n ecodata-platformđĄ API Endpoints
Backend API (FastAPI)
GET /- Page dâaccueil de lâAPIGET /health- VĂ©rification de santĂ©POST /api/upload- Upload de fichier CSV/Excel- Form data:
file,user_type,user_name GET /api/files- Liste des fichiers- Query params:
user_type(optionnel),skip,limit GET /api/files/{id}- DĂ©tails dâun fichierDELETE /api/files/{id}- Supprimer un fichierGET /api/stats- Statistiques globales
Documentation interactive : http://localhost:8000/docs
Fonctionnalités
Pour les Utilisateurs
- Upload de fichiers
- Support CSV, Excel (.xlsx, .xls)
- Types dâutilisateurs : mĂ©tier, partenaire, particulier
- Aperçu des données avant upload
- Métadonnées automatiques (lignes, colonnes)
- Dashboard
- Statistiques globales
- RĂ©partition par type dâutilisateur
- Visualisations graphiques
- Gestion des fichiers
- Liste filtrable par type
- Détails de chaque fichier
- Suppression sécurisée
- Statistiques avancées
- Ăvolution des uploads
- Top fichiers volumineux
- Analyses temporelles
đ SĂ©curitĂ©
- Validation des types de fichiers
- Sanitisation des noms de fichiers
- Gestion sécurisée des mots de passe (secrets K8s)
- CORS configuré pour le frontend
- Isolation des containers
đ§Ș Tests
# Backend tests
cd backend
pytest tests/
# Lint
flake8 .Variables dâEnvironnement
Backend
DATABASE_URL: URL de connexion PostgreSQL- Format:
postgresql://user:password@host:port/database
Frontend
API_URL: URL de lâAPI backend- DĂ©faut:
http://localhost:8000
đŠ CI/CD
Le pipeline GitHub Actions effectue :
- Tests : Lint et tests unitaires
- Build : Construction des images Docker
- Push : Publication sur GitHub Container Registry
- Deploy : Déploiement automatique (à configurer)
đ„ Contributeurs
- Projet final DevOps - ESIEE Paris 2025
đ Licence
© 2025 ESIEE Paris - Projet Académique
đ Support
Pour toute question ou problĂšme :
- Vérifier les logs :
docker-compose logsoukubectl logs - Consulter la documentation API :
/docs - Vérifier la connexion PostgreSQL
đ Mises Ă jour futures
- Tests unitaires complets
- Authentication et autorisation
- Export des données
- Notifications email
- Analyses avancées de bilan carbone
- Interface dâadministration
Documentation Additionnelle
Fichiers de Configuration
Docker Compose
Kubernetes Manifests
- backend-deployment.yaml
- frontend-deployment.yaml
- postgres-statefulset.yaml
- namespace.yaml
- secrets-and-pvc.yaml
Code Source
Backend (FastAPI)
- Vue dâensemble Backend
- main.py (189 lignes)
- database.py (32 lignes)
- models.py (42 lignes)
- schemas.py (35 lignes)
Frontend (Streamlit)
- Vue dâensemble Frontend
- app.py (489 lignes)
Total: 787 lignes de code Python