SPB Git forge

spb/ka-stats

Public
8commits 1branches 0releases
2.2 MBsize
maindefault branch
26 days agolast push
JavaScript 73.4% CSS 25.3% HTML 1.3%

Ajoute Rent·Ka (locations Canada hors Québec) — 13e plateforme de l'observatoire

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Simon-Pierre Boucher committed 27 days ago (Aug 28, 2026) parent 764cc03

5 changed files +13 −11

modified README.md +2 −2
@@ -3,7 +3,7 @@
3 3 **www.ka-stats.com** · Un service **Groupe KA**
4 4
5 5 Observatoire de données de l'écosystème : agrège en direct les dashboards
6 −`GET /api/stats/dashboard` (contrat **ka-stats v2**) des 12 plateformes
6 +`GET /api/stats/dashboard` (contrat **ka-stats v2**) des 13 plateformes
7 7 publiques (Lou·Ka, Immo·Ka, Vrai-Prix, Auto·Ka, Job·Ka, Food·Ka, Resto·Ka,
8 8 Fabri·Ka, Sorti·Ka, Créa·Ka, Trouve·Ka, API·Ka) et les rend explorables :
9 9
@@ -45,7 +45,7 @@ Fabri·Ka, Sorti·Ka, Créa·Ka, Trouve·Ka, API·Ka) et les rend explorables :
45 45 <td align="center"><img src="docs/screenshots/desktop/palmares.webp" width="420" alt="Palmarès"><br><sub><b>Palmarès — records et faits marquants détectés</b></sub></td>
46 46 </tr>
47 47 <tr>
48 − <td align="center" colspan="2"><img src="docs/screenshots/desktop/studio.webp" width="640" alt="Studio"><br><sub><b>Studio — construisez votre indicateur : 227 métriques, 12 plateformes, transformations (indice 100, variation, moyenne mobile, cumul), partage par lien</b></sub></td>
48 + <td align="center" colspan="2"><img src="docs/screenshots/desktop/studio.webp" width="640" alt="Studio"><br><sub><b>Studio — construisez votre indicateur : 227 métriques, 13 plateformes, transformations (indice 100, variation, moyenne mobile, cumul), partage par lien</b></sub></td>
49 49 </tr>
50 50 </table>
51 51
modified public/app.js +3 −3
@@ -766,7 +766,7 @@ async function pageStudio(root) {
766 766 h1.appendChild(document.createTextNode("Construisez votre "));
767 767 h1.appendChild(el("span", "hl", "indicateur"));
768 768 hc.appendChild(h1);
769 − hc.appendChild(el("p", "lead", "Choisissez jusqu'à 4 métriques parmi toutes celles des 12 plateformes, appliquez une transformation (indice 100, variation, moyenne mobile, cumul) ou combinez-les (ratio, écart), choisissez le type de graphique — puis enregistrez ou partagez votre indicateur."));
769 + hc.appendChild(el("p", "lead", "Choisissez jusqu'à 4 métriques parmi toutes celles des 13 plateformes, appliquez une transformation (indice 100, variation, moyenne mobile, cumul) ou combinez-les (ratio, écart), choisissez le type de graphique — puis enregistrez ou partagez votre indicateur."));
770 770 head.appendChild(hc);
771 771 root.appendChild(head);
772 772
@@ -1034,7 +1034,7 @@ function buildFooter() {
1034 1034 wm.appendChild(document.createTextNode("Ka·"));
1035 1035 wm.appendChild(el("span", "ka", "Stats"));
1036 1036 c.appendChild(wm);
1037 − c.appendChild(el("p", "desc", "Ka·Stats est l'observatoire de données du Groupe KA : les statistiques, tendances et palmarès des 12 plateformes de l'écosystème — habitation, mobilité, emploi, consommation, culture — mis à jour en continu."));
1037 + c.appendChild(el("p", "desc", "Ka·Stats est l'observatoire de données du Groupe KA : les statistiques, tendances et palmarès des 13 plateformes de l'écosystème — habitation, mobilité, emploi, consommation, culture — mis à jour en continu."));
1038 1038 const notice = el("p", "notice");
1039 1039 const nb = el("b", null, "Avis. ");
1040 1040 notice.appendChild(nb);
@@ -1128,4 +1128,4 @@ window.addEventListener("popstate", render);
1128 1128 render();
1129 1129 })();
1130 1130
1131 −;/*KA_ANALYTICS*/(function(){try{if(window.__kaAn)return;window.__kaAn=1;var k="KA_VID",v=localStorage.getItem(k);if(!v){v=Date.now().toString(36)+Math.random().toString(36).slice(2,8);localStorage.setItem(k,v);}var b=function(){var i=new Image();i.src="https://www.administration-ka.com/collect?site=ka-stats&vid="+v+"&p="+encodeURIComponent(location.pathname)+"&t="+Date.now();};b();setInterval(b,60000);}catch(e){}})();
1131 +;/*KA_ANALYTICS*/(function(){try{if(window.__kaAnL)return;window.__kaAnL=1;window.__kaSite="ka-stats";var s=document.createElement('script');s.async=1;s.src="https://www.administration-ka.com/ka-a.js";(document.head||document.documentElement).appendChild(s);}catch(e){}})();
modified public/index.html +2 −2
@@ -6,10 +6,10 @@
6 6 <meta charset="utf-8" />
7 7 <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
8 8 <title>Ka·Stats — L'explorateur de statistiques du Québec</title>
9 − <meta name="description" content="Loyers, propriétés, autos, emplois, épicerie, restos, sorties, créateurs : les statistiques vivantes du Québec, agrégées depuis les 12 plateformes du Groupe KA. Graphiques, tendances, palmarès et rapports PDF." />
9 + <meta name="description" content="Loyers, propriétés, autos, emplois, épicerie, restos, sorties, créateurs : les statistiques vivantes du Québec, agrégées depuis les 13 plateformes du Groupe KA. Graphiques, tendances, palmarès et rapports PDF." />
10 10 <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
11 11 <meta property="og:title" content="Ka·Stats — L'explorateur de statistiques du Québec" />
12 − <meta property="og:description" content="Les chiffres vivants du Québec : loyers, maisons, autos, emplois, épicerie et plus — agrégés des 12 plateformes du Groupe KA." />
12 + <meta property="og:description" content="Les chiffres vivants du Québec : loyers, maisons, autos, emplois, épicerie et plus — agrégés des 13 plateformes du Groupe KA." />
13 13 <meta property="og:type" content="website" />
14 14 <meta property="og:site_name" content="Ka·Stats" />
15 15 <meta property="og:locale" content="fr_CA" />
modified public/sitemap.xml +1 −0
@@ -17,4 +17,5 @@
17 17 <url><loc>https://www.ka-stats.com/site/crea-ka</loc><changefreq>hourly</changefreq><priority>0.9</priority></url>
18 18 <url><loc>https://www.ka-stats.com/site/trouve-ka</loc><changefreq>hourly</changefreq><priority>0.9</priority></url>
19 19 <url><loc>https://www.ka-stats.com/site/api-ka</loc><changefreq>hourly</changefreq><priority>0.9</priority></url>
20 + <url><loc>https://www.ka-stats.com/site/rent-ka</loc><changefreq>hourly</changefreq><priority>0.9</priority></url>
20 21 </urlset>
modified server.mjs +5 −4
@@ -21,7 +21,7 @@ const CACHE_FILE = path.join(DATA, "cache.json");
21 21 const TTL_MS = 10 * 60 * 1000; // 10 min par (site, période)
22 22 fs.mkdirSync(DATA, { recursive: true });
23 23
24 −/* ---- Les 12 plateformes publiques du Groupe KA (contrat ka-stats v2) ----
24 +/* ---- Les 13 plateformes publiques du Groupe KA (contrat ka-stats v2) ----
25 25 Accents = ecosystem.json de ka-ui (job-ka relevé sur le site). */
26 26 const SITES = [
27 27 { id: "lou-ka", wordmark: "Lou·Ka", domain: "www.lou-ka.com", accent: "#ff6a00", accentSoft: "#fff1e6", accentDeep: "#cc5500", onAccent: "#ffffff", tagline: "Tous les logements à louer", theme: "habitation" },
@@ -35,6 +35,7 @@ const SITES = [
35 35 { id: "sorti-ka", wordmark: "Sorti·Ka", domain: "www.sorti-ka.com", accent: "#d6336c", accentSoft: "#fbe0eb", accentDeep: "#a12551", onAccent: "#ffffff", tagline: "Toutes les sorties, dans les 17 régions", theme: "culture" },
36 36 { id: "crea-ka", wordmark: "Créa·Ka", domain: "www.crea-ka.com", accent: "#7048e8", accentSoft: "#ece5fc", accentDeep: "#5433b8", onAccent: "#ffffff", tagline: "Les créateurs d'ici, tous leurs liens", theme: "culture" },
37 37 { id: "trouve-ka", wordmark: "Trouve·Ka", domain: "www.trouve-ka.com", accent: "#1c7ed6", accentSoft: "#e7f2fd", accentDeep: "#14508f", onAccent: "#ffffff", tagline: "Le moteur de recherche du web québécois", theme: "culture" },
38 + { id: "rent-ka", wordmark: "Rent·Ka", domain: "www.rent-ka.com", accent: "#2456e6", accentSoft: "#e9efff", accentDeep: "#1738a8", onAccent: "#ffffff", tagline: "Locations résidentielles — Canada hors Québec", theme: "habitation" },
38 39 { id: "api-ka", wordmark: "API·Ka", domain: "www.api-ka.com", accent: "#3b5bdb", accentSoft: "#e4eafb", accentDeep: "#2b44a8", onAccent: "#ffffff", tagline: "La donnée de l'écosystème, par API", theme: "infrastructure" },
39 40 ];
40 41 const SITE_BY_ID = Object.fromEntries(SITES.map((s) => [s.id, s]));
@@ -192,7 +193,7 @@ async function getOverview(q) {
192 193 }
193 194
194 195 /* ---- Catalogue de métriques (pour le Studio d'indicateurs sur mesure) ----
195 − Aplati tout ce qui est traçable dans les 12 dashboards en références
196 + Aplati tout ce qui est traçable dans les 13 dashboards en références
196 197 adressables : site|kpi|<id> · site|series|<id> · site|multi|<id>|<i> ·
197 198 site|stacked|<id>|<i>. /api/catalog = métadonnées ; /api/metric = points. */
198 199 function catalogOf(siteId, d) {
@@ -283,7 +284,7 @@ const BASE_URL = "https://www.ka-stats.com";
283 284 const SEO_ROUTES = {
284 285 "/": {
285 286 title: "Ka·Stats — L'explorateur de statistiques du Québec",
286 − desc: "Loyers, propriétés, autos, emplois, épicerie, restos, sorties, créateurs : les statistiques vivantes du Québec, agrégées en direct depuis les 12 plateformes du Groupe KA. Graphiques interactifs, tendances, palmarès et rapports PDF.",
287 + desc: "Loyers, propriétés, autos, emplois, épicerie, restos, sorties, créateurs : les statistiques vivantes du Québec, agrégées en direct depuis les 13 plateformes du Groupe KA. Graphiques interactifs, tendances, palmarès et rapports PDF.",
287 288 },
288 289 "/indicateurs": {
289 290 title: "Les chiffres du Québec en direct — loyers, prix, salaires | Ka·Stats",
@@ -299,7 +300,7 @@ const SEO_ROUTES = {
299 300 },
300 301 "/palmares": {
301 302 title: "Palmarès & records des données du Québec | Ka·Stats",
302 − desc: "Jours records, plus fortes croissances et faits marquants détectés dans les données des 12 plateformes du Groupe KA : logements, propriétés, autos, emplois, épicerie, restos, sorties et plus.",
303 + desc: "Jours records, plus fortes croissances et faits marquants détectés dans les données des 13 plateformes du Groupe KA : logements, propriétés, autos, emplois, épicerie, restos, sorties et plus.",
303 304 },
304 305 };
305 306 function seoFor(pathname) {
306 307