Plateforme d'analyse logistique avec Data Lakehouse
- Presentation
- Objectif du projet
- Architecture
- Technologies
- Installation
- Structure du projet
- Pipeline de donnees
- Dashboard React
- Captures d ecran
- Limites et perspectives
- Contact
Paps Analytics est une plateforme Data Lakehouse developpee dans le cadre d un projet de comprehension et de maitrise de l ensemble du cycle de vie des donnees en Data Engineering.
Ce projet a pour vocation de demontrer comment des donnees brutes peuvent etre collectees, stockees, transformees, versionnees et visualisees a travers une architecture moderne.
Ce projet a ete concu pour repondre a plusieurs objectifs :
- De la generation des donnees a leur visualisation
- Maitrise des concepts de Data Lakehouse
- Conteneurisation avec Docker
- Traitement distribue avec Spark
- Stockage avec MinIO
- Versionning avec Nessie
- Format de table avec Iceberg
- Dashboard React pour l exploration des KPIs
- Filtres dynamiques pour une analyse fine
- Migration vers Snowflake pour le Data Warehouse
- Dashboards Power BI pour la production
┌─────────────────────────────────────────────────────────────────────────────┐
│ PAPS ANALYTICS │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ SOURCES │
│ └── PostgreSQL (Donnees generees : 1 226 765 lignes) │
│ │
│ ORCHESTRATION │
│ └── Apache Airflow │
│ │
│ PROCESSING │
│ └── Apache Spark │
│ │
│ LAKEHOUSE │
│ ├── BRONZE (Donnees brutes) │
│ ├── SILVER (Donnees nettoyees) │
│ └── GOLD (Star Schema + KPIs) │
│ │
│ VISUALISATION │
│ ├── API FastAPI (Backend) │
│ └── Dashboard React (Frontend) │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
PostgreSQL (donnees sources)
↓
Spark (ingestion)
↓
BRONZE (donnees brutes)
↓
Spark (nettoyage)
↓
SILVER (donnees nettoyees)
↓
Spark (agregations)
↓
GOLD (Star Schema + KPIs)
↓
API FastAPI
↓
Dashboard React
| Composant | Technologie | Role |
|---|---|---|
| Conteneurisation | Docker / Docker Compose | Infrastructure reproductible |
| Traitement distribue | Apache Spark | Moteur de calcul |
| Format de table | Apache Iceberg | ACID, Time Travel, Partitionnement |
| Catalog | Project Nessie | Versionning comme Git |
| Stockage objet | MinIO | Lakehouse S3 compatible |
| Base de donnees | PostgreSQL | Donnees sources |
| Orchestration | Apache Airflow | Automatisation des pipelines |
| API Backend | FastAPI | Exposition des donnees |
| Frontend | React + Material-UI | Dashboard interactif |
| Graphiques | Recharts | Visualisations |
Ce projet repose sur XData, une mini plateforme Data Lakehouse réutilisable que j'ai conçue pour centraliser l'infrastructure nécessaire à ce type de projet. Elle fournit tous les services de base :
Apache Spark (moteur de traitement distribué)
Apache Iceberg (format de table moderne)
Project Nessie (catalog et versionning des données)
MinIO (stockage objet compatible S3)
PostgreSQL (base de données relationnelle)
Apache Kafka (streaming de données)
Apache Airflow (orchestration des pipelines)
Note : : L'infrastructure XData est disponible en privé sur GitHub. Si vous souhaitez y accéder pour reproduire ce projet ou l'adapter à vos besoins, n'hésitez pas à me contacter à l'adresse suivante : kebeniako17@gmail.com. Je vous fournirai l'accès et vous accompagnerai si nécessaire.
- Cloner le projet
git clone https://github.com/InnoDataNiako/Paps-Analytics.git
cd Paps-Analytics- Demarrer l infrastructure
docker compose --env-file docker/.env -f docker/compose/docker-compose.yml up -d- Generer les donnees
docker exec -it xdata-spark bash
cd /opt/xdata
python3 scripts/generate_paps_data.py- Lancer le pipeline Spark
spark-submit --master local[*] /opt/xdata/jobs/batch/paps_ingest_bronze.py
spark-submit --master local[*] /opt/xdata/jobs/batch/paps_clean_silver.py
spark-submit --master local[*] /opt/xdata/jobs/batch/paps_gold.py- Lancer le backend FastAPI
docker cp dashboard/backend xdata-spark:/opt/xdata/dashboard/
docker exec -it xdata-spark bash -c "cd /opt/xdata/dashboard/backend && spark-submit ... app.py"- Lancer le frontend React
cd dashboard/frontend
npm install
npm run dev| Service | URL | Identifiants |
|---|---|---|
| Dashboard React | http://localhost:5173 | - |
| Backend API | http://localhost:8000 | - |
| Airflow | http://localhost:8081 | admin / admin |
| MinIO | http://localhost:9001 | xdata / xdata123 |
| pgAdmin | http://localhost:5050 | admin@example.com / admin |
Paps/
├── airflow/ # Orchestration Airflow
│ └── dags/
│ └── paps_pipeline_dag.py
│
├── dashboard/ # Dashboard React + Backend
│ ├── backend/
│ │ └── app.py # API FastAPI
│ └── frontend/
│ ├── src/
│ │ ├── pages/ # Pages du dashboard
│ │ │ ├── Direction.jsx
│ │ │ ├── Livraison.jsx
│ │ │ ├── Finance.jsx
│ │ │ └── Livreurs.jsx
│ │ ├── components/ # Composants UI
│ │ └── hooks/ # Hooks personnalises
│ └── package.json
│
├── images/ # Captures d ecran
├── scripts/ # Scripts de generation
│ └── generate_paps_data.py
│
├── spark/ # Scripts Spark
│ └── jobs/
│ └── batch/
│ ├── paps_ingest_bronze.py
│ ├── paps_clean_silver.py
│ └── paps_gold.py
│
├── docker-compose.yml
└── README.md
Le script generate_paps_data.py genere 1 226 765 lignes de donnees coherentes avec l activite de Paps.
Lecture des donnees depuis PostgreSQL et ecriture dans la couche Bronze (Iceberg).
Nettoyage des donnees : suppression des doublons, correction des types, validation.
Creation du Star Schema (dimensions + faits) et calcul des KPIs.
- KPIs : CA, Livraisons, Taux de reussite, Clients actifs
- Evolution du CA par mois
- Livraisons par region
- Statut des livraisons
- Top 10 villes
- Livraisons du jour / semaine / retards
- Livraisons par jour
- Top 10 quartiers
- Temps moyen de livraison
- CA total, CA livraisons, Frais d expedition
- Evolution du CA mensuel
- CA par ville
- Methodes de paiement
- Nombre de livreurs, Livraisons par livreur
- Top 10 livreurs (Prenom + Nom)
- Temps moyen par livreur
- Performance par region (Heatmap)
Donnees de test : Le projet utilise des donnees generees artificiellement. Les donnees reelles de Paps sont confidentielles et non disponibles pour ce projet de demonstration.
Power BI : Ce projet est developpe sur Ubuntu. Power BI Desktop n est pas disponible sur Linux. La visualisation a donc ete realisee avec React pour garantir l accessibilite et l interactivite.
Dashboard : Le dashboard React est une version de demonstration. Il n est pas destine a la production mais a illustrer les concepts.
Integration Snowflake : Les donnees Gold seront exportees vers Snowflake pour beneficier d un Data Warehouse scalable et performant.
Dashboards Power BI : Une fois les donnees dans Snowflake, des dashboards Power BI professionnels seront crees pour la direction, la finance et les operations.
Donnees reelles : Le projet est conçu pour s adapter aux donnees reelles de Paps avec des ajustements mineurs du pipeline.
Monitoring : Mise en place de Grafana et Prometheus pour le suivi des performances.
- Email : kebeniako17@gmail.com
- GitHub : Niako
- Projet : paps-analytics
Ce projet est une demonstration technique realisee dans un cadre d apprentissage. Il ne reproduit ni les systemes internes, ni les donnees, ni l architecture reelle de Paps.
Paps Analytics - De la donnee brute a la decision











