Arjunvir Singh commited on
Commit
d92c5b9
Β·
1 Parent(s): 6938d2a

fix: restore full README after HF Space init merge

Browse files
Files changed (1) hide show
  1. README.md +50 -5
README.md CHANGED
@@ -1,10 +1,55 @@
1
  ---
2
- title: Grocery Prices
3
- emoji: πŸ“ˆ
4
- colorFrom: indigo
5
- colorTo: pink
6
  sdk: docker
 
7
  pinned: false
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: Canadian Grocery Prices
3
+ emoji: πŸ›’
4
+ colorFrom: yellow
5
+ colorTo: red
6
  sdk: docker
7
+ app_port: 7860
8
  pinned: false
9
+ short_description: Live Canadian grocery prices from 8 ingestion sources
10
  ---
11
 
12
+ # grocery-price-dashboard
13
+
14
+ Read-only public dashboard for the [grocery-price-rag](https://github.com/Arjun10g/grocery-price-rag) Canadian grocery price ingestion pipeline.
15
+
16
+ Live data: 165k+ price observations across StatCan provincial averages, Loblaws + Sobeys retailer APIs, Schema.org markup on long-tail grocers, and crowdsourced Open Food Facts. Refreshed every two weeks via Cloud Run + Cloud Scheduler.
17
+
18
+ ## Stack
19
+
20
+ - **Next.js 16** (App Router) + TypeScript + Tailwind 4
21
+ - **Supabase JS** with anon key β€” RLS gates read access (see [migration 20260505011514](https://github.com/Arjun10g/grocery-price-rag/blob/main/supabase/migrations/20260505011514_anon_read_policies.sql))
22
+ - **Recharts** for price-history charts
23
+ - Deployed via Docker on Hugging Face Spaces
24
+
25
+ ## Pages
26
+
27
+ | Route | What it does |
28
+ |---|---|
29
+ | `/` | Search + recent observations feed + table-count overview |
30
+ | `/search?q=...` | Product name + brand search (ILIKE; pg_trgm hybrid is future work) |
31
+ | `/products/[id]` | Price history chart, latest by retailer, all observations |
32
+ | `/sources` | Source confidence + recent pipeline runs (succeeded/failed/dlq) |
33
+ | `/stores` | 1,931 grocery stores grouped by province (from osm_overpass) |
34
+
35
+ ## Local dev
36
+
37
+ ```bash
38
+ cp .env.example .env.local
39
+ # Fill in NEXT_PUBLIC_SUPABASE_URL + NEXT_PUBLIC_SUPABASE_ANON_KEY
40
+ # (anon key is intentionally public β€” RLS gates what's readable)
41
+
42
+ npm install
43
+ npm run dev # http://localhost:3000
44
+ ```
45
+
46
+ ## What this dashboard is NOT
47
+
48
+ - Not a search engine (no semantic / embedding queries β€” those columns exist in the ingestion DB but the dashboard sticks to ILIKE)
49
+ - Not a notification service (no auth, no saved searches)
50
+ - Not a price-prediction tool (every row is a sighting, not a forecast)
51
+ - Not real-time (re-validates server-side at most once per minute via `revalidate`)
52
+
53
+ ## License
54
+
55
+ MIT.