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
ecodata-platform/
âââ backend/
â âââ main.py # API REST FastAPI
â âââ models.py # ModĂšles SQLAlchemy
â âââ database.py # Configuration DB
â âââ schemas.py # SchĂ©mas Pydantic
â âââ requirements.txt # DĂ©pendances backend
â âââ Dockerfile # Image Docker backend
âââ frontend/
â âââ app.py # Application Streamlit
â âââ requirements.txt # DĂ©pendances frontend
â âââ Dockerfile # Image Docker frontend
âââ k8s/
â âââ namespace.yaml
â âââ backend-deployment.yaml
â âââ frontend-deployment.yaml
â âââ postgres-statefulset.yaml
â âââ secrets-and-pvc.yaml
âââ .github/
â âââ workflows/
â âââ ci-cd.yml # Pipeline CI/CD
âââ docker-compose.yml # Orchestration locale
âââ README.md
đ 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\Scripts\activate # 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
- Form data:
GET /api/files- Liste des fichiers- Query params:
user_type(optionnel),skip,limit
- Query params:
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
- Format:
Frontend
API_URL: URL de lâAPI backend- DĂ©faut:
http://localhost:8000
- Défaut:
đŠ 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