Ka·Stats — l'explorateur de statistiques du Québec
www.ka-stats.com · Un service Groupe KA
Ka·Stats est l'observatoire de données de l'écosystème Groupe KA : un
serveur Node zéro dépendance qui agrège en direct les tableaux de bord
GET /api/stats/dashboard (contrat ka-stats v2) des 14 plateformes
publiques du groupe — Lou·Ka, Immo·Ka, House·Ka, Vrai-Prix, Auto·Ka, Job·Ka,
Food·Ka, Resto·Ka, Fabri·Ka, Sorti·Ka, Créa·Ka, Trouve·Ka, Rent·Ka, API·Ka —
et les rend explorables dans une seule interface : graphiques interactifs,
indicateurs du Québec par thème, comparateur base 100, studio d'indicateurs
sur mesure et palmarès des records.
Au moment d'écrire ces lignes, l'observatoire suit plus de 5,8 millions d'éléments (annonces, propriétés, produits, offres d'emploi, événements, créateurs, pages indexées…), 434 graphiques rendus depuis les dashboards satellites et un catalogue de 248 métriques combinables dans le Studio — le tout mis à jour en continu, sans base de données propre.
Identité visuelle : accent #095797 (le bleu officiel du Québec),
wordmark « Ka·Stats » dont le segment « Stats » est posé en boîte inversée
sur l'accent (le motif signature ka-ui), typographies Space Grotesk (titres) et
JetBrains Mono (chiffres), design system tokens.css de ka-ui vendorisé.
Sommaire
- Visite guidée
- Aperçu mobile & desktop
- Les 14 plateformes agrégées
- Pages & fonctionnalités
- Le contrat ka-stats v2 et son rendu générique
- QCharts — graphiques SVG maison
- API
- Architecture
- Structure du dépôt
- Exploitation & déploiement
- Développement remote-first
- Écosystème & contact
Visite guidée
Captures du 2026-08-28, prises sur le site en production (www.ka-stats.com) — desktop 1440×900, mobile 390×844.
1 · Vue d'ensemble — le pouls de l'écosystème

La page d'accueil (/) donne le pouls du Québec en un coup d'œil : total
d'éléments suivis, plateformes en direct, courbe de la somme quotidienne des
indicateurs principaux des 14 plateformes, grille des plateformes (chacune
avec son accent officiel, ses KPI et sa sparkline), prix du Québec en direct
et premiers records. Le sélecteur de période global (aujourd'hui → tout,
plus plage libre) est relayé à toutes les plateformes satellites. Le bouton
« ✦ Construire un indicateur sur mesure » mène directement au Studio.
2 · Indicateurs — les chiffres du Québec par thème

/indicateurs regroupe les chiffres du Québec par grand thème — habitation,
mobilité, emploi, consommation, culture, infrastructure : loyer moyen, prix
des propriétés, valeur foncière, prix des voitures usagées, salaires affichés,
prix d'épicerie… Chaque carte affiche la valeur en direct, son unité et son
delta (▲/▼ %) sur la période choisie, avec les graphiques associés en
deux colonnes sous chaque thème.
3 · Comparer — la croissance sur un seul axe

/comparer met jusqu'à 4 plateformes sur un seul axe en indice
base 100 (100 = début de période) : des univers aux unités hétérogènes
(annonces, produits, pages indexées…) deviennent directement comparables,
sans jamais recourir à une double échelle. Un mode « valeurs brutes » existe
mais affiche un avertissement — l'indice est la lecture recommandée.
4 · Studio — construisez votre indicateur sur mesure

