Lou·Ka — tous les logements à louer du Québec, un seul endroit.
HTML 98.9%
Python 0.6%
-
Mon, Aug 24, 2026 1
-
feat(tal): historique du Tribunal administratif du logement par adresse
…
Décisions publiques du TAL (diffusées par SOQUIJ) croisées avec l'adresse de chaque annonce : recherche « no civique + rue » via Scrapfly (le site exige rendu JS + IP résidentielle ; pas de phrases entre guillemets), puis vérification de l'adresse exacte dans le texte intégral et classification (non-paiement, résiliation, expulsion, reprise/éviction, insalubrité…, demande du locateur vs du locataire, verdict). Cache par adresse dans data/tal.db, backfill borné dans la boucle watch + file prioritaire alimentée par les fiches consultées (/api/tal), bloc « Historique au TAL » sur la fiche (aucun nom de partie affiché — référence neutre + lien SOQUIJ). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
-
Sun, Aug 23, 2026 6
-
Fiche : estimation du coût d electricite Hydro-Quebec (a la demande)
…
- louka/hydro.py : parcours PUBLIC rétro-conçu de l outil « Estimer les coûts d électricité à une résidence » — 2 étapes (lieu-consommation -> estimation) sur services-cl.solutions.hydroquebec.com, jeton reCAPTCHA v2 via solveur enfichable (2captcha/CapSolver, clé HQ_CAPTCHA_KEY), sortie par proxy résidentiel CA (Oxylabs/Bright Data), cache 6 mois data/hydro.db ; sans clé captcha -> {disponible:false} et bloc masqué (jamais d estimation inventée) - GET /api/hydro?adresse= ; bloc fiche à la demande (bouton, 1 captcha/appel) affichant le coût mensuel et annuel estimés Activation : définir HQ_CAPTCHA_KEY (+ HQ_CAPTCHA_PROVIDER) dans .env. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
Cartes : lignes de métro/REM aux couleurs officielles + transit hors ligne
…
- MetroLignes.tsx : couche Ka Maps (useKaMap) qui trace metro-lignes.geojson (lignes verte/orange/jaune/bleue + REM, extraites d OSM avec leurs couleurs officielles, liseré blanc de lisibilité) sur la carte de recherche, la vue carte et la carte 3D de la fiche - commerces : transit servi par data/transit.db (extrait OSM pré-calculé, 37 237 arrêts de bus + 75 stations de métro + 57 REM + 106 gares au Québec — les miroirs Overpass refusent l IP du cluster) ; ajoute Station REM et Gare de train au bloc Commerces et transport Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Fiche : bloc Commerces et transport (Mapbox Search Box + cache POI/OSM)
…
- louka/commerces.py : point de vente le plus proche de 14 grandes bannières (Costco, Walmart, Metro, IGA, Maxi, Super C, Provigo, Canadian Tire, Dollarama, SAQ, Pharmaprix, Jean Coutu, Home Depot, RONA) via l API Mapbox Search Box (jeton public kamaps, validation du nom retourné, anti « Station Métro »), cache par cellule ~1 km TTL 30 j ; station de métro et arrêt de bus les plus proches repris du cache POI du projet (repli Overpass) ; GET /api/commerces - bloc fiche : pastilles SVG monogrammes aux couleurs des bannières, nom du point de vente et distance — métro/bus en tête Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Fiche : qualité de l air (RSQAQ/PST) + essence à proximité (gazquebec.ca)
…
- louka/air.py : agrégats annuels par station du RSQAQ (MELCCFP) — horaires 2024-2025 (PM2.5, NO2, O3, SO2, CO) + séquentielles PST/PM10 (<LD -> LD/2), data/air.db minuscule, station la plus proche ≤ 60 km ; bloc fiche avec badge global et barres vs repères OMS 2021 / norme RAA (PST 60 µg/m³) - louka/gaz.py : copie locale des ~2 450 stations de gazquebec.ca (prix Régulier/Super/Diesel, TTL 4 h, auto-refresh au lookup) ; bloc fiche avec KPI (stations, médiane du secteur, meilleur prix) et tableau des stations les plus proches, la moins chère mise en évidence - run.py air-refresh / gaz-refresh, GET /api/air et /api/gaz Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Risque d inondation (BDZI) + Registre des loyers v2 (visuel)
…
- louka/inondation.py : base locale data/inondation.db construite du GeoPackage BDZI officiel (25 k polygones éclatés + R*Tree, couverture Carto_ZI_S), lookup point-dans-polygone shapely (0-40 ms), statuts en_zone / a_proximite (≤100 m) / hors_zone / non_cartographie ; run.py inondation-build, GET /api/inondation — bloc fiche avec badge de sévérité (grand courant 0-20 ans = élevé, faible courant 20-100 ans = modéré) et rappel que la cartographie officielle fait foi (CMM non couverte par la BDZI) - Registre des loyers v2 : tuiles KPI (volume, médiane secteur, médiane même nombre de chambres), bande de position p10-p90/boîte p25-p75/médiane vs le loyer demandé, barres des médianes par chambres (celle de l annonce surlignée + étiquette), date de la valeur = année du loyer (mois seulement si le bail débute la même année), quartiles côté API Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Registre des loyers : extraction pancanadienne (57 433 déclarations géocodées) + bloc fiche
…
- louka/rdl.py : balayage par boîtes de l API publique de registre-des-loyers.ca (subdivision récursive sur erreur ou volume suspect), base séparée data/rdl.db, requête de proximité (bbox + haversine) avec médianes globale/récente/par chambres - run.py rdl + GET /api/rdl?lat&lng&radius - fiche : bloc « Registre des loyers » sous l analyse de prix — médiane du secteur, écart du loyer demandé vs les déclarations du même nombre de chambres, 8 déclarations les plus proches avec la date de la valeur (année du loyer, mois si le bail débute la même année), crédit Vivre en ville Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Sat, Aug 22, 2026 1
-
court terme : nouvelle section « Location court terme » isolée (backend louka/shortterm + API /api/ct + page /court-terme) — 1er connecteur Airbnb
…
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
-
-
Tue, Aug 18, 2026 2
-
Recherche synchronisée liste ↔ carte (une seule vérité partagée)
…
· /api/search : une réponse = page de liste + tous les points carte, même tri — compteur liste = marqueurs par construction ; bbox, polygone dessiné, tris (prix/récent/affaires), include=liste, annonces sans position comptées honnêtement. · MapSearch.tsx : état unique filtres+zone+tri+page, miroirs survol/clic < 100 ms dans les deux sens, page ajustée au clic marqueur + pulsation, « Rechercher quand je déplace la carte », « Rechercher dans cette zone », recadrage animé respectant l intention (byUser), « Recadrer sur les résultats », zone dessinée en puce retirable + URL, carrousel mobile synchronisé aux marqueurs, états vides propres, URL complète partageable. · Géolocalisation d accueil : arrivée sur le site → demande de position → vue carte centrée sur l utilisateur (une fois par session, lien partagé respecté, refus silencieux). · Marqueurs « déjà vu » atténués (localStorage), fourchette de prix des clusters au survol, spiderfy discret des unités d un même immeuble. · Tests : scripts/test-sync.mjs (25 vérifications E2E Playwright, critères 1-9), tests/test_search.py (9 tests API). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
Qualité des données + solidité mobile + framework de juste valeur (fair value)
…
Mission 1 — enrichissement des connecteurs et qualité : - quality.py : score de complétude 0-100 + seuil de publication (quarantaine des annonces sans prix plausible / localisation / contenu exploitable) - imgcheck.py : audit des images (liens morts 404/410, minuscules, placeholders multi-adresses, doublons) -> galeries nettoyées images_ok, cache image_checks, politesse 3 requêtes/hôte, écriture hors transaction réseau - 26 connecteurs enrichis (galeries complètes, descriptions, prix, adresses) : kangalou, royal_lepage, medway, remax_quebec, groupe_maurice, mellem, sutton, lespac, heafey, kijiji, fb_marketplace, zumper, equinoxe_batimo, logis_experts, quartier_sila, msi, summum, quartier_plus, urban_services, cosoltec, garic, lakle, matinale, huma, jutras, groupe_theoret, ferrovia - normalize : clean_city/clean_sector (rues et entités HTML retirées des menus), kijiji : adresses françaises « 89, rue X » correctement découpées - geocode : virgule après le n° civique corrigée (lot AQ), base en WAL - dedup : une annonce en quarantaine ne masque jamais un doublon publié Mission 2 — mobile : - /api/img : miniatures WebP servies à la taille de l écran (cache disque) - SmartImg : miniature -> original -> visuel de secours Lou-Ka (jamais d icône cassée) - lightbox tactile : balayage scroll-snap + pincement + double-tape - bannière témoins : ne recouvre plus le bouton Filtres (--consent-h) - cibles tactiles >= 44 px (pointer: coarse) ; KA Agent plein écran à l ouverture - stats : complétude moyenne, quarantaine par source Mission 3 — juste valeur locative (fairvalue.py, fv-logement-1.0) : - 3 niveaux : segments médians (repli en échelle) + coefficients de caractéristiques appris et centrés + comparables kNN géographiques (médiane pondérée) ; couloir de sécurité, fourchette, indice de confiance - prudence : pas de verdict si confiance faible, prix « à partir de », prix non mensuel, écart hors plausible ; chambres/coloc = segment dédié - pastilles sous/dans/au-dessus du marché (cartes + fiche), bloc Analyse de prix avec histogramme, filtre « Sous le marché » + tri, page /juste-valeur - API : champs fv_* + deal/sort, /api/fairvalue/{uid} ; stats + PDF ; historisation fv_segments ; tests synthétiques ; docs/FAIRVALUE*.md Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Mon, Aug 17, 2026 1
-
État du nœud — captures README régénérées en prod + Logo.tsx ; gitignore data/uploads/
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Thu, Aug 13, 2026 1
-
README — refonte ultra détaillée : badges à jour (22 900+ annonces, 205 connecteurs, 820 villes), galerie de screenshots web + iOS (docs/screenshots/, script Playwright scripts/screenshots.mjs), sections Lou-Ka Maps / SEO-SSR / SSO KA / quartier / PDF / iOS, CLI et API complètes
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Tue, Aug 11, 2026 1
-
Filtres avancés — refonte du menu web + facettes par ville
…
- /api/facets accepte ?city= : quartiers restreints à la ville (sélecteur dépendant) - Menu de filtres refait : rangée principale compacte (recherche, ville, quartier, loyer min–max, « Plus de filtres ») + panneau avancé repliable en segments (disponibilité, meublé, animaux, superficie, gestionnaire) - Correction du débordement horizontal (colonnes 1fr → contrôles bornés) - Chips rapides (dispo maintenant, animaux, meublé) + pastilles de filtres actifs retirables ; api.ts : price_min, pets, furnished, available_by, area_min - ios/ ignoré : l'app iOS native vit dans son propre dépôt (lou-ka-ios) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Sat, Aug 8, 2026 2
-
Quartier : scripts de construction des données + centiles PMD + correctif débordement mobile
…
- scripts/build_{recensement,contexte,environnement}.py : pipelines rejouables (StatCan recensement 2021 + limites AD, PMD, INSPQ défavorisation, écoles MEQ/IMSE, îlots de chaleur INSPQ, actes criminels SPVM, IGC WDS) - merge_quartier.py : fusion + rangs centiles québécois des scores PMD (l'échelle nationale brute écrasait les valeurs urbaines) - data/quartier.db (51 Mo, gitignoré) : déployé par rsync, reconstruit par scripts — 11 317 AD, 49 791 actes SPVM 24 mois, 1 249 immeubles chaleur - min-width:0 sur les enfants de .detail-grid (débordement mobile) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> -
gitignore : brouillons de correspondance
…
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-
-
Thu, Aug 6, 2026 1
-
Lou-Ka — agrégateur de logements à louer (Québec, Lévis, Grand Montréal)
…
Plateforme complète : 68 connecteurs de gestionnaires immobiliers, schéma standardisé avec détection de changements (hash), API FastAPI, frontend React/Vite PWA (design éditorial sharp, thème clair), déployée sur www.lou-ka.com avec resynchronisation horaire. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
-