How it's built

This demo
Fully client-side: ~60 foods + 4 recipes bundled at build time, fuzzy ingredient matching in the browser.
Full version
FastAPI + DuckDB over 23,000+ foods from Fineli (FI) and Open Food Facts, with Finnish/English ingredient parsing.
Data plane
The full database runs on my own hardware, reached through an EC2 → Tailscale bridge — same pattern as the gear manager.
Why it matters
The public demo stays up even when the private backend is offline: the integration boundary is explicit.