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)

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;
\q

Backend

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 --reload

Le 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.py

Le 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 down

Services disponibles :

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’API
  • GET /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 fichier
  • DELETE /api/files/{id} - Supprimer un fichier
  • GET /api/stats - Statistiques globales

Documentation interactive : http://localhost:8000/docs

Fonctionnalités

Pour les Utilisateurs

  1. 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)
  1. Dashboard
  • Statistiques globales
  • RĂ©partition par type d’utilisateur
  • Visualisations graphiques
  1. Gestion des fichiers
  • Liste filtrable par type
  • DĂ©tails de chaque fichier
  • Suppression sĂ©curisĂ©e
  1. 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 :

  1. Tests : Lint et tests unitaires
  2. Build : Construction des images Docker
  3. Push : Publication sur GitHub Container Registry
  4. 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 :

  1. Vérifier les logs : docker-compose logs ou kubectl logs
  2. Consulter la documentation API : /docs
  3. 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


Code Source

Backend (FastAPI)

Frontend (Streamlit)

Total: 787 lignes de code Python

1 élément sous ce dossier.