Lou·Ka — tous les logements à louer du Québec, un seul endroit.
HTML 98.9%
Python 0.6%
-
Fri, Sep 4, 2026 1
-
feat(fiche): refonte premium mobile-first de la fiche logement (2026-09-04)
…
Frontend (frontend/src/fiche/, nouvelle arborescence) : héro prix → adresse → résumé → galerie → actions ; Lou-Ka Score (60 % KA Score emplacement + 40 % prix vs juste valeur, partiel si une composante manque) ; « En bref » déterministe (prix, accessibilité, air, inondation, coûts, TAL, chaleur, baisse de prix) ; navigation sticky par sections (scroll-spy) ; Prix et marché (juste valeur + histogramme) ; Le logement (grille icône/valeur) ; description tronquée + texte original ; inclusions dédoublonnées FR/EN ; grande carte 3D Ka Maps avec filtres de lieux (transport, épiceries, pharmacies, commerces, écoles, parcs, essence) ; À proximité / Transport en carrousels + bottom sheet ; Quartier en KPI compacts + accessibilité en lignes ; KA Scores compacts ; Registre des loyers orienté décision (jauge p10–p90, médianes par chambres, 3 comparables + sheet filtrable) ; coût réel + Hydro ; risque d'inondation (statut clair, juridique en accordéon) ; qualité de l'air en tuiles ; essence (3 stats, 3 stations, sheet) ; Dossier de l'immeuble en accordéons (historique, passeport, gestionnaire, TAL, hiver) ; Sources et méthodologie + fin de fiche. Primitives : SectionCard, Accordion, BottomSheet (modale ≥ 900 px), StatTile, StatusBadge, Skeleton, états vides/erreur, toast. Données : useFicheData (groupe critique au montage, groupe différé à l'approche de la carte). Tokens --lk-* scopés (.lk-fiche) : fond #F7F7F5, cartes blanches bord 1 px, ombres légères, rayons 10/14/18/22, orange réservé CTA/prix/score. Desktop ≥ 1024 : aside sticky (prix, CTA, score, constats, Demander à Ka). CTA sticky compact affiché seulement après le héro ; bouton « ✦ Demander à Ka » discret branché sur le widget KA Agent existant (contexte de la fiche transmis). Header compact sur la fiche (56 px, ticker masqué, favoris + partage, connexion en icône sur mobile). Aucun `order` CSS ; scrollIntoView banni de la barre de sections (faisait ouvrir la page à 434 px). Anciennes classes .fiche/.f-* intactes pour la fiche court terme. 16 anciens composants de fiche supprimés (remplacés). check-order.mjs mis à jour + shots.mjs / interactions.mjs. Backend (additif, rétrocompatible) : poi.py conserve lat/lng des POI (carte) ; gaz.py expose lat/lng des stations ; /api/gaz et /api/rdl acceptent `limit` (sheets « Voir les N »). vite.config : proxy /api paramétrable (LOUKA_API). Validé : tsc + vite build, check-order OK (scrollY 0, ordre croissant, sans overflow 375→1440), captures Playwright 6 largeurs, sheets/carte/Ka/404, fiche sans KA Score. node_modules frontend réinstallés (typescript/esbuild tronqués par ka2 le 2026-08-31 pour ENOSPC).
-
-
Sat, Aug 15, 2026 1
-
Thu, Aug 13, 2026 3
-
Profil enrichi — photo téléversée, bio, ville, coordonnées, réseaux sociaux
…
- louka/profile.py : PUT /api/me/profile (nom affiché, bio 280, ville, téléphone, site web, réseaux instagram/facebook/x/linkedin/tiktok/youtube), POST /api/me/avatar (Pillow : EXIF, recadrage carré centré, 512 px, JPEG, purge des anciennes photos), DELETE /api/me/avatar (retour avatar Google) - /uploads/ monté (data/uploads/), colonnes users (display_name, avatar_url, bio, city, phone, website, socials JSON) - /api/me : nom et avatar « effectifs » (display_name > Google, upload > Google) + tous les champs ; profil public /u/{ka_id} : bio, ville, rôle, site, réseaux (jamais courriel/téléphone) - /profil : éditeur complet (photo avec téléversement, nom affiché, bio avec compteur, ville, téléphone, site, 6 réseaux avec icônes maison) - /u/{ka_id} : bio, chips ville/rôle/site, boutons réseaux sociaux - python-multipart ajouté (formulaires multipart FastAPI) -
Comptes v2 — KA-ID, profil « carte de membre », rôles, favoris, pages gestionnaires
…
- KA-ID : identifiant membre unique « ka- » + 10 chiffres, attribué à la création du compte (index unique, backfill au premier /api/me) - /profil : carte de membre Groupe KA (encre + lime, KA-ID en vedette, avatar, ancienneté, bande décorative), infos du compte, copie du KA-ID - Profil PUBLIC opt-in : /u/{ka_id} (nom, avatar, ancienneté — jamais le courriel ; 404 indistinguable si non public), toggle + lien copiable - Rôles à l'intégration (/bienvenue après le premier login Google) : · locataire — favoris (cœur sur les cartes, page /favoris, toggle optimiste) · gestionnaire — réclame la page de SA source (1/compte, 1 compte/source) et la personnalise (/gestion : accroche, description, contact, logo) ; page publique /g/{source} avec inventaire relié + pagination - louka/accounts.py (rôles, favoris, source_profiles), tables favorites + source_profiles + colonnes users (ka_id, public, role, org_source) - Contexte de compte partagé (account.tsx) : header, cartes et pages reliés -
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)
-