Revert "docs: README v2 — galerie multi-pages, style du site, documentation, contact"
This reverts commit 728ff96858ca7e914b815479a7f022842fcc2672.
1 changed file +29 −115
modified
README.md
+29 −115
@@ -1,56 +1,26 @@ | ||
| 1 | −<p align="center"> | |
| 2 | − <a href="https://www.fabri-ka.com"><img src="https://www.fabri-ka.com/og.png" width="760" alt="Fabri·Ka — Les produits fabriqués au Québec"></a> | |
| 3 | −</p> | |
| 4 | − | |
| 5 | −<h1 align="center">Fabri·Ka</h1> | |
| 1 | +# Fabri·Ka | |
| 6 | 2 | |
| 7 | −<p align="center"><b>Le répertoire des produits québécois : plus de 300 000 produits de 1 377 boutiques d'ici, trouvables au même endroit.</b></p> | |
| 3 | +**Le répertoire des produits québécois : plus de 300 000 produits de 1 377 boutiques d'ici, trouvables au même endroit.** | |
| 8 | 4 | |
| 9 | −<p align="center"> | |
| 10 | − <a href="https://www.fabri-ka.com"><img src="https://img.shields.io/website?url=https%3A%2F%2Fwww.fabri-ka.com&style=flat-square&label=www.fabri-ka.com&up_color=c4532e" alt="Site"></a> | |
| 11 | − <a href="https://www.fabri-ka.com/doc/"><img src="https://img.shields.io/badge/📖_documentation-%2Fdoc-c4532e?style=flat-square" alt="Documentation"></a> | |
| 12 | − <a href="https://www.fabri-ka.com/doc/fabri-ka-documentation.pdf"><img src="https://img.shields.io/badge/guide-PDF-c4532e?style=flat-square" alt="Guide PDF"></a> | |
| 13 | − <img src="https://img.shields.io/badge/n%C5%93ud-M4M64a-1f6feb?style=flat-square" alt="Nœud"> | |
| 14 | − <img src="https://img.shields.io/badge/port-8097-555?style=flat-square" alt="Port"> | |
| 15 | − <img src="https://img.shields.io/badge/process-PM2-2b037a?style=flat-square" alt="PM2"> | |
| 16 | − <img src="https://img.shields.io/badge/Python-FastAPI-3776ab?style=flat-square&logo=python&logoColor=white" alt="Python FastAPI"> | |
| 17 | − <img src="https://img.shields.io/badge/React_18-Vite_%2B_TS-61dafb?style=flat-square&logo=react&logoColor=black" alt="React 18"> | |
| 18 | − <img src="https://img.shields.io/badge/SQLite-FTS5-003b57?style=flat-square&logo=sqlite&logoColor=white" alt="SQLite FTS5"> | |
| 19 | − <img src="https://img.shields.io/badge/Groupe-KA-b7f000?style=flat-square" alt="Groupe KA"> | |
| 20 | −</p> | |
| 5 | +[](https://www.fabri-ka.com) | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 21 | 13 | |
| 22 | 14 | **Fabri-Ka** est un **agrégateur de découverte de produits québécois** : **301 534 produits** provenant de **1 377 boutiques en ligne** du Québec (sur **3 507 boutiques vérifiées** au registre), couvrant les **17 régions administratives** de la province. Chaque produit renvoie vers la **boutique d'origine** — aucune vente sur Fabri-Ka : prix, photos et stocks appartiennent aux marchands sources. |
| 23 | 15 | |
| 24 | 16 | Acheter québécois demande de connaître des centaines de boutiques dispersées — érablières, microbrasseries, savonneries, ébénistes, torréfacteurs, fermes… Fabri-Ka retourne le problème : un **pipeline de découverte** (35+ sources : certifications, associations, annuaires, marques régionales) recense les boutiques et les classe par **origine de fabrication (A–E)** avec évidence conservée ; des **connecteurs par plateforme ecommerce** — et non par site — aspirent les catalogues publics (le même code Shopify sert des centaines de boutiques, piloté par le registre `data/stores.json`) ; un **moteur de recherche plein-texte FTS5** les rend trouvables par catégorie, région, origine et prix. |
| 25 | 17 | |
| 26 | −## Visite guidée | |
| 27 | − | |
| 28 | −<table> | |
| 29 | − <tr> | |
| 30 | − <td align="center"><img src="frontend/public/doc/img/etape1.png" width="420"><br><sub><b>Accueil — le répertoire des produits d'ici : recherche, compteurs live et parcours par catégorie</b></sub></td> | |
| 31 | − <td align="center"><img src="frontend/public/doc/img/etape2.png" width="420"><br><sub><b>Recherche « érable » — 6 716 produits, filtres catégorie / région / origine et badges A–E</b></sub></td> | |
| 32 | − </tr> | |
| 33 | − <tr> | |
| 34 | − <td align="center"><img src="frontend/public/doc/img/etape3.png" width="420"><br><sub><b>Fiche produit — badge « A · Fabriqué au Québec », marque, catégorie et renvoi direct vers la boutique</b></sub></td> | |
| 35 | − <td align="center"><img src="frontend/public/doc/img/etape4.png" width="420"><br><sub><b>Répertoire des boutiques — plateforme, région, origine et taille de catalogue pour chaque marchand</b></sub></td> | |
| 36 | − </tr> | |
| 37 | − <tr> | |
| 38 | − <td align="center"><img src="docs/screenshots/categorie.png" width="420"><br><sub><b>Page catégorie SEO — « Érable & miel du Québec », l'une des ~350 pages programmatiques</b></sub></td> | |
| 39 | − <td align="center"><img src="docs/screenshots/catalogue.png" width="420"><br><sub><b>Tout le catalogue — pagination plein-texte FTS5 sur l'ensemble des produits agrégés</b></sub></td> | |
| 40 | − </tr> | |
| 41 | − <tr> | |
| 42 | − <td align="center"><img src="docs/screenshots/boutique.png" width="420"><br><sub><b>Fiche boutique — évidence de classification, fourchette de prix, dernière synchro et catalogue filtrable</b></sub></td> | |
| 43 | − <td align="center"><img src="docs/screenshots/boutique-medusa.png" width="420"><br><sub><b>Fiche boutique (Bijoux Medusa) — trouvée par balayage dédié, ventilation par catégories</b></sub></td> | |
| 44 | − </tr> | |
| 45 | − <tr> | |
| 46 | − <td align="center"><img src="docs/screenshots/stats.png" width="420"><br><sub><b>Stats — « Le Québec qui vend en ligne, en chiffres » + rapport de marché PDF téléchargeable</b></sub></td> | |
| 47 | − <td align="center"><img src="docs/screenshots/stats-page.png" width="420"><br><sub><b>Stats — répartition des prix et ventilation par catégorie, recalculées en continu</b></sub></td> | |
| 48 | − </tr> | |
| 49 | − <tr> | |
| 50 | − <td align="center"><img src="docs/screenshots/fabri-ka-mobile.png" width="420"><br><sub><b>Mobile — accueil avec barre d'onglets basse (accueil / produits / boutiques / recherche)</b></sub></td> | |
| 51 | − <td align="center"><img src="docs/screenshots/mobile-produit.png" width="420"><br><sub><b>Mobile — fiche produit avec bouton d'achat collant vers la boutique d'origine</b></sub></td> | |
| 52 | − </tr> | |
| 53 | −</table> | |
| 18 | +## Captures d'écran | |
| 19 | + | |
| 20 | +<p align="center"> | |
| 21 | + <img src="docs/screenshots/fabri-ka-desktop.png" width="640" alt="Accueil — desktop"> | |
| 22 | + <img src="docs/screenshots/fabri-ka-mobile.png" width="200" alt="Accueil — mobile"> | |
| 23 | +</p> | |
| 54 | 24 | |
| 55 | 25 | ## Fonctionnalités |
| 56 | 26 | |
@@ -64,49 +34,6 @@ Acheter québécois demande de connaître des centaines de boutiques dispersées | ||
| 64 | 34 | - **Mobile-first** — barre d'onglets, filtres en bottom sheet, galeries swipe, fr-CA d'abord. |
| 65 | 35 | - **Formulaire d'inscription** pour les marchands (`fabrika/inscriptions.py`). |
| 66 | 36 | |
| 67 | −## API principale | |
| 68 | − | |
| 69 | −Toutes les données servies au frontend passent par une API JSON publique (FastAPI) : | |
| 70 | − | |
| 71 | −| Endpoint | Rôle | | |
| 72 | −|---|---| | |
| 73 | −| `GET /api/products` | recherche paginée FTS5 : mot-clé, catégorie, région, origine A–E, fourchette de prix, tri | | |
| 74 | −| `GET /api/products/{uid}` | fiche complète d'un produit (galerie, boutique, produits liés) | | |
| 75 | −| `GET /api/stores` · `GET /api/stores/{store_id}` | répertoire des boutiques et fiche enrichie (stats de prix, livraison, catégories) | | |
| 76 | −| `GET /api/facets` | facettes dynamiques (catégories, régions, origines, comptes) | | |
| 77 | −| `GET /api/stats` · `/api/stats/extended` · `/api/stats/dashboard` | métriques agrégées et tableau de bord | | |
| 78 | −| `GET /api/report.pdf` · `/api/stats/report` · `/api/stats/catalog` · `POST /api/stats/report/custom` | rapports de marché PDF (standard et personnalisés) | | |
| 79 | −| `POST /api/sync` | déclenchement d'une synchronisation | | |
| 80 | −| `GET /robots.txt` · `/sitemap.xml` · `/sitemap-{name}.xml` | infrastructure SEO (sitemaps par chunks de 40 000 URLs) | | |
| 81 | − | |
| 82 | −## Pipeline de découverte & connecteurs | |
| 83 | − | |
| 84 | −**1. Découverte des boutiques** (`scripts/`) — harvest → aggregate → verify → classify → enrich, alimenté par 35+ sources (certifications, associations sectorielles, annuaires, marques régionales, balayages dédiés). Résultat : le registre `data/stores.json` — **3 507 boutiques QC vérifiées**, chacune classée par **origine de fabrication** avec évidence conservée : | |
| 85 | − | |
| 86 | −| Classe | Signification | | |
| 87 | −|---|---| | |
| 88 | −| **A** | Fabriqué au Québec | | |
| 89 | −| **B** | Conçu au Québec | | |
| 90 | −| **C** | Détaillant québécois | | |
| 91 | −| **D** | Mixte | | |
| 92 | −| **E** | À vérifier | | |
| 93 | − | |
| 94 | −**2. Aspiration des catalogues** (`fabrika/connectors/`) — **9 connecteurs par plateforme ecommerce**, et non par site : le même code sert des centaines de boutiques, piloté par le registre : | |
| 95 | − | |
| 96 | −| Connecteur | Technique | | |
| 97 | −|---|---| | |
| 98 | −| Shopify | `products.json` paginé, transport curl anti-429 | | |
| 99 | −| WooCommerce | Store API | | |
| 100 | −| Wix Stores | GraphQL | | |
| 101 | −| Squarespace | `?format=json` | | |
| 102 | −| Square Online | API publique du storefront | | |
| 103 | −| Votresite.ca | extraction dédiée (plateforme québécoise) | | |
| 104 | −| Immunotec | connecteur spécifique | | |
| 105 | −| Générique | sitemap → JSON-LD / microdata / OpenGraph | | |
| 106 | −| Scrapfly / Firecrawl | secours anti-bot pour les sites récalcitrants | | |
| 107 | − | |
| 108 | −**3. Ingestion** (`fabrika/ingest.py`) — upsert par **hash de contenu**, retraits avec **délai de grâce (2 syncs)**, journal `sync_log` par boutique. **Cadence : resynchronisation des catalogues aux 6 heures** (`run.py watch 360`, processus `fabri-ka-sync`). | |
| 109 | − | |
| 110 | 37 | ## Architecture |
| 111 | 38 | |
| 112 | 39 | | Composant | Rôle | |
@@ -139,12 +66,6 @@ Toutes les données servies au frontend passent par une API JSON publique (FastA | ||
| 139 | 66 | | `deliverables/` / `logs/` | exports produits par les scripts et journaux | |
| 140 | 67 | | `run.py` / `requirements.txt` | point d'entrée CLI (`sync`, `watch`, `serve`, `registry`) et dépendances backend | |
| 141 | 68 | |
| 142 | −## Documentation | |
| 143 | − | |
| 144 | −- **Guide d'utilisation en ligne** : [www.fabri-ka.com/doc/](https://www.fabri-ka.com/doc/) — visite pas à pas du site (accueil, recherche, fiche produit, répertoire des boutiques), avec captures annotées. | |
| 145 | −- **Guide PDF téléchargeable** : [fabri-ka-documentation.pdf](https://www.fabri-ka.com/doc/fabri-ka-documentation.pdf) — la même documentation, mise en page aux couleurs du site. | |
| 146 | −- Les captures du guide sont versionnées dans `frontend/public/doc/img/` (servies telles quelles par le site). | |
| 147 | − | |
| 148 | 69 | ## Développement (remote-first) |
| 149 | 70 | |
| 150 | 71 | La **source de vérité est le repo git sur le nœud M4M64a** (`~/fabri-ka`) — pas une copie laptop. Toute modification se fait sur le nœud via SSH : édition, build, redémarrage, puis commit/push depuis le nœud (agent forwarding actif). |
@@ -178,26 +99,19 @@ En production sur le **nœud M4M64a** du cluster MacLustr (`~/fabri-ka`), servi | ||
| 178 | 99 | |
| 179 | 100 | ## Écosystème Groupe KA |
| 180 | 101 | |
| 181 | −| Plateforme | Univers | | |
| 182 | −|---|---| | |
| 183 | −| [groupe-ka.com](https://www.groupe-ka.com) | portail & KA ID | | |
| 184 | −| [lou-ka.com](https://www.lou-ka.com) | logements à louer | | |
| 185 | −| [immo-ka.com](https://www.immo-ka.com) | propriétés à vendre | | |
| 186 | −| [vrai-prix.com](https://www.vrai-prix.com) | estimation immobilière | | |
| 187 | −| [auto-ka.com](https://www.auto-ka.com) | véhicules | | |
| 188 | −| [fabri-ka.com](https://www.fabri-ka.com) | produits québécois | | |
| 189 | −| [food-ka.com](https://www.food-ka.com) | épicerie/alimentation | | |
| 190 | −| [resto-ka.com](https://www.resto-ka.com) | restaurants | | |
| 191 | −| [sorti-ka.com](https://www.sorti-ka.com) | sorties et événements | | |
| 192 | −| [job-ka.com](https://www.job-ka.com) | emplois | | |
| 193 | −| [crea-ka.com](https://www.crea-ka.com) | créateurs | | |
| 194 | −| [trouve-ka.com](https://www.trouve-ka.com) | petites annonces | | |
| 195 | −| [api-ka.com](https://www.api-ka.com) | API de données | | |
| 196 | − | |
| 197 | −## Contact | |
| 198 | − | |
| 199 | −**Simon-Pierre Boucher** — fondateur, Groupe KA | |
| 200 | −📧 [contact@spboucher.ai](mailto:contact@spboucher.ai) | |
| 102 | +- [groupe-ka.com](https://www.groupe-ka.com) — portail | |
| 103 | +- [lou-ka.com](https://www.lou-ka.com) — logements à louer | |
| 104 | +- [immo-ka.com](https://www.immo-ka.com) — propriétés à vendre | |
| 105 | +- [vrai-prix.com](https://www.vrai-prix.com) — estimation immobilière | |
| 106 | +- [auto-ka.com](https://www.auto-ka.com) — véhicules | |
| 107 | +- [fabri-ka.com](https://www.fabri-ka.com) — produits québécois | |
| 108 | +- [food-ka.com](https://www.food-ka.com) — épicerie/alimentation | |
| 109 | +- [resto-ka.com](https://www.resto-ka.com) — restaurants | |
| 110 | +- [sorti-ka.com](https://www.sorti-ka.com) — sorties et événements | |
| 111 | +- [job-ka.com](https://www.job-ka.com) — emplois | |
| 112 | +- [crea-ka.com](https://www.crea-ka.com) — créateurs | |
| 113 | +- [trouve-ka.com](https://www.trouve-ka.com) — petites annonces | |
| 114 | +- [api-ka.com](https://www.api-ka.com) — API de données | |
| 201 | 115 | |
| 202 | 116 | --- |
| 203 | 117 | |
| 204 | 118 | |