Simon-Pierre Boucher
All apps & projects
Web Platform
TypeScript + Python

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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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

Python + FastAPI
SQLite + FTS5 (hash-diff engine)
Platform connectors (Shopify, Woo, Wix, Squarespace)
Scrapfly / Firecrawl anti-bot fallback

Frontend & SEO

React 18 + Vite + TypeScript
Server-side rendering with JSON-LD
Programmatic category/region pages
PWA-lite, fr-CA

Deployment

MacLustr cluster node M4M64a
PM2 (web + 6h sync watcher + tunnel)
ngrok tunnel
www.fabri-ka.com

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.