SPB Git forge

spb/sorti-ka

Public

Toutes les sorties et tous les événements du Québec, un seul endroit — 7 connecteurs, fiches SSR, design Groupe KA.

58commits 1branches 0releases
13.7 MBsize
maindefault branch
17 days agolast push
HTML 82.9% Python 15.2% TypeScript 0.9% JavaScript 0.7%

History of frontend/index.html · clear filter

  1. Mon, Sep 7, 2026 1

    1. feat(fiche): refonte premium mobile-first de la fiche événement (2026-09-07)
      …
      Même socle que les fiches Lou-Ka v3 / Immo-Ka v3, porté en JS natif dans
      frontend/index.html (tokens --sk-*, classes sk-*, fond papier, cartes
      blanches bord 1 px, framboise réservée aux CTA/prix) : héro (catégorie ·
      source, prix « Dès X $ » / Gratuit / Billetterie, capsules date et statut,
      titre + lieu · ville · date, image, actions favoris ♥ / partage / Billets) ;
      « En bref » déterministe (aujourd'hui / demain / ce week-end / terminé,
      statut annulé-reporté-complet, prix, lieu, artistes, public) ; navigation
      sticky par sections (scroll-spy) ; « Quand et où » (faits, adresse,
      itinéraires, carte Leaflet sur tuiles OSM — CARTO exige désormais une clé) ;
      « Programme » (description tronquée, artistes, étiquettes) ; « Billets et
      prix » ; « À voir aussi » (cartes existantes) ; Dossier de la fiche ; Sources
      et méthodologie. CTA sticky après le héro, aside desktop sticky, « Demander à
      Ka » (bottom sheet → widget KA Agent). Header compact sur /evenement/
      (favoris + partage injectés, ticker/badge/tabbar masqués, nettoyage au retour
      sur les autres vues). Ids de sections préfixés sk- (collision avec #sources de
      l'accueil). Ancien lien « Toutes les sorties » remplacé par le fil d'Ariane.
      Aucun order CSS ; pas de scrollIntoView à l'ouverture. Dossier qa/ (ignoré par
      git) : serveur de prévisualisation + scripts Playwright (lien vers
      vrai-prix/node_modules).
      
      Validé sur M3U96a : check-order OK, interactions OK (accordéon, similaires,
      Ka, navigation SPA, 404), captures 6 largeurs ; index.html basculé (rendu SEO
      seo.py relit le fichier à chaque requête, aucun redémarrage).
      Simon-Pierre Boucher committed 17 days ago · 1 file +923 −83
  2. Wed, Aug 26, 2026 1

  3. Tue, Aug 25, 2026 3

    1. Barre de navigation mobile commune Groupe KA (KA Tabbar v1)
      …
      Pilule flottante fixe en bas (standard ka-ui/nav, version vanilla inline) :
      Découvrir · Recherche · Carte · Favoris, accent magenta signature, safe-area
      iOS, micro-interactions. Recherche = retour accueil + focus du champ central ;
      Carte = toutes les sorties sur la carte (drapeau state.mapAll one-shot dans
      isFiltering, remis à zéro à toute navigation hors tabbar).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 29 days ago · 1 file +102 −1
    2. Nav mobile v2 : hamburger + panneau plein écran fixed (standard KA 2026-08-25)
      …
      Les liens de nav wrappaient dans le header sur mobile. Remplacés sous 760px
      par un hamburger 44px + panneau position:fixed inset:0 (z-modal) — visible
      peu importe la position de scroll, verrou de scroll, fermeture lien/✕/Escape.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +93 −3
  4. Mon, Aug 24, 2026 2

    1. Simon-Pierre Boucher committed 1 mo ago · 1 file +2
  5. Sun, Aug 23, 2026 3

    1. favoris ♥ « Mon univers Ka » (KA ID) : hub groupe-ka.com magasin central
      …
      - sortika/hubfav.py : client HMAC du hub (patron food-ka) — toggle synchrone,
        lecture avec cache mémoire 30 s invalidé au toggle, aucun stockage local
      - API : GET /api/favorites + POST /api/favorites/toggle (session KA ID, 401
        sinon ; 403 compte non relié ; 502 hub injoignable)
      - frontend : cœur ♥ sur les cartes et la fiche (non connecté -> connexion
        KA ID), page /favoris + entrée de nav, toggle optimiste avec rétablissement
      - SSR : route /favoris (noindex, hors sitemaps)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +173 −3
    2. stats v3 : rapports PDF personnalisés (catalogue de blocs, rendu au choix, constructeur + modèles)
      …
      - kapdf.py v3 : catalog(dash), mode 'personnalise' (spec title+blocks,
        rendu par bloc avec conversions tableau, heatmap calendrier vectorielle)
      - web.py : GET /api/stats/catalog + POST /api/stats/report/custom
      - frontend : constructeur vanilla (modal 2 colonnes, ordre ↑↓, sélecteur
        de rendu, modèles localStorage, téléchargement blob)
      - SPEC.md v3 (§3bis)
      Simon-Pierre Boucher committed 1 mo ago · 1 file +236
    3. SEO : pages programmatiques régions + catégories rendues en HTML
      …
      - sortika/seo.py : /regions, /region/{slug}, /categories, /categorie/{cat}
        (SSR complet : ItemList + BreadcrumbList, 100 fiches liées par page),
        liens régions/catégories dans l'accueil SSR, sitemap-pages enrichi
      - frontend/index.html : routeur SPA étendu — /region/{slug} et
        /categorie/{cat} ouvrent la recherche filtrée correspondante (kaSlug
        miroir du slugify serveur)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +22
  6. Sat, Aug 22, 2026 2

  7. Wed, Aug 19, 2026 4

    1. Phase 3 — registre (34 sources), conformité et crédits
      …
      - data/sources.json : 9 nouvelles sources actives avec fiche d évaluation
        datée (accès constaté, volume mesuré, robots.txt lu, effort) + 5 écartements
        consignés avec raison (mauricie JS, laurentides/gaspesie WAF, tuxedo en
        panne, clubs pros doublons)
      - docs/CONFORMITE.md : tableau licences/robots.txt/crédits/fréquences de
        TOUTES les sources + données transversales (MAMH, OSM/ODbL, Nominatim)
      - frontend + seo.py : étiquettes SRC_LABELS des 9 nouvelles sources (+ 3
        anciennes manquantes) ; pied de page d attribution enrichi, dont
        « lieux : © contributeurs OpenStreetMap (ODbL) » exigé par l annuaire
      - docs/connecteurs : fiches régénérées (34 sources, INDEX)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +14 −3
    2. Phase 2 — affichage & API : bandeaux statut, heures de fin, quarantaine, santé par source
      …
      - Frontend : badge Annulé/Reporté/Complet sur les cartes, bandeau de statut
        sur la fiche, plage horaire « 19 h 30 – 21 h 30 » quand end_time est connue,
        heure 00:00 affichée « heure non confirmée » (jamais un minuit menteur).
      - SEO/SSR : eventStatus schema.org (EventCancelled/EventPostponed), offers
        availability SoldOut, endDate horodatée (endDate + end_time + fuseau),
        bandeau statut dans le HTML SSR ; sitemaps sans les événements en
        quarantaine.
      - API : /api/events, /api/stats et le tableau de bord excluent la
        quarantaine ; /api/stats expose « quarantined » ; /api/sources expose
        upcoming_events par source + future_alerts (canal de supervision — une
        source verte sans futur est morte en silence).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +26 −2
    3. Correctifs front-end mobile : viewport-fit=cover, champs 16 px, blur header desktop seulement, socle mobile ka-ui
      …
      - index.html : meta viewport avec viewport-fit=cover (safe-area iOS)
      - .header : backdrop-filter limite a >=768px, fond quasi opaque rgba(245,243,238,.95) sur mobile (evite les descendants fixed pieges par le blur WebKit + perfs de scroll)
      - champs input#q / select#region / select#period a 16 px sous 760px (evite le zoom auto iOS au focus)
      - a.brand : extension tactile ::after inset -8px (cible >=44px), nav deja >=44px
      - frontend/src/ka/tokens.css : section SOCLE MOBILE OBLIGATOIRE (z-index unifies, --vh100 dvh, verrous de scroll, filet anti-zoom 16 px, extension tactile gk-badge)
      - frontend/ka-agent.js : agent corrige (safe-area, textarea 16 px, plein ecran <=640px + verrou scroll)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +17 −4
  8. Tue, Aug 18, 2026 1

    1. Vague 2 d'enrichissement : heure précise, artistes, 3 nouveaux connecteurs
      …
      - Colonnes additives events.start_time (HH:MM locale QC) et events.artists
        (JSON) + migration auto à la connexion ; Event.finalize normalise l'heure
        (parse_time) et déduplique les artistes.
      - Heure captée partout où la source la publie : lepointdevente (cartes de
        liste « 17 août 2026, 20h00 » + fiches), evenko (show_time epoch →
        America/Montreal, respect hide_show_time), Laval et Sherbrooke (flux UTC →
        date+heure locales, minuit local = toute la journée), Montréal (JSON-LD des
        fiches pendant l'enrichissement og:image, cache rétro-compatible), atuvu.
      - Artistes : headliners evenko (explicite), lineup Bandsintown, attractions
        Ticketmaster, et extraction conservatrice des titres lpdv (patrons sûrs
        « Artiste - Salle » / « X en concert/rodage », liste de mots interdits).
      - Nouveau connecteur Ville de Brossard (API REST WordPress city-event +
        bannière/JSON-LD des fiches, cache incrémental) — 251 événements.
      - Nouveau connecteur Bandsintown (dates QC des artistes connus de la base,
        rotation 100 artistes/sync, app_id js_www.sorti-ka.com testé accepté) —
        108 concerts géolocalisés avec heure.
      - Nouveau connecteur Ticketmaster Discovery API, complet mais « prêt — clé
        requise » (TICKETMASTER_API_KEY absent de .env ; skip propre + .env.example).
      - Gatineau, Trois-Rivières, Lévis, Terrebonne : étudiées et documentées
        « abandonnée » dans sources.json (aucun flux exploitable, vérifié 2026-08-18).
      - Dédup à l'affichage : rang prix > GPS > image > description ; /api/stats
        expose « sources » (10 actives) pour le hub groupe-ka ; SSR : heure dans le
        JSON-LD (offset québécois) + performer ; frontend : heure sur les cartes et
        fiches, « À l'affiche », libellés des nouvelles sources.
      - Tests : 22 → 32 (parse_time, utc_to_local, artistes, migration, TM/BIT/
        Brossard sur structures réelles).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +11 −2
  9. Mon, Aug 17, 2026 7

    1. Câblage du widget KA Agent (bulle de chat Groupe KA)
      …
      Ajout des balises window.KA_AGENT={site:"sorti-ka"} et /ka-agent.js
      en fin de <body> de frontend/index.html — repris tel quel par le
      gabarit SSR de seo.py (aucun doublon).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +2
    2. Footer/contact : Job-Ka rejoint l écosystème (ecosystem.json 13 sites)
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +2
    3. Page /stats : tableau de bord analytique + rapport PDF Groupe-KA
      …
      - sortika/stats.py : GET /api/stats/dashboard (contrat ka-stats SPEC.md) —
        KPI réels avec deltas, séries ajouts/jour et en-cours/jour, donut
        catégories top 8, gratuits vs payants, sources, régions, heatmap
        calendrier 26 semaines, top villes/lieux/gros jours, records ;
        cache mémoire 5 min par période
      - sortika/kapdf.py (moteur PDF commun fpdf2) + GET /api/stats/report
        (complet | synthese), wordmark Sorti·Ka, accent #d6336c, filename
        kapdf.filename("sorti-ka", period)
      - frontend : vue /stats vanilla JS + SVG (kit kacharts reproduit) —
        KPI auto-fit, chips de période + plage personnalisée, courbes avec
        infobulle et légende cliquable, barres, anneau, heatmap, tableaux
        triables/recherche/pagination 25, records, boutons PDF ; lien Stats
        dans la nav ; mobile 360/768/1440 sans débordement
      - SEO : SSR /stats (title/canonical/og) + sitemap-pages
      - requirements : fpdf2
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +417 −1
    4. Assets Groupe KA (og.png, favicon.svg, apple-touch-icon) + correction du débordement à 768 px
      …
      - ka-assets/ → frontend/ (servi à la racine par StaticFiles) : og.png
        (1200×630), favicon.svg, apple-touch-icon.png.
      - index.html : liens icônes + og:image/og:image:width/height +
        twitter:card summary_large_image + twitter:image.
      - seo.py : OG_IMAGE_TAGS par défaut (contact, événements sans image),
        retombée twitter pour les événements avec image ; _render retire les
        balises statiques pour éviter les doublons.
      - header : header-inner passait en pile seulement à ≤760 px alors que la
        ligne exige ~882 px — flex-wrap autorisé à toute largeur (cause racine
        du débordement horizontal de +114 px à 768 px).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +9 −2
    5. Harmonisation ka-ui — accent framboise, badge Groupe KA, KaFooter, page /contact
      …
      - tokens.css (ka-ui vendoré, src/ka/) chargé en premier ; le CSS local ne
        garde que le bloc accent framboise (--accent #d6336c + alias --lime) et
        le CSS métier — socle dédupliqué, couleurs en dur pointées vers les tokens
      - Header : badge « Un service Groupe KA » (→ groupe-ka.com) à côté du logo,
        lien Contact, empilement propre sous 760 px (badge visible sur mobile)
      - Footer : remplacé par le footer commun KaFooter (siteId sorti-ka) —
        3 courriels + rôles, avertissement agrégateur, 15 sites, liens légaux du
        hub + attribution des données conservée
      - Page /contact : vue SPA (contenu ecosystem.json) + route SSR seo.py
        (title/canonical/og + contenu robots) + entrée sitemap-pages.xml
      - KA ID : lien « Créer un compte » → groupe-ka.com/connexion à côté du
        bouton « Se connecter avec KA »
      - SEO : title « Sorti-Ka — Un service Groupe KA »
      - Responsive/tactile : overflow-x clip (tokens), nav/chips/liens ≥ 44 px,
        chips 44 px sur pointeur tactile
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +183 −81
    6. Connexion KA ID — « Se connecter avec KA » (SSO hub groupe-ka.com)
      …
      sortika/auth.py (patron louka/auth.py) : départ SSO avec state signé,
      vérification du jeton HS256 du hub (issuer/audience/exp), upsert membre
      (table users, KA ID adopté du hub), session cookie httpOnly HMAC,
      /api/me avec profil dicté par le hub (/api/sso/profile). Bouton et puce
      membre dans l'en-tête. 3 tests auth (22 au total).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +42
    7. Sorti·Ka v1 — agrégateur de sorties & événements du Québec
      …
      8 connecteurs actifs (Le point de vente, SIT Québec, Ville de Montréal,
      evenko, La Vitrine, Atuvu, Sherbrooke, Laval), 15 231 événements actifs
      dans les 17 régions, fiches SSR /evenement/{uid} avec JSON-LD, dédup
      inter-sources, enrichissement d'images og:image, design system Groupe KA
      « éditorial sharp », 19 tests sur fixtures réelles.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 1 file +586