Skip to content

About

Dashboard analytics SaaS temps réel multi-tenant — Django Channels · Angular · Redis

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

DataPulse — Dashboard Analytics Temps Réel

Tableau de bord analytics multi-tenant avec mises à jour en temps réel via WebSocket — construit avec Django Channels, Angular et Redis.

CI Python Angular Licence

⚠️ 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


Contexte

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.


Le Problème

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

La Solution

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.


Architecture

┌─────────────────────────────────────────────────────────┐
│              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   │
└───────────┘    └─────────────┘

Flux de Données

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és

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

Stack Technique

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

Aperçu

┌─────────────────────────────────────────────────────────────────┐
│  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 │
└─────────────────────────────────────────────────────────────────┘

Démarrage Rapide

git clone https://github.com/Papabdou12/datapulse-analytics
cd datapulse-analytics
cp .env.example .env
make dev
# → http://localhost:4200

Auteur

Abdou Niang — Développeur Full Stack chez Zion Teranga
📧 abdouniang30@gmail.com · LinkedIn · GitHub
📍 Keur Massar, Dakar — disponible en remote

About

Dashboard analytics SaaS temps réel multi-tenant — Django Channels · Angular · Redis

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages