SPB Git

spb/lou-ka

Public

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

History of frontend/src/pages/Home.tsx Clear filter
page 1
  1. Wed, Aug 26, 2026 1

    1. Mode carte Ka Map System v2 — expérience immersive plein viewport
      …
      - MapSearch réécrit autour de KaMapShell : mobile edge-to-edge + bottom sheet
        de résultats à 3 crans, desktop split liste|carte redimensionnable (ratio
        persisté) avec carte quasi plein écran d un clic
      - Toolbar unifiée (zoom, 3D, dessiner, me localiser) au lieu des pilules
        flottantes ; « Rechercher dans cette zone » contextuel
      - Mode dessin temporaire avec CTA « N logements dans cette zone »
      - Fiche contextuelle v2 : photo, prix, favori, swipe/chevrons entre voisines
        (remplace le carrousel mobile)
      - Thème markers v2 : pilules off-white/encre premium, orange réservé au
        « sous le marché » et à la sélection ; clusters légers à anneau orange
        avec loyer moyen sous la bulle
      - Home : vue carte mémorisée dans l URL, feuille de filtres en modale
        au-dessus du mode carte (desktop), widget Ka Agent masqué en mode carte
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +19 −4
  2. Tue, Aug 25, 2026 3

    1. Court terme : DA editoriale v2 (meme langage que l accueil)
      …
      - Hero typo geant Trouvez votre prochaine escapade. avec surlignage orange
        irregulier ; benefits-cards et stat-chips remplacees par la ligne LIVE
        (hebergements indexes en count-up, regions, derniere synchro reelle des
        connecteurs ct qui tictaque, prix moyen/nuit)
      - Recherche au coeur : grand champ Ou voulez-vous vous evader ? souligne,
        criteres Region/Type/Prix par nuit en filets, Tous les criteres avec badge
      - Barre de resultats sticky N hebergements · Liste|Carte · Filtres (mobile),
        FAB supprime ; resume des criteres actifs sous la recherche sur mobile
      - Grille magazine grid-edito (grand format 16/9 toutes les 7 fiches) et
        transitions de vue ; reutilise integralement la couche CSS v2 de l accueil
      - Hooks useCountUp/useAgo factorises dans src/live.ts (partages Home/CT)
      Simon-Pierre Boucher · 1 file +2 −34
    2. Refonte editoriale v2 de l accueil — direction artistique premium
      …
      Moins de boites, plus de typographie : le contenu structure la page.
      
      - Hero : composition typographique geante (clamp 44-88px), surlignage orange
        irregulier en trait SVG sous chez-vous., plus de gros boutons rectangulaires
      - Donnees vivantes : ligne mono LIVE avec compteur anime (count-up 0,9s),
        derniere synchro reelle qui tictaque a la seconde (max last_sync des
        connecteurs), sources et loyer moyen — separes par filets, zero chip
      - Recherche au coeur : grand champ Ou voulez-vous habiter ? souligne 2px
        (focus accent), criteres inline Ville/Quartier/Loyer separes par filets
        verticaux, bouton texte Tous les criteres avec badge — la boite filterbar
        disparait de l accueil
      - Barre de resultats sticky : N logements · Liste|Carte (onglets textes a
        soulignement anime scaleX) · Filtres (mobile) — remplace le FAB flottant
      - Fiches editoriales : plus de carte-boite — l image domine (radius 10,
        zoom 1,025 au survol), prix 22px niveau 1, adresse niveau 2, quartier/ville
        en mono uppercase niveau 3, source en micro-mono niveau 4
      - Grille a rythme magazine : 3 colonnes, 1 grand format panoramique 16/9
        toutes les 7 fiches, apparition en decale par colonne, align-items start
      - Pagination nue : chiffres sans boites, page courante soulignee accent
      - Nav mobile : tabbar flottante detachee des bords (radius 18, blur, ombre
        portee), etat actif = trait accent sous l icone ; widget KA Agent remonte
      - Primitives locales v2 : rayons 0/6/10/18, durees 150/240/350ms, hairlines
      - Feuille mobile : resume des criteres actifs sous la recherche (remplace le
        FAB), poignee, application sticky
      - Classes partagees avec CourtTerme (.hero, .filterbar, .stat-chip…)
        intactes : la refonte vit dans de nouvelles classes + une couche finale
      Simon-Pierre Boucher · 1 file +129 −119
    3. Accueil : refonte majeure du rendu — CTA hero, filtres et boutons peaufines
      …
      - Hero : halo d accent + trame de points decorative, rangee CTA (Explorer /
        Voir la carte) avec ombres decalees accent, stat-chips interactives
        (tabular-nums, survol), avantages en mini-cartes bordees encre
      - Filterbar : cadre 2px + rayon 16, recherche 52px focus accent (ombre 3x3),
        selects survolables, bouton Plus de filtres avec icone, badge compteur et
        chevron anime, panneau avance en pointille avec easing
      - Segments : etat actif encre + souligne accent interieur ; pastilles actives
        avec animation d apparition et survol danger (intention de retrait)
      - Chips 42px avec icones alignees ; bascule Liste/Carte etat actif encre
      - Mobile : poignee de sheet, bouton Voir les resultats sticky en bas de la
        feuille, FAB avec badge compteur
      Simon-Pierre Boucher · 1 file +26 −2
  3. Wed, Aug 19, 2026 1

    1. Mobile : backdrop du menu compte via createPortal, verrou scroll de la feuille filtres, champs ≥16 px, logo tactile, socle mobile tokens.css, ka-agent corrigé
      …
      - frontend/src/App.tsx : .account-backdrop rendu à la racine via createPortal
        (le backdrop-filter du header re-parentait le position:fixed → voile de
        66 px) + fermeture du menu compte à Escape.
      - frontend/src/pages/Home.tsx : feuille de filtres mobile (sheetOpen) — gel du
        scroll d arrière-plan (pattern du hamburger) + fermeture à Escape.
      - frontend/src/styles.css : backdrop compte plein écran sous le header (z-40,
        le menu ancré dans le header reste au-dessus) ; champs de filtres ≥16 px sur
        mobile (f-search, f-native, f-ctl select, ms-sort) ; zone tactile ≥44 px du
        logo .brand (::after inset -8px, rendu inchangé).
      - frontend/src/ka/tokens.css : socle mobile obligatoire (z-index communs,
        --vh100, .ka-scroll-lock, .ka-bottombar, filet anti-zoom iOS 16 px).
      - frontend/public/ka-agent.js : safe-areas, textarea 16 px, plein écran
        ≤640 px + verrou, pas de focus clavier forcé.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +12
  4. Tue, Aug 18, 2026 3

    1. KA Scores — suite géographique maison (Walk/Transit/Bike/Calme/Services)
      …
      · environment.py : inventaire OSM par tuile (Overpass) — routes majeures,
        rails, aéroports, zones industrielles, bars, pistes cyclables (géométrie
        densifiée) et TOUS les POI par catégorie ; cache env_tiles ~3 mois.
      · kascores.py : 5 scores 0-100 par immeuble + global pondéré, barème
        versionné (2026.08-v1), détails honnêtes par score, « Données
        insuffisantes »/« Non desservi » plutôt que des 0 trompeurs ; Transit =
        proximité des arrêts × percentile PMD StatCan ; calcul incrémental
        (7 900 immeubles en ~8 s), distribution de calibration en sortie.
      · API : ks_* joints à /api/listings et /api/search (tri « ka », filtre
        kascore_min), détail complet sur la fiche, /api/kascores/stats.
      · Frontend : pastille KA sur les cartes d annonces, section KA Scores de
        la fiche (5 jauges + détail dépliable + date/version), page /ka-scores
        (méthodologie publique + pondérations personnelles en curseurs), tri
        « Meilleur KA Score » dans la vue carte, filtre « KA Score minimal ».
      · Boucle watch : env (4 tuiles max) + kascores incrémental à chaque sync.
      · Tests : test_kascores.py (barème, honnêteté, rendement décroissant,
        cohérence spatiale sur le parc réel).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +23 −4
    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>
      Simon-Pierre Boucher · 1 file +59 −40
    3. 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>
      Simon-Pierre Boucher · 1 file +13 −3
  5. Sat, Aug 15, 2026 1

  6. Thu, Aug 13, 2026 2

    1. Lou-Ka Maps — carte propulsée par Ka Maps (framework Groupe Ka, moteur Mapbox 3D)
      …
      Frontend : MapView réécrit sur @groupe-ka/ka-maps (file:../../ka-maps) —
      style Mapbox Standard 3D par défaut + bouton 2D, pastilles de prix encre/
      blanc, grappes compte + loyer moyen (clamp anti-prix aberrants),
      « Rechercher dans cette zone », aperçu React (fin du popup HTML injecté),
      sync liste↔carte (sélection + survol), caméra dans l'URL, badge Lou-Ka
      Maps · Groupe Ka, jeton public Mapbox (kamaps/config.ts). Recherche
      debouncée (fin des requêtes à chaque frappe).
      Backend : /api/listings.geojson accepte bbox + limit et renvoie
      totalGeocoded/totalMatching ; index idx_listings_geo(lat,lng) ; PRAGMA
      optimize au cycle d'ingestion (le planificateur choisissait le mauvais
      index).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +40 −5
    2. Web — pagination 12 annonces/page + icônes SVG maison (fin des emojis génériques)
      …
      - Pager.tsx : pagination éditoriale (précédent/suivant, numéros avec ellipses,
        rappel « X–Y sur N »), sous la grille ET sous la liste de la vue carte
      - Home.tsx : 12 annonces/page via limit/offset API, page dans l'URL (?page=N),
        retour page 1 au changement de filtre, défilement doux vers les résultats
      - Icons.tsx : jeu d'icônes SVG au trait « éditorial sharp » (maison, immeuble,
        caméra, patte, sofa, éclair, liste, carte, curseurs, alerte, boussole…)
      - Emojis remplacés partout (cartes, chips, bascule liste/carte, FAB filtres,
        nav mobile, onglets Stats, fiche, carrousel vide, popups carte, 404)
      Simon-Pierre Boucher · 1 file +62 −25
  7. Tue, Aug 11, 2026 1

    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>
      Simon-Pierre Boucher · 1 file +247 −61
  8. Sat, Aug 8, 2026 3

    1. Simon-Pierre Boucher · 1 file +3
    2. Mobile : menu déroulant animé + sélecteur de consentement témoins + page confidentialité
      …
      - Header : hamburger animé (-> X), panneau déroulant avec liens en cascade
        (Logements, Carte, Stats, Sources, Confidentialité), backdrop flouté,
        verrouillage du défilement, fermeture à la navigation
      - CookieConsent : bandeau au premier chargement (aucun témoin tiers — honnête),
        3 choix (tout accepter / essentiels / personnaliser avec cases préférences
        et statistiques), mémorisé en localStorage, ré-ouvrable depuis le pied de
        page et la page confidentialité
      - /confidentialite : politique de confidentialité et de témoins
      - Vue carte synchronisée avec l'URL (?view=carte depuis le menu)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher · 1 file +4
    3. Mission 4 — géocodage Nominatim + carte interactive MapLibre GL
      …
      Géocodage (louka/geocode.py) :
      - Nominatim 1 req/s, User-Agent identifié, cache SQLite par immeuble
        (adresse normalisée sans n° d'unité) — une adresse n'est géocodée qu'une fois
      - nettoyages QC : préfixe d'unité « 101-2905 », « Montréal - Laval »,
        cardinales abrégées ; repli civique+rue en 2e tentative
      - validation bounding-box (Québec/Lévis resserrée, garde-fou provincial),
        flag geocode_failed, ré-essai des échecs après 30 jours
      - intégré à la boucle watch (nouvelles adresses géocodées à chaque sync)
      - finalize() rejette aussi les coordonnées invalides fournies par les sources
        (annonce de Limoilou qui pointait au Kazakhstan)
      
      Carte (frontend) :
      - /api/listings.geojson : GeoJSON filtré (mêmes filtres que /api/listings)
      - MapView MapLibre GL : chargement paresseux (254 ko gzip hors du bundle
        principal), clustering natif, marqueurs-prix, popup fiche (photo, prix,
        type, dispo, gestionnaire, lien), synchro avec les filtres, fitBounds
      - bascule Liste/Carte : côte à côte sur desktop, plein écran sur mobile
      - tuiles vectorielles OpenFreeMap (positron), style Lou-Ka (encre + lime)
      - worker MapLibre v6 copié par plugin Vite (imports relatifs préservés)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher · 1 file +46 −6
  9. Thu, Aug 6, 2026 2

    1. Page Statistiques + extension Grand Montréal (68 connecteurs)
      …
      - Page /stats : tuiles héro (total, loyer médian/moyen, villes, gestionnaires),
        histogramme des loyers (classes de 200$), répartitions par taille, ville et
        gestionnaire — barres mono-série encre verte, infobulles, étiquettes directes,
        vue tableau par graphique, catégories cliquables vers les logements filtrés
      - 38 connecteurs Grand Montréal (REITs, promoteurs, gestionnaires) + extension
        de 5 connecteurs existants; registre à 74 sources
      - Filtres de l'accueil pré-remplis depuis l'URL
      - Optimisation smartphone : bottom sheet de filtres, FAB, safe-areas, anti-zoom iOS
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher · 1 file +8 −6
    2. 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>
      Simon-Pierre Boucher · 1 file +226
Menu

Theme