Fabri-Ka
Every product made in Quebec, findable in a single search.
Fabri-Ka aggregates the full public catalogues of Quebec's online shops into one search engine — 291,017 products from 3,224 verified stores, live at www.fabri-ka.com.
291,017
Products aggregated
3,224
Verified Quebec stores
292,000+
Indexable pages
17/17
Administrative regions covered
20
Product categories
35+
Discovery sources harvested
Overview
Fabri-Ka is a discovery aggregator for products sold online by Quebec businesses — maple farms, microbreweries, soap makers, woodworkers, coffee roasters and more. It indexes 291,017 products from 3,224 verified Quebec stores across all 17 administrative regions and 20 categories, and makes them searchable with filters for category, region, price and manufacturing origin (classes A–E). Nothing is sold on Fabri-Ka itself: prices, photos and stock belong to the source merchants, and every product links back to its original shop.
A discovery pipeline harvests 35+ directory sources — certifications, producer associations, regional brands — then verifies each candidate's e-commerce platform and Quebec location signals before classifying its origin with preserved evidence. Unlike a classic aggregator with one connector per site, Fabri-Ka uses one connector per e-commerce platform: the same Shopify code serves hundreds of shops, alongside WooCommerce, Wix, Squarespace, a generic JSON-LD connector and a Scrapfly anti-bot fallback. A content-hash diff engine upserts into SQLite with FTS5 full-text search, and a PM2 watcher resynchronizes catalogues every 6 hours.
The backend is a FastAPI service exposing search, facets, stats and an on-the-fly PDF market report, plus a server-rendering SEO layer that injects full HTML, JSON-LD and sitemaps into the React 18 + Vite build — 292,000+ indexable pages with clean 301/404/410 statuses and ~350 programmatic category-by-region landing pages. Accounts use KA ID SSO with favorites synced to the Groupe KA hub. In production, three PM2 processes (web, sync watcher, tunnel) run on MacLustr cluster node M4M64a, exposed through ngrok at www.fabri-ka.com.
Key Features
Discovery Pipeline
Harvest, aggregate, verify, classify: 35+ directory sources (certifications, associations, regional brands) distilled into a registry of 3,224 verified Quebec stores with real e-commerce endpoint checks.
One Connector per Platform
Shopify, WooCommerce, Wix, Squarespace, a generic sitemap-to-JSON-LD connector and a Scrapfly fallback — the same platform code ingests hundreds of shops, driven by the stores.json registry.
Unified Full-Text Search
Accent-insensitive SQLite FTS5 search across 291,017 products with facets and filters for category, region, price range and origin class, plus rich per-store price statistics.
A–E Origin Classification
Every store is classified from 'made in Quebec' (A) to 'uncertain' (E), each class backed by preserved evidence — certifications, producer-association membership, or on-site wording — never assumption.
Server-Rendered SEO
A FastAPI catch-all injects full HTML, unique meta, JSON-LD (Product, Offer, BreadcrumbList) and chunked sitemaps into the Vite build — 292,000+ crawlable pages with proper 301/404/410 statuses.
KA ID SSO & Synced Favorites
Sign in with KA ID (JWT verified in pure stdlib), with favorites pushed to the central Groupe KA hub over HMAC-SHA256-signed requests — the hub is the single source of truth.
How It Works
Discovery Pipeline
Scripts harvest 35+ directory sources (sitemaps, hidden map APIs, htmx pagination, Firecrawl sessions), deduplicate 3,481 candidate domains, verify e-commerce and Quebec location signals, and classify origin A–E into the stores.json registry of 3,224 shops.
Platform Connectors
One connector per e-commerce platform pulls full public catalogues: Shopify products.json with anti-429 TLS transport, WooCommerce Store API, Wix Stores GraphQL, Squarespace JSON, a generic sitemap-to-JSON-LD connector, and Scrapfly as anti-bot backup.
Diff Engine & Storage
Products are upserted into SQLite by content hash with accent-insensitive FTS5 indexing; removed items get a two-sync grace period, and a PM2 watcher resynchronizes every store every 6 hours.
API & Server-Rendered SEO
FastAPI serves search, facets, store pages, stats and an on-the-fly PDF market report, while a catch-all SEO layer injects complete HTML, JSON-LD and auto-regenerated sitemaps (40,000 URLs per chunk) into every route of the Vite build.
Frontend, Accounts & Exposure
The React 18 SPA hydrates over the server-rendered content, keeping filters and search dynamic; KA ID SSO and 'Mon univers Ka' favorites sync with the Groupe KA hub, and ngrok exposes the whole platform at www.fabri-ka.com from cluster node M4M64a.
Tech Stack
Backend & Data
Frontend & SEO
Deployment
Highlights
- Aggregates 291,017 products from 1,266 Quebec shops with online catalogues, every listing linking back to its original store.
- Uses one connector per e-commerce platform instead of one per site, so the same Shopify code serves hundreds of boutiques.
- Classifies every store's manufacturing origin A–E with preserved evidence such as Aliments du Quebec certifications and producer-association memberships.
- Serves 292,000+ indexable pages, including ~350 programmatic category-by-region landing pages with real product counts and average/median prices.
- Enforces politeness with a global per-platform throttle (0.7 s per request across all Shopify stores) and an identified User-Agent.
- Went from provincial store census (3,224 verified shops) to an indexable production search engine in two days.
Explore Fabri-Ka
Every Quebec-made product in one search engine — the full source is on GitHub.