SPB Git forge

spb/crea-ka

Public

Créa·Ka — annuaire public cross-plateforme des créateurs de contenu québécois (crea-ka.com)

52commits 1branches 0releases
11.3 MBsize
maindefault branch
19 days agolast push
Python 73.6% HTML 13.2% TypeScript 6% JavaScript 4.5% CSS 1.7% Dockerfile 0.6%

page 1

  1. Fri, Sep 4, 2026 1

  2. Fri, Aug 28, 2026 1

    1. Simon-Pierre Boucher committed 26 days ago · 11 files +80 −38
  3. Wed, Aug 26, 2026 4

    1. Simon-Pierre Boucher committed 29 days ago · 1 file +8 −2
    2. Simon-Pierre Boucher committed 29 days ago · 3 files +218 −6
    3. Simon-Pierre Boucher committed 29 days ago · 1 file +7 −2
  4. Tue, Aug 25, 2026 4

    1. Simon-Pierre Boucher committed 29 days ago · 18 files +26 −12
  5. Mon, Aug 24, 2026 5

    1. Simon-Pierre Boucher committed 1 mo ago · 2 files +12 −2
    2. Simon-Pierre Boucher committed 1 mo ago · 1 file +131 −51
    3. Simon-Pierre Boucher committed 1 mo ago · 1 file +109 −42
    4. feat(doc): page documentation /doc (guide + captures) + lien footer + PDF téléchargeable
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 9 files +176 −3
    5. Simon-Pierre Boucher committed 1 mo ago · 3 files +85 −131
  6. Sun, Aug 23, 2026 3

    1. Favoris unifiés « Mon univers Ka » (KA ID) — hub groupe-ka.com
      …
      - creaka/hubfav.py : client HMAC du hub (GET liste cache 30 s, POST toggle
        synchrone, aucun stockage local) — magasin central des favoris du groupe
      - creaka/web.py : routes GET /api/favorites + POST /api/favorites/toggle
        (session KA ID requise, 401 sinon), déclarées avant le fallback SPA
      - frontend : cœur ♥ sur les cartes de créateurs et CTA sur la fiche
        (« Se connecter avec KA ID » si déconnecté), page /favoris (grille des
        favoris lus au hub, retrait en place), nav header + footer + tab bar
        mobile (5 onglets)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 4 files +481 −12
    2. Simon-Pierre Boucher committed 1 mo ago · 4 files +713 −11
    3. SEO : pages programmatiques /plateformes + /plateforme/{p} rendues en HTML
      …
      - creaka/seo.py : menu des plateformes + top 100 créateurs par plateforme
        (ItemList + BreadcrumbList, contenu dans #app), sitemap-pages enrichi
        (plateformes >= 3 créateurs)
      - frontend : routeur SPA — /plateforme/{p} ouvre l annuaire filtré sur la
        plateforme ; shell reconstruit (build_frontend.py)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 5 files +124 −4
  7. Sat, Aug 22, 2026 4

    1. header opaque + z-index en tokens (standard header/menu KA 2026-08-22)
      …
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 2 files +8 −8
    2. SEO : SSR léger des fiches créateur + head complet + robots/sitemaps
      …
      - creaka/seo.py (nouveau, pattern lou-ka) : routes /createur/{id} servies
        avec head unique (title « {nom} (@{pseudo}) — profils et liens | Créa-Ka »,
        description dérivée de la bio, canonical, OG complet dont og:type profile
        et og:image = avatar unavatar stable) + JSON-LD ProfilePage/Person avec
        sameAs = toutes les URL de plateformes du créateur + BreadcrumbList, et
        contenu essentiel injecté dans #app pour les bots ; 404 fiches inconnues,
        410 fiches retirées/opt-out ; pages /stats /retrait /contact avec canonical
        propre, /compte en noindex ; robots.txt (Disallow /api/ et /compte,
        ligne Sitemap) ; sitemap index + chunks de 10 000 (12 827 fiches, lastmod)
      - gabarit : lang fr-CA, bloc <head> SEO entre marqueurs KA:SEO (canonical,
        og:url/locale/type/site_name, twitter:title/description, JSON-LD WebSite
        avec SearchAction + Organization), titre descriptif, lecture de ?q= par le
        routeur pour rendre la SearchAction réelle
      - web.py : app.include_router(seo.router) avant le fallback SPA
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 4 files +396 −11
    3. connecteurs: chaine de fetch anti-bot resiliente (Oxylabs->Scrapfly->Bright Data)
      …
      Auto-escalade de BaseConnector.get() sur blocage (403/429/503/challenge CF)
      ou coupure reseau, via connectors/_resilient.py. Cles lues de l env avec repli
      sur ~/.claude/.env (accepte SCRAPFLY_KEY et SCRAPFLY_API_KEY). Reponse
      compatible requests.Response; coupe-circuit par hote. Aucun connecteur modifie.
      
      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 2 files +386
  8. Fri, Aug 21, 2026 3

  9. Thu, Aug 20, 2026 5

    1. Périmètre QC : garde-fous snowball-ig + purge 4 605 fiches hors-Québec
      …
      La boule de neige IG (profils reliés) ramenait les vedettes mondiales
      (cristiano, selenagomez, bellahadid…) et _find_existing exigeait une
      confiance forte des deux côtés, créant des doublons orphelins. Correctifs :
      - snowball : filtre is_quebec obligatoire + blocklist organismes/marques/
        médias/partis QC (villes, tourisme, ministères… ne sont pas des créateurs)
      - _QC_MARKERS : « queb » nu matchait « QUEBra » (pt) et « jacQUEBrazil » →
        « quebec » complet ou « queb » en fin de mot (vague 4)
      - db : rapprochement par compte identique (plateforme+handle) sans condition
        de confiance — fini les secondes fiches qui volaient le compte (691 cas)
      - purge base : 4 439 snowball hors-QC, 95 organismes QC non-créateurs,
        1 182 orphelines/doublons → 12 445 créateurs propres
      - tests/test_perimetre_qc.py : régressions vedettes, organismes, faux
        positifs de marqueur, anti-doublons
      
      Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 4 files +168 −24
    2. Simon-Pierre Boucher committed 1 mo ago · 1 file +1,043
  10. Wed, Aug 19, 2026 5

    1. Simon-Pierre Boucher committed 1 mo ago · 2 files +10 −2
    2. Simon-Pierre Boucher committed 1 mo ago · 1 file +4 −1
    3. stats v2 (note) : /stats ultra complet + 5 rapports PDF — contenu livré dans 42581a0
      …
      Le commit 42581a0 (KA Agent v2) a aussi embarqué le module Stats v2 :
      - kapdf.py vendorisé remplacé par le canonique ka-ui v2 (5 modes PDF)
      - /api/stats/dashboard enrichi (données réelles seulement) : 10 KPI avec
        sparklines + deltas, 5 jauges de couverture/complétude, 4 séries, multi-
        courbes croissance par plateforme (top 4), empilé ajouts par source,
        4 répartitions (deltas), 3 distributions, géo, heatmap calendrier +
        horaire 7x24, 5 tableaux, 10 records ; cache 5 min
      - /api/stats/report : complet|synthese|tendances|repartitions|donnees,
        mode inconnu -> complet, filename(.., mode)
      - page /stats vanilla : sparklines, jauges demi-arc, multi-courbes (motifs
        de trait distincts), barres empilées, histogrammes, heatmap 7x24, stats
        de séries min/max/moy/med/sigma, deltas sur barres, menu PDF 5 rapports
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 0 files
    4. Mobile : socle mobile tokens.css injecté, champs ≥16 px jusqu au breakpoint tabbar, logo tactile, ka-agent corrigé
      …
      - frontend/src/ka/tokens.css : socle mobile obligatoire (échelle z-index --z-*,
        --vh100 dvh, .ka-bottombar, .ka-scroll-lock, .ka-menu/.ka-overlay, filet
        anti-zoom iOS 16 px, zone tactile étendue du gk-badge) — inliné au build.
      - frontend/src/index.template.html : champs de recherche/filtres (.search-input
        input, select.f) ≥16 px étendus de ≤760 px à ≤940 px (breakpoint tabbar) ;
        zone tactile ≥44 px du logo .brand (::after inset -8px, rendu inchangé).
      - frontend/src/ka-agent.js : safe-areas, textarea 16 px, plein écran ≤640 px +
        verrou kaa-lock — recopié dans dist/ par build_frontend.py.
      - Vérifié : les boutons d en-tête masqués ≤940 px restent tous joignables —
        Statistiques et Explorer l annuaire via la tabbar basse, Contact via la nav
        du footer local ; le bouton compte KA ID reste visible dans le header.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 5 files +321 −14
  11. Tue, Aug 18, 2026 5

    1. frontend: page créateur repensée — métriques calculées + onglet par plateforme + grille contenu images/vidéos
      …
      - bandeau KPI multi-plateforme calculé (portée, engagement moyen, cadence, contenus)
      - onglets: Vue densemble (barres de portée) + un onglet par plateforme
      - par plateforme: grille KPI détaillée + badges statut + grille de contenu récent (images/vidéos, play/durée, métriques) avec repli icône si CDN expiré
      
      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 2 files +472 −224
    2. crea-ka: couverture 13 plateformes (Apify) + refresh auto 7j + max-parallélisme
      …
      - +patreon-apify +discord-apify (code invit sensible à la casse via URL)
      - run_actor_sharded : N runs parallèles (défaut 32x2Go), retry+jitter, hook target_of
      - rotation hebdo (APIFY_REVISIT_DAYS=7) : le watch PM2 quotidien couvre tout le bassin en <=7j
      - +tavily-seed (1271 graines moissonnées) +snowball-ig (related_profiles) pour lexpansion
      - frontend : stats/badges/contenu récent par plateforme
      
      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 44 files +2,211 −217
    3. crea-ka: 12 connecteurs Apify maison (enrichissement multi-plateforme ultra détaillé)
      …
      Acteurs KA (compte Apify gorgeous_thistle, proxy résidentiel) branchés comme
      connecteurs denrichissement:
      - instagram/tiktok/x/youtube/twitch/kick/facebook/threads/snapchat/fansly-apify
      - profils détaillés: abonnés, bio, badges, engagement, cadence + contenu récent
        (posts/vidéos/tweets avec likes/commentaires/vues), liens croisés (cross_link)
      - rotation par fraîcheur (revisit_days), garde-fous Scrapfly (_fresh 72h)
      - onlyfans-apify + instagram-decouverte présents mais hors ordre auto
        (SPA / topsearch fermé aux sessions anonymes)
      
      Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 37 files +1,187 −22
    4. Vague 4 — expansion massive : twitch-decouverte + kick-decouverte (Scrapfly), YT 1361 requêtes (bloc EN, 13 thèmes×56 villes, +100 passe-temps), iTunes 146 requêtes, +5 catégories Wikipédia, enrichisseur region-bio (ville déclarée en bio → région §7)
      …
      +3 596 créateurs (5 841 → 9 437), +3 684 comptes (10 512). Twitch 292, Kick 122 comptes. region-bio : 1 391 fiches localisées. Avatars 96,5 %.
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 28 files +1,053 −169
    5. Vague 3 : Twitch GQL public sans clé (abonnés), stats YouTube sans clé (InnerTube), découvertes wikipedia-qc + palmares-apple, fix marqueurs QC
      …
      - twitch : plus de SkipSource — API GQL publique du site (Client-ID public,
        requêtes groupées 20/POST) : abonnés, bio, avatar, partenaire/affilié,
        dernière diffusion ; voie Helix officielle conservée si clés fournies ;
        repli curl-binaire si empreinte TLS refusée. 21/26 comptes avec abonnés.
      - youtube : voie publique complète sans clé — page de chaîne + InnerTube
        browse du panneau À propos (vues totales, nb vidéos, pays) + page /videos
        (date de la dernière vidéo → dormant >12 mois) ; bannière, avatar,
        description → bio ; cap 300 chaînes/passage, rotation 14 j (yt_checked).
        Passage initial : 264 chaînes (vues+vidéos 264, last_video 261, bannières 245).
      - wikipedia-qc (découverte) : catégories fr+en de créateurs QC (API MediaWiki)
        → marqueur QC obligatoire pour les catégories pan-canadiennes → handles
        sociaux curés Wikidata (P2003/P7085/P2397/P2002/P5797/P2013 + P856) ;
        décédés exclus, is_minor via P569. 76 nouvelles fiches + 35 fusions.
      - palmares-apple (découverte) : top 100 podcasts Canada (API marketing
        officielle Apple, sans clé) + lookup groupé + attribution QC prudente
        (langue fr ET marqueur dans l en-tête du flux). Spotify charts (API morte),
        ADISQ (SPA sans liens) et Bible urbaine (prose sans handles) évalués et
        écartés — documenté dans sources.json.
      - fix _QC_MARKERS : frontières de mot (« levis » matchait teLEVISion,
        « estrie » tapESTRIEs) — faux positifs purgés de la base.
      - sources.json (16 sources), docs connecteurs régénérées, tests vague 3
        (46 verts).
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      Simon-Pierre Boucher committed 1 mo ago · 25 files +1,312 −196