SPB Git forge

spb/lou-ka

Public

Lou·Ka — tous les logements à louer du Québec, un seul endroit.

232commits 1branches 0releases
172.9 MBsize
maindefault branch
2 days agolast push
HTML 98.9% Python 0.6%

docs: README ultra détaillé + visite guidée en 10 captures

Simon-Pierre Boucher committed 27 days ago (Aug 29, 2026) parent a4ef788

11 changed files +40 −9

modified README.md +40 −9
@@ -45,7 +45,9 @@
45 45
46 46 Chercher un appartement au Québec, c'est ouvrir des dizaines de sites différents — chacun avec sa navigation, ses filtres, son format. **Lou·Ka retourne le problème** : un **connecteur dédié par gestionnaire immobilier** visite chaque site, **normalise chaque annonce** vers un schéma unique et **détecte les changements en continu** (synchronisation périodique + hash de contenu → ajouts, mises à jour et retraits automatiques ; une annonce disparue répond `410 Gone`). Chaque fiche renvoie vers l'annonce originale du gestionnaire via une passerelle de sortie transparente (`/passerelle/{uid}`).
47 47
48 −Pour qui ? Les locataires qui cherchent (recherche filtrée, carte 3D, fiches complètes), les curieux du marché (observatoire des loyers, rapports PDF) et les gestionnaires (pages réclamables). **En chiffres (au 2026-08-24)** : 45 762 annonces actives publiées, 281 sources recensées, 250 connecteurs (221 location long terme + 29 court terme), 1 233 villes, 11 régions, 97,4 % des annonces géolocalisées, loyer médian 1 700 $ — plus **41 460 séjours court terme** (chalets, Airbnb…) dans la section `/court-terme`.
48 +Pour qui ? Les locataires qui cherchent (recherche filtrée, carte 3D, fiches complètes), les curieux du marché (observatoire des loyers, rapports PDF) et les gestionnaires (pages réclamables). **En chiffres (au 2026-08-28)** : 47 827 annonces actives publiées, 302 sources actives (503 recensées dans le registre), 431 connecteurs (384 location long terme + 47 court terme), plus de 1 200 villes, 11 régions, KA Scores calculés sur 96,1 % du parc, loyer moyen 1 811 $ — plus **52 440 séjours court terme** (chalets, hôtels, Airbnb…) dans la section `/court-terme` (47 sources actives, 36 régions).
49 +
50 +**Identité** : accent orange `#ff6a00`, logo « porte » (la porte d'entrée du prochain chez-soi), signature « **Un service Groupe KA** » au pied de chaque page — design system partagé `ka-ui` (tokens, accents et footer centralisés via `ecosystem.json`).
49 51
50 52 ## Visite guidée
51 53
@@ -87,6 +89,33 @@ Pour qui ? Les locataires qui cherchent (recherche filtrée, carte 3D, fiches co
87 89 </tr>
88 90 </table>
89 91
92 +### Le site page par page (2026-08-28)
93 +
94 +*Dix captures pleine page (desktop) qui parcourent le site publié — de l'accueil aux pages légales, en passant par les pages SEO et le registre des sources. Fichiers dans [`docs/screenshots/`](docs/screenshots/).*
95 +
96 +<table>
97 + <tr>
98 + <td align="center"><img src="docs/screenshots/01-accueil.jpg" width="420" alt="Accueil — lou-ka.com"><br><sub><b>Accueil</b> (<code>/</code>) — héro typographique, recherche soulignée, compteurs live du parc (annonces, sources, villes) et entrées rapides vers les grandes villes</sub></td>
99 + <td align="center"><img src="docs/screenshots/02-villes.jpg" width="420" alt="Répertoire des villes"><br><sub><b>Répertoire des villes</b> (<code>/villes</code>) — l'index SEO complet : chaque ville du Québec couverte, avec son compte d'annonces, menant aux pages <code>/ville/{slug}</code></sub></td>
100 + </tr>
101 + <tr>
102 + <td align="center"><img src="docs/screenshots/03-court-terme.jpg" width="420" alt="Location court terme"><br><sub><b>Location court terme</b> (<code>/court-terme</code>) — la section séjours (chalets, hôtels, Airbnb, Vrbo, SÉPAQ…) : 52 440 fiches, 47 sources, 36 régions, DA éditoriale alignée sur l'accueil</sub></td>
103 + <td align="center"><img src="docs/screenshots/04-stats.jpg" width="420" alt="Observatoire des loyers"><br><sub><b>Observatoire du marché</b> (<code>/stats</code>) — KPI temps réel, loyers médians par région/ville/taille, panneaux territoire et rapports PDF téléchargeables</sub></td>
104 + </tr>
105 + <tr>
106 + <td align="center"><img src="docs/screenshots/05-sources.jpg" width="420" alt="Registre des sources"><br><sub><b>Registre des sources</b> (<code>/sources</code>) — la transparence du pipeline : chaque gestionnaire connecté, son statut et sa dernière synchronisation</sub></td>
107 + <td align="center"><img src="docs/screenshots/06-demenageurs.jpg" width="420" alt="Annuaire des déménageurs"><br><sub><b>Annuaire des déménageurs</b> (<code>/demenageurs</code>) — 565 entreprises de déménagement du Québec, annuaire partagé avec Immo·Ka</sub></td>
108 + </tr>
109 + <tr>
110 + <td align="center"><img src="docs/screenshots/07-confidentialite.jpg" width="420" alt="Politique de confidentialité"><br><sub><b>Politique de confidentialité</b> (<code>/confidentialite</code>) — données collectées, cookies, comptes KA ID : la page légale en français clair</sub></td>
111 + <td align="center"><img src="docs/screenshots/08-conditions.jpg" width="420" alt="Conditions d'utilisation"><br><sub><b>Conditions d'utilisation</b> (<code>/conditions</code>) — rôle d'agrégateur indépendant, passerelle de sortie vers les annonces originales, limites de responsabilité</sub></td>
112 + </tr>
113 + <tr>
114 + <td align="center"><img src="docs/screenshots/09-g-aalto.jpg" width="420" alt="Page gestionnaire Aalto"><br><sub><b>Page gestionnaire</b> (<code>/g/aalto</code>) — la vitrine réclamable d'un gestionnaire immobilier : ses annonces actives, ses statistiques et le lien vers son site</sub></td>
115 + <td align="center"><img src="docs/screenshots/10-ville-montreal.jpg" width="420" alt="Page ville Montréal"><br><sub><b>Page ville</b> (<code>/ville/montreal</code>) — page SEO en SSR léger : loyers médians locaux, filtres par type (3½, 4½…) et annonces de la ville</sub></td>
116 + </tr>
117 +</table>
118 +
90 119 ### Nouveautés front-end (2026-08-25)
91 120
92 121 - **Refonte éditoriale v2** — accueil et fiche logement en DA premium « sans boîtes » : héro typographique géant, compteurs live en phrase, recherche soulignée, grille magazine, sections à filets et icônes contextuelles.
@@ -117,12 +146,12 @@ Pour qui ? Les locataires qui cherchent (recherche filtrée, carte 3D, fiches co
117 146 - **Recherche filtrée** — ville, quartier, type (3½, 4½…), loyer min/max, animaux, meublé, superficie, texte libre.
118 147 - **Vue carte 3D** — Lou-Ka Maps (framework `@groupe-ka/ka-maps`, moteur Mapbox GL JS) : clusters par prix moyen, « Rechercher dans cette zone », bascule 3D/2D, synchro liste ↔ carte.
119 148 - **Fiches complètes** — toutes les photos, digest structuré de la description (text mining regex FR, aucun LLM), badge marché, historique de prix (`price_log`), fiche PDF avec QR code.
120 −- **Couches de données de quartier** — recensement 2021, registre des loyers (57 433 déclarations géocodées), inondation (BDZI), criminalité (SPVM, 12 mois par catégorie), qualité de l'air (RSQAQ/PST), prix de l'essence, commerces et transport en commun (métro/REM aux couleurs officielles), estimation Hydro-Québec live, **KA Scores** (95,5 % du parc couvert au 2026-08-24).
121 −- **Location court terme** — section isolée `/court-terme` (sous-système `louka/shortterm/`, API `/api/ct/*`) : chalets, Airbnb (quadrillage carte quadtree limité à la frontière du Québec), Vrbo, Booking… 41 460 séjours, 22 sources actives sur 38 recensées, 27 régions (au 2026-08-24) ; SEO complet (JSON-LD `VacationRental`, sitemaps `sitemap-ct-N.xml`).
149 +- **Couches de données de quartier** — recensement 2021, registre des loyers (57 433 déclarations géocodées), inondation (BDZI), criminalité (SPVM, 12 mois par catégorie), qualité de l'air (RSQAQ/PST), prix de l'essence, commerces et transport en commun (métro/REM aux couleurs officielles), estimation Hydro-Québec live, **KA Scores** (96,1 % du parc couvert au 2026-08-28).
150 +- **Location court terme** — section isolée `/court-terme` (sous-système `louka/shortterm/`, API `/api/ct/*`) : chalets, Airbnb (quadrillage carte quadtree limité à la frontière du Québec), Vrbo, Booking… 52 440 séjours, 47 sources actives, 36 régions (au 2026-08-28) ; SEO complet (JSON-LD `VacationRental`, sitemaps `sitemap-ct-N.xml`).
122 151 - **Pages villes SEO** — `/villes`, `/ville/{slug}`, `/ville/{slug}/{type}` en SSR léger, sitemaps dynamiques (chunks de 10 000), JSON-LD (`RealEstateListing` + `Offer` CAD), vrais `404`/`410`.
123 152 - **Observatoire du marché** — KPI temps réel, loyers médians par région/ville/taille, panneaux territoire (registre des loyers, population, essence), rapport de marché PDF multi-pages (`/api/stats/rapport.pdf`) et rapports PDF personnalisés (catalogue + `ReportBuilder`).
124 −- **Registre des sources** — chaque gestionnaire, son statut, sa dernière synchro ; toute source non connectable est documentée avec sa raison dans `data/sources.json` (281 entrées recensées).
125 −- **Qualité éditoriale** — porte de pertinence (quarantaine des stationnements, garages, locaux commerciaux, locations à la nuit) : 59 668 annonces publiées / 1 175 en quarantaine, complétude moyenne 91,4 % (au 2026-08-24).
153 +- **Registre des sources** — chaque gestionnaire, son statut, sa dernière synchro ; toute source non connectable est documentée avec sa raison dans `data/sources.json` (503 entrées recensées).
154 +- **Qualité éditoriale** — porte de pertinence (quarantaine des stationnements, garages, locaux commerciaux, locations à la nuit) : 62 171 annonces publiées / 6 754 en quarantaine, complétude moyenne 90,5 % (au 2026-08-28).
126 155 - **Comptes & SSO KA** — « Se connecter avec KA » via le hub groupe-ka.com (JWT HS256, `ka_id` émis par le hub) + Google OAuth direct ; favoris synchronisés vers « Mon univers Ka » ; pages gestionnaires réclamables (`/g/{source_id}`).
127 156 - **Widget KA Agent** — bulle de chat IA du Groupe KA intégrée au site (déplaçable, position mémorisée).
128 157 - **PWA installable** + app iOS SwiftUI 100 % native (dépôt séparé `lou-ka-ios` sur spbgit).
@@ -166,7 +195,7 @@ Pipeline : **connecteurs → normalisation → déduplication → SQLite → API
166 195
167 196 - **Backend Python 3.14 / FastAPI / Uvicorn** (`louka/web.py`) : API JSON + service du build Vite + SSR SEO (`louka/seo.py`).
168 197 - **SQLite (WAL)** (`louka/db.py`) : migrations auto, upsert par hash de contenu, anti-dérive ; bases annexes dans `data/` (quartier, air, gaz, hydro, commerces, inondation…).
169 −- **250 connecteurs** auto-découverts : 221 long terme (`louka/connectors/`) + 29 court terme (`louka/shortterm/connectors/`), extraction directe / Firecrawl / Scrapfly / Bright Data / acteurs Apify maison selon la source.
198 +- **431 connecteurs** auto-découverts : 384 long terme (`louka/connectors/`) + 47 court terme (`louka/shortterm/connectors/`), extraction directe / Scrapfly / Bright Data / acteurs Apify maison selon la source (les 6 connecteurs à rendu JS ont migré de Firecrawl vers Scrapfly le 2026-08-27).
170 199 - **Enrichissement** : géocodage (Nominatim + Adresses Québec), POI OSM, stats de quartier, KA Scores, estimation Hydro-Québec.
171 200 - **Frontend React 18 + Vite + TypeScript** (`frontend/`), cartographie `@groupe-ka/ka-maps` (Mapbox GL).
172 201 - **CLI `run.py`** : `sync` · `watch` · `sync-ct` · `watch-ct` · `serve` · `geocode` · `quality` · `imgaudit` · `fairvalue` · `poi` · `quartier` · `kascores` · `rdl` · `air-refresh` · `gaz-refresh` · `hydro-precompute` · `record` (fixtures HTTP pour tests hors-ligne).
@@ -231,10 +260,10 @@ Aucun secret dans le repo — tout passe par l'environnement du nœud. Noms atte
231 260 lou-ka/
232 261 ├── run.py # point d'entrée CLI (sync / watch / sync-ct / watch-ct / serve / geocode / poi / quartier / record)
233 262 ├── louka/ # paquet backend : web, seo, db, ingest, normalize, textmine, auth, kascores…
234 −│ ├── connectors/ # 221 connecteurs long terme auto-découverts
235 −│ └── shortterm/ # sous-système court terme isolé (db, ingest, web + 29 connecteurs)
263 +│ ├── connectors/ # 384 connecteurs long terme auto-découverts
264 +│ └── shortterm/ # sous-système court terme isolé (db, ingest, web + 47 connecteurs)
236 265 ├── frontend/ # React 18 + Vite + TypeScript (pages, composants, kamaps/) + public/doc/ (guide)
237 −├── data/ # sources.json (registre, 281 entrées) + bases SQLite de prod (gitignorées)
266 +├── data/ # sources.json (registre, 503 entrées) + bases SQLite de prod (gitignorées)
238 267 ├── scripts/ # build recensement/contexte/environnement, docs connecteurs, screenshots, check-order
239 268 ├── tests/ # pytest + fixtures HTTP rejouables hors-ligne
240 269 ├── actors/ # acteurs Apify d'appoint (ka-fb-marketplace, ka-apartments-com…)
@@ -255,6 +284,8 @@ Repère des jalons (128 commits depuis la naissance) :
255 284 | 2026-08-22→23 | section « Location court terme » : sous-système isolé, Airbnb en quadrillage carte, 38 sources recensées, SEO complet (`38b708b`, `5c571bc`, `63456a0`) |
256 285 | 2026-08-23 | couches de quartier : registre des loyers (57 433 déclarations), inondation BDZI, criminalité SPVM, air, essence, commerces/transport, estimation Hydro-Québec live + rapports PDF personnalisés (`604455e` → `4d17c17`, `834c92c`) |
257 286 | 2026-08-24 | page documentation `/doc` + guide PDF + README v2/v3 (`963ba8f`, `4fa8714`) |
287 +| 2026-08-27 | expansion Ontario suspendue (rien d'effacé, voir `docs/ONTARIO-PAUSE.md`) + migration Firecrawl → Scrapfly des 6 connecteurs à rendu JS (`54f25fd`, `a4ef788`) |
288 +| 2026-08-28 | visite guidée « page par page » : 10 captures pleine page du site publié dans `docs/screenshots/` |
258 289
259 290 ## Documentation
260 291
added docs/screenshots/01-accueil.jpg +0 −0

Binary file not shown.

added docs/screenshots/02-villes.jpg +0 −0

Binary file not shown.

added docs/screenshots/03-court-terme.jpg +0 −0

Binary file not shown.

added docs/screenshots/04-stats.jpg +0 −0

Binary file not shown.

added docs/screenshots/05-sources.jpg +0 −0

Binary file not shown.

added docs/screenshots/06-demenageurs.jpg +0 −0

Binary file not shown.

added docs/screenshots/07-confidentialite.jpg +0 −0

Binary file not shown.

added docs/screenshots/08-conditions.jpg +0 −0

Binary file not shown.

added docs/screenshots/09-g-aalto.jpg +0 −0

Binary file not shown.

added docs/screenshots/10-ville-montreal.jpg +0 −0

Binary file not shown.