Retour aux tutoriels

AnchorLancer votre premier dashboard BI en local (Metabase)

Ce tutoriel vous guide pour lancer une stack BI en local (Metabase + Postgres) et commencer à explorer des données immédiatement. On s’appuie sur le projet open source immoteur/webhooks-ingest-demo, qui fournit une petite API d’ingestion de webhooks et une configuration Metabase qui lit directement depuis la base de données.

Si vous souhaitez explorer le résultat avant de lancer quoi que ce soit en local, ouvrez la démo live.

Astuce : lancez make demo pour être en mode live (vraies données via smee.io). Si vous n’avez pas encore de source, make demo-with-seed injecte des événements d’exemple pour éviter des graphiques vides.

AnchorCe que vous allez construire

  • Une instance Metabase locale accessible dans votre navigateur.
  • Une base Postgres alimentée en événements webhook et en tables prêtes pour l’analyse.
  • Un premier dashboard que vous pouvez explorer, dupliquer et partager en local.

AnchorPrérequis

  • Docker + Docker Compose (v2)
  • Node.js 20+ (nécessaire pour les scripts de démo)
  • Git + Make
  • Des ports libres sur votre machine (par défaut : 8080, 3001, 15432)

AnchorLiens utiles

AnchorSchéma d'architecture

Rendering diagram...

AnchorGuide pas à pas

Anchor1) Cloner le projet de démo

git clone https://github.com/immoteur/webhooks-ingest-demo.git;
cd webhooks-ingest-demo;

Anchor2) Démarrer la stack (recommandé)

Lancez la stack Docker Compose en mode live (vraies données) avec les relais smee.io :

make demo;

Exemple de sortie :

[demo] Waiting for API at http://localhost:8080...
[+] Running 1/1
 ✔ Container webhooks_ingest_api                           Healthy   17.6s
 
[demo] Ready (live mode, no seed):
- API:      http://localhost:8080
- Metabase: http://localhost:3001
- Metabase admin: [email protected] / DemoAdmin!2025ChangeMe
- Metabase public dashboard: http://localhost:3001/public/dashboard/16b57a07-9831-4ec9-b927-b6207d3eaa31
 
[demo] smee relays (send webhooks here):
- classified-notification: https://smee.io/classified-notification-3o41g78qykci2otd
- classifieds-export:      https://smee.io/classifieds-export-holes6hi6y85rx31

Ce que cela fait pour vous :

  • crée .env à partir de .env.example si nécessaire
  • démarre Postgres + l’API d’ingestion + Metabase
  • bootstrap Metabase (admin + connexion à la base)
  • génère et démarre 2 relais smee.io (un par endpoint webhook)
  • affiche les URLs et identifiants (dont une URL de dashboard Metabase public)

Les identifiants admin Metabase viennent aussi de .env (valeurs par défaut de la démo) :

Anchor3) Ouvrir Metabase et vérifier le dashboard

  1. Ouvrez http://localhost:3001
  2. Connectez-vous avec METABASE_ADMIN_EMAIL / METABASE_ADMIN_PASSWORD
  3. Ouvrez le dashboard de démo (ou l’URL de dashboard public affichée par make demo)
Écran de connexion Metabase
Connectez-vous à Metabase avec les identifiants admin de .env.
Dashboard Metabase de démo
Le projet bootstrape un dashboard prêt à être exploré.

Anchor4) Explorer le modèle de données (votre premier dataset BI)

Dans Metabase, vous devriez voir des tables comme :

  • webhook_events : journal d’ingestion des webhooks reçus (avec rétention)
  • classifieds : lignes aplaties issues des payloads Immoteur (classified-notification / classifieds-export)
  • classified_images : une ligne par image (liée à classifieds)
  • classified_price_history : une ligne par changement de prix (liée à classifieds)

Essayez une première question via l’éditeur SQL de Metabase :

select count(*) as events from webhook_events;

Anchor5) Recevoir des événements réels (ou envoyer des payloads d’exemple)

Puis dans Metabase :

  • relancez la question ou rafraîchissez le dashboard
  • vérifiez que le compteur webhook_events a augmenté

Anchor6) Arrêter (ou réinitialiser) la démo

Pour arrêter les conteneurs (en gardant les données) :

make stack-down-smee;

Pour tout remettre à zéro (supprime les volumes Docker) :

make stack-reset-smee;

AnchorConclusion

Vous avez maintenant une stack BI locale fonctionnelle : une API d’ingestion qui écrit dans Postgres, et Metabase qui lit la base pour alimenter des dashboards. Prochaine étape : créez votre propre question (par exemple “événements par heure”), ajoutez-la à un dashboard, puis branchez les endpoints webhook sur une source réelle quand vous serez prêt.

AnchorDetails et troubleshooting