/studio est le constructeur d'indicateurs : recherche floue parmi les
248 métriques du catalogue (14 plateformes), sélection de jusqu'à
4 métriques, transformations (valeurs brutes, indice 100, variation %
jour, moyenne mobile 7 j, cumul), combinaisons de 2 métriques (ratio
A ÷ B, écart A − B, somme A + B), choix du type de graphique (ligne, aire,
barres), titre personnalisé, enregistrement local de ses indicateurs et
lien partageable (/studio?c=…, la configuration complète encodée dans
l'URL). Chaque graphique du site propose d'ailleurs un bouton « Ouvrir dans
le Studio » pour repartir de n'importe quelle courbe.
5 · Palmarès — records et faits marquants

/palmares agrège les faits saillants détectés dans les données : jours
records de chaque plateforme, classement des plus fortes croissances
(variation de l'indicateur principal entre le début et la fin de la période)
et la grille de tous les records de l'écosystème.
6 · Fiche plateforme — le dashboard complet de Lou·Ka

/site/:id (ici /site/lou-ka) rend génériquement et intégralement le
contrat ka-stats v2 de la plateforme, aux couleurs de son accent officiel :
KPI + sparklines, jauges, séries temporelles (crosshair + infobulles +
comparaison à la période précédente), multi-courbes, aires empilées, anneaux,
histogrammes, répartitions géographiques, heatmaps calendrier et horaire,
tableaux triables/filtrables/paginés, records — et les liens vers les
5 rapports PDF générés par la plateforme elle-même.
7 · Fiche plateforme — Vrai-Prix, la valeur foncière en direct

/site/vrai-prix : même moteur de rendu, tout autre univers. Le dashboard de
Vrai-Prix (la valeur réelle de chaque propriété) s'affiche dans le rouge
signature de la plateforme — indicateurs fonciers, évolutions quotidiennes,
répartitions et records, avec le sélecteur de période et les exports CSV/PNG
sur chaque graphique. C'est la démonstration du contrat v2 : Ka·Stats ne
connaît pas Vrai-Prix en particulier, il rend ce que son dashboard déclare.
8 · Fiche plateforme — Trouve·Ka, le moteur de recherche québécois

/site/trouve-ka : le tableau de bord d'une plateforme d'infrastructure de
recherche — pages indexées, domaines couverts, activité d'indexation — rendu
en bleu Trouve·Ka. Les unités changent (pages, domaines), la mécanique reste
la même : KPI + sparklines, séries interactives, tableaux triables et records.
9 · Le pouls de l'écosystème — la somme quotidienne

La section « pouls » de l'accueil trace la somme quotidienne des indicateurs principaux des 14 plateformes (annonces + produits + offres + événements + créateurs + pages…) : une seule courbe qui raconte la croissance de tout l'écosystème, avec crosshair, infobulle, zoom par sélection et vue tableau jumelle — plus de 5,8 M d'éléments au dernier point.
10 · Mobile — l'observatoire dans la poche

La vue d'ensemble en 390 px : la SPA est entièrement responsive (socle mobile ka-ui — zones sûres, cibles tactiles, panneau de navigation plein écran), les graphiques SVG se recomposent à la largeur du téléphone et le sélecteur de période reste accessible en tête de page.
Aperçu mobile & desktop
Captures du 2026-08-25 (mobile 390×844 · desktop 1440×900).
Mobile
![]() Vue d'ensemble — l'observatoire de données |
![]() Indicateurs — les chiffres du Québec par thème |
![]() Nav v2 — panneau plein écran |
Desktop
![]() Vue d'ensemble — période ajustable (jour → tout) |
![]() Indicateurs — prix, salaires, loyers, volumes des plateformes KA |
![]() Comparer — métriques croisées entre plateformes |
![]() Palmarès — records et faits marquants détectés |
![]() Studio — construisez votre indicateur : 248 métriques, 14 plateformes, transformations (indice 100, variation, moyenne mobile, cumul), partage par lien |
|
Les 14 plateformes agrégées
Chaque plateforme expose GET /api/stats/dashboard (contrat ka-stats v2) ;
Ka·Stats les interroge en parallèle avec la période demandée. Les accents
proviennent de l'ecosystem.json de ka-ui.
| Plateforme | Domaine | Thème | Mission |
|---|---|---|---|
| Lou·Ka | www.lou-ka.com | habitation | Tous les logements à louer |
| Immo·Ka | www.immo-ka.com | habitation | Toutes les propriétés à vendre |
| House·Ka | www.house-ka.com | habitation | Maisons à vendre — Canada hors Québec (EN) |
| Vrai-Prix | www.vrai-prix.com | habitation | La valeur réelle de chaque propriété |
| Rent·Ka | www.rent-ka.com | habitation | Locations résidentielles — Canada hors Québec |
| Auto·Ka | www.auto-ka.com | mobilité | Les voitures usagées du Québec |
| Job·Ka | www.job-ka.com | emploi | Tous les emplois des employeurs québécois |
| Food·Ka | www.food-ka.com | consommation | Les prix d'épicerie, suivis à la source |
| Resto·Ka | www.resto-ka.com | consommation | Chaque resto, chaque plat, chaque prix |
| Fabri·Ka | www.fabri-ka.com | consommation | Les produits fabriqués au Québec |
| Sorti·Ka | www.sorti-ka.com | culture | Toutes les sorties, dans les 17 régions |
| Créa·Ka | www.crea-ka.com | culture | Les créateurs d'ici, tous leurs liens |
| Trouve·Ka | www.trouve-ka.com | culture | Le moteur de recherche du web québécois |
| API·Ka | www.api-ka.com | infrastructure | La donnée de l'écosystème, par API |
Pages & fonctionnalités
| Route | Page | Contenu |
|---|---|---|
/ |
Vue d'ensemble | Pouls de l'écosystème (somme quotidienne des indicateurs principaux), grille des 14 plateformes (accents officiels, KPI, sparklines), prix du Québec en direct, records, CTA vers le Studio |
/site/:id |
Fiche plateforme | Rendu générique complet du dashboard v2 de la plateforme + liens vers ses 5 rapports PDF (/api/stats/report?mode=… sur le domaine satellite) |
/indicateurs |
Indicateurs | Les chiffres du Québec par thème (habitation, mobilité, emploi, consommation, culture, infrastructure) avec deltas ▲/▼ % |
/comparer |
Comparateur | Jusqu'à 4 plateformes sur un seul axe, indice base 100 (mode brut disponible mais déconseillé — avertissement affiché) |
/studio |
Studio | Constructeur d'indicateurs : 248 métriques, transformations, combinaisons, types de graphique, sauvegarde locale, liens partageables |
/palmares |
Palmarès | Jours records, classement de croissance, grille des faits marquants |
Fonctions transversales :
- Sélecteur de période global —
auj / 7j / 30j / 3m / 6m / 12m / annee / tout+ plage librefrom/to(AAAA-MM-JJ), relayé tel quel aux satellites, persistant à travers les pages. - Routeur History API — SPA vanilla sans framework ; navigation interne
interceptée (
a[data-link]), scroll remis à zéro à chaque page. - Exports — chaque graphique offre CSV (données exactes) et PNG (rendu du SVG), plus « Ouvrir dans le Studio » pour les séries temporelles.
- Footer d'écosystème — avis d'agrégateur (« nous ne vendons rien, ne louons rien »), liens vers toutes les plateformes et Groupe-KA.com.
- Analytics maison — beacon
ka-a.jsd'administration-ka.com (__kaSite = "ka-stats"), trafic humain seulement.
Le contrat ka-stats v2 et son rendu générique
La fiche /site/:id ne connaît aucune plateforme en particulier : elle
rend ce que le dashboard v2 déclare, bloc par bloc. Types de blocs pris en
charge :
| Bloc v2 | Rendu Ka·Stats |
|---|---|
kpis[] |
Cartes KPI (valeur, unité, delta %) + sparkline si fournie |
gauges[] |
Jauges (arc SVG) |
series[] |
Séries temporelles — ligne/aire/barres commutables, courbe fantôme « période précédente » en tireté si compare est fourni |
multiseries[] |
Multi-courbes (≤ 4 sous-séries, motifs de trait distincts pour l'accessibilité) |
stacked[] |
Aires/barres empilées |
breakdowns[] |
Répartitions — barres horizontales ↔ anneau commutables |
histograms[] |
Histogrammes de distribution |
geo[] |
Répartitions géographiques (barres par région) |
heatmap_calendar / heatmap_hours |
Heatmaps calendrier (jour × semaine) et horaire (heure × jour) |
tables[] |
Tableaux triables, filtrables, paginés |
records[] |
Cartes de records / faits marquants |
L'enveloppe {success, data} propre à API·Ka est dépliée automatiquement
côté serveur — le front ne voit qu'un seul format.
QCharts — graphiques SVG maison
public/charts.js (~1 000 lignes) : bibliothèque de graphiques SVG
vanilla, zéro dépendance, conforme au design system ka-ui et aux règles
dataviz du groupe :
- marques fines (traits 2 px), grilles hairline, texte toujours en encre,
palette catégorielle validée en ordre fixe (
Q.CAT), rampes mono-teinte, motifs de trait (Q.DASHES) pour distinguer les séries sans dépendre de la couleur seule ; - crosshair + infobulle toutes-séries sur les lignes, infobulle par-marque sur barres et cellules ;
- zoom par sélection horizontale (glisser sur le graphique), bandeau de zoom avec bouton « Réinitialiser », double-clic = réinitialiser ;
- légende cliquable dès 2 séries pour masquer/afficher chaque série ;
- vue tableau jumelle sur chaque graphique (l'infobulle ne « garde » jamais une valeur : les données exactes sont toujours à un clic) ;
- exports CSV et PNG intégrés à la coquille de carte (
switchableChart), types commutables (ligne ↔ aire ↔ barres, barres ↔ anneau) ; - primitives :
sparkline,lineChart,vBarChart,hBarChart,donut,stackedBar,gauge,calendarHeatmap,hourHeatmap.
API
Toutes les routes acceptent ?period= (auj|7j|30j|3m|6m|12m|annee|tout,
défaut 30j) et, pour une plage libre, ?from=AAAA-MM-JJ&to=AAAA-MM-JJ.
| Route | Rôle |
|---|---|
GET /healthz (alias /api/health) |
Healthcheck : {ok, app, sites, uptime} |
GET /api/sites |
Les 14 plateformes (id, wordmark, domaine, accents, tagline, thème) |
GET /api/overview |
Agrégat global : totaux (éléments, plateformes en vie, graphiques), pouls quotidien, KPI et records par plateforme |
GET /api/dashboard/:id |
Dashboard v2 complet d'une plateforme (proxy avec cache ; stale: true si copie de secours) |
GET /api/catalog |
Catalogue des métriques combinables du Studio (248 refs : site|kpi|id, site|series|id, site|multi|id|i, site|stacked|id|i) |
GET /api/metric?refs=a,b,… |
Points normalisés de 1 à 4 métriques (label, unité, série {t,v}) — le moteur du Studio |
Exemple :
curl -s "https://www.ka-stats.com/api/overview?period=30j" | jq .totals
curl -s "https://www.ka-stats.com/api/metric?refs=lou-ka|kpi|active,food-ka|series|avg_price&period=12m"Architecture
navigateur ── SPA vanilla (app.js + charts.js + tokens.css)
│
server.mjs (Node ≥ 18, zéro dépendance, ~400 lignes)
│ statique + SSR des metas SEO + API agrégatrice
├── cache mémoire par (site, période) — TTL 10 min
├── cache disque data/cache.json (périodes standard seulement)
└── fan-out HTTPS parallèle vers les 14 satellites
https://<plateforme>/api/stats/dashboard?period=…- Zéro dépendance :
node:http,node:fs,node:path— pas denode_modules, pas de build, pas de base de données. - Cache 10 min + stale-while-error : chaque couple (site, période) est
mis en cache 10 minutes (mémoire + disque). Si un satellite est injoignable,
Ka·Stats sert la dernière bonne copie (marquée
stale: true) au lieu d'échouer ; les requêtes concurrentes vers un même satellite sont dédupliquées (map inflight). Les plages libres (from/to) ne sont jamais persistées sur disque (cardinalité illimitée). - SEO : SSR léger des metas — title/description/canonical/OpenGraph +
JSON-LD (schema.org) injectés par route dans
index.html(la SPA rend le contenu, le serveur rend les metas — même approche que les autres sites Ka).sitemap.xmletrobots.txtservis statiquement. Routes/site/:idtitrées dynamiquement d'après la plateforme. - Sécurité/robustesse : id de plateforme assaini (
[^a-z0-9-]retiré), périodes validées par liste blanche, dates par regex stricte ; en-têtesCache-Controldifférenciés (HTMLno-cache, assets 1 h).
Structure du dépôt
ka-stats/
├── server.mjs # serveur Node zéro-dép : statique + API + SEO SSR
├── package.json # aucune dépendance — script start seulement
├── public/
│ ├── index.html # coquille SPA (metas remplacées par le serveur)
│ ├── app.js # SPA vanilla : routeur, 6 pages, Studio, header/footer
│ ├── charts.js # QCharts — graphiques SVG maison (voir plus haut)
│ ├── styles.css # styles Ka·Stats (sur les tokens ka-ui)
│ ├── tokens.css # design system ka-ui vendorisé + accent #095797
│ ├── fonts/ # Space Grotesk + JetBrains Mono (auto-hébergées)
│ ├── favicon.svg · og.png · apple-touch-icon.png
│ └── sitemap.xml · robots.txt
├── data/
│ └── cache.json # cache disque (généré — ignoré par git)
└── docs/
└── screenshots/ # visite guidée (JPG) + mobile/ + desktop/ (webp)Exploitation & déploiement
node server.mjs 8140 # défaut 8140 — healthcheck : /healthz- Production : nœud M1M32 du cluster MacLustr,
~/apps/ka-stats, port 8140, sous PM2 (ka-statspour le serveur,ka-stats-ngrokpour le tunnel) → https://www.ka-stats.com. - PM2 est configuré en service de démarrage (launchd) : l'app survit aux redémarrages du nœud.
- Registre des déploiements du cluster :
~/Desktop/cluster-skill/cluster-deployments.json. - Aucune clé, aucun secret : Ka·Stats ne consomme que les endpoints publics des plateformes.
Développement remote-first
La source de vérité est le repo git sur le nœud de déploiement
(M1M32 ~/apps/ka-stats), pas une copie locale. Le remote origin est
spbgit, le serveur git personnel du groupe (bare repo
srv/git/ka-stats.git sur M3U96a, alias SSH gitsrv) — pas GitHub.
Cycle type : éditer sur le nœud via SSH → tester (curl localhost:8140/healthz)
→ pm2 restart ka-stats → git add/commit/push origin main sur le nœud
(agent forwarding actif). Référence complète du flux remote-first :
~/Desktop/cluster-skill/KA-REMOTE-DEV.md.
Écosystème & contact
Ka·Stats est l'observatoire transversal du Groupe KA, l'écosystème de plateformes de données du Québec (et, pour House·Ka et Rent·Ka, du Canada hors Québec). Avis : Groupe KA est un agrégateur de contenu — nous ne vendons rien, ne louons rien et ne sommes partie à aucune transaction ; les statistiques reflètent les données collectées par nos plateformes.
- Hub : https://www.groupe-ka.com
- Données par API : https://www.api-ka.com
- Auteur : Simon-Pierre Boucher · contact@spboucher.ai
© Groupe KA. Tous droits réservés.







