Pipeline de données de bout-en-bout pour la génération, l'ingestion, la transformation et la visualisation de transactions financières synthétiques en temps réel.
Nedim Mejri
📧 GitHub Profile | 🚀 Repository
Ce projet implémente un pipeline de données complet (end-to-end) qui simule le traitement de transactions financières en temps réel. Il démontre les concepts modernes de traitement de données avec :
- 🔄 Génération de données : Transactions financières synthétiques réalistes
- 📥 Ingestion : Kafka ou fichiers JSONL
- 🔧 Transformation ETL : Apache Airflow ou scripts Python
- 💾 Stockage : PostgreSQL ou SQLite
- 📊 Visualisation : Dashboard Streamlit interactif
- ✅ Architecture modulaire et extensible
- ✅ Support Docker pour déploiement facile
- ✅ Version simplifiée sans Docker (SQLite)
- ✅ Dashboard interactif avec filtres avancés
- ✅ Export des données (CSV)
- ✅ Documentation complète et guides détaillés
Parfait pour démarrer rapidement sans configuration complexe.
# 1. Installer les dépendances
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements-simple.txt
# 2. Créer la base de données et générer des données
python create_database.py
# 3. Lancer le dashboard
streamlit run dashboard_working.pyLe dashboard sera accessible sur http://localhost:8501
Pour une architecture complète avec Kafka, Airflow et PostgreSQL.
# 1. Démarrer l'écosystème (Kafka, Zookeeper, Airflow, Postgres)
docker compose up -d
# 2. Accéder à l'interface Airflow (http://localhost:8080)
# Activer le DAG 'transactions_etl'
# 3. Produire des événements
python producer/producer.py --rows 10000 --rate 100
# 4. Visualiser dans le dashboard
streamlit run analytics/streamlit_dashboard.pyLe pipeline suit une architecture modulaire en plusieurs étapes :
┌─────────────┐ ┌──────────────┐ ┌─────────────┐ ┌─────────────┐
│ Producer │────▶│ Kafka/JSONL │────▶│ ETL │────▶│ Database │
│ (Python) │ │ (Queue) │ │ (Airflow) │ │ (Postgres/ │
│ │ │ │ │ │ │ SQLite) │
└─────────────┘ └──────────────┘ └─────────────┘ └─────────────┘
│
▼
┌─────────────┐
│ Streamlit │
│ Dashboard │
└─────────────┘
| Composant | Description | Technologie |
|---|---|---|
| Producteur | Génère des transactions synthétiques | Python |
| Queue | Système de messagerie distribué | Kafka / JSONL |
| ETL | Transformation et chargement des données | Airflow / Python |
| Base de données | Stockage structuré | PostgreSQL / SQLite |
| Dashboard | Visualisation interactive | Streamlit |
data-pipeline-streaming/
├── producer/ # Générateur de transactions synthétiques
│ ├── producer.py # Producteur Kafka
│ └── producer_to_file.py # Producteur fichier JSONL
├── consumers/ # Consumers Kafka → Database
│ ├── kafka_to_postgres.py
│ └── file_queue_to_sqlite.py
├── airflow_dags/ # DAGs Apache Airflow
│ └── etl_dag.py
├── analytics/ # Dashboards Streamlit
│ ├── streamlit_dashboard.py
│ └── streamlit_dashboard_sqlite.py
├── scripts/ # Scripts utilitaires
├── sql/ # Schémas de base de données
├── docker/ # Configuration Docker
├── notebooks/ # Notebooks d'exploration
├── create_database.py # Script de création de base de données
├── dashboard_working.py # Dashboard Streamlit principal
├── streamlit_app.py # App Streamlit pour Cloud
├── requirements.txt # Dépendances (version complète)
└── requirements-simple.txt # Dépendances (version simplifiée)
# Kafka
KAFKA_BOOTSTRAP_SERVER=localhost:29092
KAFKA_TOPIC=transactions
# PostgreSQL (version complète)
POSTGRES_CONN_URI=postgresql+psycopg2://airflow:airflow@localhost:5432/transactions
# SQLite (version simplifiée)
SQLITE_DB_PATH=data/transactions.dbLe dashboard Streamlit offre :
- 📈 Métriques en temps réel : Montants, transactions, statistiques
- 📊 Graphiques interactifs : Visualisations des données
- 🔍 Filtres avancés : Catégorie, ville, statut, montant, date
- 📥 Export CSV : Export des données pour analyse externe
- 🎨 Interface intuitive : Design moderne et responsive
✅ Le projet est déjà disponible sur GitHub : Nedim7050/data-pipeline-streaming
- Aller sur Streamlit Cloud
- Se connecter avec GitHub
- Cliquer sur "New app"
- Configurer le déploiement :
- Repository :
Nedim7050/data-pipeline-streaming - Branch :
main - Main file :
streamlit_app.py - Python version :
3.11
- Repository :
- Cliquer sur "Deploy!"
📖 Voir DEPLOY.md ou GITHUB-DEPLOY.md pour plus de détails.
- 📖 PRESENTATION.md - Présentation complète du projet, objectifs et cas d'usage
- ⚡ QUICKSTART.md - Guide de démarrage rapide
- 📊 GUIDE-ANALYSE-NOUVELLE-BD.md - Guide pour analyser une nouvelle base de données
- 🚀 DEPLOY.md - Guide de déploiement détaillé
- 🌐 GITHUB-DEPLOY.md - Guide complet GitHub et Streamlit Cloud
- 🎯 START-HERE.md - Guide de démarrage pour débutants
- ✨ AMELIORATIONS-PROJET.md - Améliorations et fonctionnalités futures
- Python 3.11 - Langage principal
- Streamlit - Dashboard interactif
- Apache Kafka - Système de messagerie distribué
- Apache Airflow - Orchestration de workflows
- PostgreSQL - Base de données relationnelle
- SQLite - Base de données légère
- Docker - Containerisation
- Pandas - Manipulation de données
- Plotly - Visualisations interactives
- 🎓 Étudiants : Apprendre les concepts de pipelines de données
- 💼 Développeurs : Prototyper des systèmes de traitement de données
- 🏢 Entreprises : Démonstration de concepts de data engineering
- 📚 Formateurs : Matériel pédagogique pour cours de données
Les contributions sont les bienvenues ! N'hésitez pas à :
- 🐛 Signaler des bugs
- 💡 Proposer de nouvelles fonctionnalités
- 📝 Améliorer la documentation
- 🔧 Soumettre des pull requests
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Nedim Mejri
- 🌐 GitHub : @Nedim7050
- 📦 Repository : data-pipeline-streaming
Si ce projet vous a été utile, n'hésitez pas à lui donner une ⭐ sur GitHub !
Fait avec ❤️ par Nedim Mejri