Skip to content

Nedim7050/data-pipeline-streaming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📊 Data Pipeline Streaming

Python Streamlit License GitHub

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.

👤 Auteur

Nedim Mejri
📧 GitHub Profile | 🚀 Repository


🎯 Vue d'ensemble

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

✨ Caractéristiques principales

  • ✅ 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

🚀 Démarrage Rapide

Option 1 : Version Simplifiée (Sans Docker) ⭐ RECOMMANDÉ

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

Le dashboard sera accessible sur http://localhost:8501

Option 2 : Version Complète (Avec Docker)

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

📊 Architecture

Le pipeline suit une architecture modulaire en plusieurs étapes :

┌─────────────┐     ┌──────────────┐     ┌─────────────┐     ┌─────────────┐
│  Producer   │────▶│  Kafka/JSONL │────▶│    ETL      │────▶│  Database   │
│  (Python)   │     │  (Queue)     │     │ (Airflow)   │     │ (Postgres/  │
│             │     │              │     │             │     │  SQLite)    │
└─────────────┘     └──────────────┘     └─────────────┘     └─────────────┘
                                                                      │
                                                                      ▼
                                                              ┌─────────────┐
                                                              │  Streamlit  │
                                                              │  Dashboard  │
                                                              └─────────────┘

Composants

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

📁 Structure du Projet

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)

🔧 Configuration

Variables d'environnement

# 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.db

📊 Fonctionnalités du Dashboard

Le 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

🌐 Déploiement

Déploiement sur Streamlit Cloud

Le projet est déjà disponible sur GitHub : Nedim7050/data-pipeline-streaming

  1. Aller sur Streamlit Cloud
  2. Se connecter avec GitHub
  3. Cliquer sur "New app"
  4. Configurer le déploiement :
    • Repository : Nedim7050/data-pipeline-streaming
    • Branch : main
    • Main file : streamlit_app.py
    • Python version : 3.11
  5. Cliquer sur "Deploy!"

📖 Voir DEPLOY.md ou GITHUB-DEPLOY.md pour plus de détails.


📚 Documentation


🛠️ Technologies Utilisées

  • 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

📊 Cas d'Usage

  • 🎓 É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

🤝 Contribution

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

📄 Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.


👤 Auteur

Nedim Mejri


⭐ Support

Si ce projet vous a été utile, n'hésitez pas à lui donner une ⭐ sur GitHub !


Fait avec ❤️ par Nedim Mejri

⬆ Retour en haut

About

Pipeline de données end-to-end pour le traitement en temps réel de transactions financières. Architecture complète avec Kafka, Airflow, PostgreSQL et dashboard Streamlit interactif. Version simplifiée disponible sans Docker.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors