Tableau de bord analytics multi-tenant avec mises à jour en temps réel via WebSocket — construit avec Django Channels, Angular et Redis.
⚠️ Le code source est privé (projet en développement actif). Ce dépôt documente l'architecture et les décisions de conception.
🔗 Démo en ligne → —demo@datapulse.app/Demo1234
Ce projet est né d'un besoin concret rencontré lors de mon travail chez Zion Teranga : avoir un tableau de bord centralisé pour suivre en temps réel les métriques des plateformes e-learning et de la marketplace (inscriptions, revenus, activité utilisateurs).
La stack Elasticsearch + Redis déjà en place pour la marketplace m'a permis de construire un pipeline analytics léger et réactif.
Les équipes manquent d'outils analytics simples qui :
- Affichent les données en temps réel sans recharger la page
- Fonctionnent avec les données locales (transactions Wave/OM, logs Moodle)
- Ne nécessitent pas de compétences data engineering
- Supportent plusieurs organisations avec isolation des données
DataPulse est un dashboard analytics multi-tenant où les équipes connectent leurs sources de données et visualisent leurs métriques en live via WebSocket.
┌─────────────────────────────────────────────────────────┐
│ Tableau de Bord Angular 17 (SPA) │
│ │
│ ┌──────────┐ ┌──────────┐ ┌───────────────────────┐ │
│ │Chart.js │ │AG Grid │ │ WebSocket live feed │ │
│ │Graphiques│ │Tableaux │ │ (temps réel) │ │
│ └──────────┘ └──────────┘ └───────────────────────┘ │
└────────────────────────┬────────────────────────────────┘
│ REST + WebSocket
┌────────────────────────▼────────────────────────────────┐
│ Django REST Framework │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ datasets │ │dashboards│ │ alertes │ │
│ │ingestion │ │ widgets │ │ (email) │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ ┌────────────────────────────────────────────────────┐ │
│ │ Django Channels (serveur WebSocket) │ │
│ └────────────────────────────────────────────────────┘ │
└──────────────┬──────────────────────────────────────────┘
│
┌─────────┴────────┐
│ │
┌────▼──────┐ ┌──────▼──────┐
│PostgreSQL │ │ Redis 7 │
│ données │ │ WebSocket │
│ analytics │ │ channels │
└───────────┘ └─────────────┘
Source externe (CSV / API / BDD)
│
▼
Endpoint d'ingestion API
│
▼
Tâche Celery async ──── normalisation + validation
│
▼
PostgreSQL
│
├──▶ REST API (requêtes à la demande)
│
└──▶ Celery beat (toutes les 30s) ──▶ Django Channels ──▶ WebSocket ──▶ Navigateur
| Fonctionnalité | Implémentation |
|---|---|
| Temps réel | Django Channels + Redis — rafraîchissement sub-seconde |
| Multi-tenant | Isolation par organisation |
| Rôles | Propriétaire → Admin → Analyste → Lecteur |
| Graphiques | Chart.js : courbes, barres, camembert, KPI cards |
| Alertes | Seuils configurables → email via Celery |
| Sources | CSV, API REST, connecteur PostgreSQL |
| Export | PDF + CSV pour tout widget ou dashboard |
| Couche | Technologie |
|---|---|
| Backend | Python 3.12, Django 4.2, DRF, Django Channels |
| Frontend | Angular 17, Chart.js, AG Grid, Bootstrap |
| Temps réel | Django Channels + Redis |
| Base de données | PostgreSQL 16 |
| File d'attente | Celery 5 + Redis |
| Auth | JWT + RBAC |
| Infrastructure | Docker, Nginx, GitHub Actions |
┌─────────────────────────────────────────────────────────────────┐
│ DataPulse │ Mes Dashboards │ Paramètres [Abdou N.] ▼ │
├─────────────────────────────────────────────────────────────────┤
│ Vue Revenus — Avril 2026 [+ Widget] [Partager] │
├──────────────────────┬──────────────────────┬───────────────────┤
│ Revenu Total │ Nouveaux Clients │ Panier Moyen │
│ 12 450 000 XOF ▲ │ 247 ▲ +12% │ 50 405 XOF │
│ +8,3% vs mois préc. │ ce mois │ +2,1% │
├──────────────────────┴──────────────────────┴───────────────────┤
│ [Graphique courbe : revenus par jour — 30 derniers jours] │
│ ████████████████████████████████████████████████ │
├─────────────────────────────────────────────────────────────────┤
│ Paiements │ Meilleures campagnes │
│ Wave: 68% ████ │ 1. Fonds École Dakar 2 100 000 XOF │
│ Orange Money: 22% ██ │ 2. Bootcamp Startup 1 850 000 XOF │
│ Autre: 10% █ │ 3. Clinique Santé 1 340 000 XOF │
└─────────────────────────────────────────────────────────────────┘
git clone https://github.com/Papabdou12/datapulse-analytics
cd datapulse-analytics
cp .env.example .env
make dev
# → http://localhost:4200Abdou Niang — Développeur Full Stack chez Zion Teranga
📧 abdouniang30@gmail.com · LinkedIn · GitHub
📍 Keur Massar, Dakar — disponible en remote