SPB Git

spb/resto-ka

Public

Resto·Ka — tous les restaurants du Québec, menus complets et prix réels (famille ·Ka)

6.1 KB

# Resto·Ka — resto-ka.com

Restaurants Plats avec prix Régions Chaînes Menus complets

Prix Images Options Géocodage Tests Python React

Agrégateur exhaustif de tous les restaurants du Québec, avec leurs menus complets et leurs prix. Chaque resto, chaque plat, chaque prix — dans les 17 régions, au même endroit, comparable et cherchable — par resto ou par plat.

Plateforme de la famille ·Ka (Lou·Ka, Immo·Ka, Auto·Ka, Food·Ka, Fabri·Ka, Sorti·Ka). Architecture des connecteurs calquée sur Lou·Ka, identité visuelle « éditorial sharp » du Groupe KA (Space Grotesk / Inter / JetBrains Mono, papier-encre-lime, bordures encre + ombres décalées). CLAUDE.md est la source de vérité du projet.

# L'app

Accueil — recherche de restos Recherche par plat
Accueil Plats
Fiche resto — menu, photos, options & prix Couverture en direct
Fiche Stats

# Ce qui rend Resto·Ka différent

  • Prix réels : captés sur la plateforme de commande des restos eux-mêmes (Palier 1), pas sur les apps de livraison (+25-30 %).
  • Un prix n'est JAMAIS présenté sans son contexte (dine-in / takeout / delivery) — un menu sans price_context/price_source est rejeté à l'ingestion, et un menu salle n'est jamais écrasé par un menu livraison.
  • Recherche par plat dans les 79 159 items (groupée par marque pour ne pas répéter 76 fois la même poutine de chaîne).
  • Options & formats capturés avec leurs suppléments (« Mini +3,70 $ ») — ils changent le prix réel.
  • Historique des prix par item (item_price_log) à chaque changement.
  • Alerte de dérive : chute anormale du volume d'une source ou du nombre d'items d'un menu → retraits suspendus / ancien menu conservé.

# Démarrage

bash
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
cd frontend && npm install && npm run build && cd ..

.venv/bin/python run.py sync            # synchronise (+ géocode + dédup)
.venv/bin/python run.py serve 8115      # API + frontend sur :8115
.venv/bin/python run.py watch 168       # boucle hebdomadaire
.venv/bin/python -m pytest tests/       # 45 tests (fixtures réelles hors ligne)

# Architecture (patron Lou·Ka)

text
restoka/
├── connectors/       # un module par source/plateforme, auto-enregistrés
│   ├── base.py       #   requests direct / Firecrawl / Scrapfly + cache détail
│   └── ueat.py       #   UEAT (templatisé) — API GraphQL, prix TAKEOUT réels
├── schema.py         # Restaurant + menu imbriqué (sections→items→options) + finalize()
├── normalize.py      # prix, cuisines, type d'établissement, diètes, $-$$$$
├── regions.py        # ville → 17 régions (+ repli postal, + repli lat/lng)
├── db.py             # SQLite : restos, menus PAR CONTEXTE, historique de prix
├── ingest.py         # pipeline sync → geocode → dedup (délai de grâce, alertes)
├── dedup.py          # identité resto inter-sources (succursales jamais fusionnées)
├── geocode.py        # Nominatim + Adresses Québec, cache persistant
└── web.py            # FastAPI + frontend React (frontend/dist)
frontend/             # Vite + React 18 + TS — design éditorial sharp Groupe KA

# Sources connectées

Registre : data/sources.json (à consulter AVANT d'ajouter quoi que ce soit).

Source Palier Contexte de prix Couverture
OpenStreetMap (découverte, API Overpass) 4 — (fiches sans menu) 13 500+ établissements : tous les restos, fast-foods, cafés, bars, crèmeries et boulangeries nommés du Québec — 17/17 régions. Données © contributeurs OSM (ODbL).
UEAT (commande en ligne, API GraphQL anonyme) 1 takeout (prix réels) 29 intégrations : Sushi Shop (141), Poulet Rouge (82), Valentine (76), Normandin (44), Chocolats Favoris (41), Allô mon Coco (34), Thaïzone (26), Scores (25), Chez Ashton (23), Pacini (20), Boustan (65), Ben & Florentine (54), Pizzéria NO.900 (32), Sushi Taxi (30), Tutti Frutti, Mandy's, Cochon Dingue, Panda Boba-T, Salvatoré, Ryu Sushi, Impérial, La Belle Province, Madisons, Pizza Mia, Station W, Freddy, Le Super Qualité, Château Frontenac
St-Hubert 6 takeout (visé) à faire — anti-bot Akamai, voir data/sources.json

# Déploiement

Node M3U96b (MacLustr), ~/apps/resto-ka, PM2 : resto-ka (:8115) + resto-ka-ngrok (→ https://www.resto-ka.com) + resto-ka-sync (hebdo). Registre cross-session : ~/Desktop/cluster-skill/cluster-deployments.json.


Resto·Ka — plateforme du Groupe KA. Auteur : Simon-Pierre Boucher <contact@spboucher.ai>.

Files · 68e91c4a24c84caf0b9b615c277a8fa3494388ec
Menu

Theme