Ruoka

Grocery spending tracker

Turns grocery receipts into answers: where the money goes, what got more expensive and what to buy cheaper this week.

Why I built it

I wanted to know where my grocery money actually goes, and whether this week's offer is really cheaper than what I usually pay.

The basket index: what the things you buy cost now compared with a year ago, up 6,5 % on a 13-month chart.
Type
Web app, Data, AI
Status
In daily use
Code
Private
Revision
2026.10

The problem

Food prices keep moving, and a receipt tells you what you paid, but not whether it was a good price, what went up since last month or what the cheaper choice would have been.

What it does

How it’s built

Functional block diagram

Inputs

  • Lidl Plus receipts
  • Lidl shelf price list (daily)
  • Lidl and K-Ruoka offers
  • Open Food Facts

Core

  • Sync and receipt parser
  • SQLite, one file
  • Price history and receipt check
  • Cheaper swaps and offer matching
  • Coupon autopilot
  • AI search filters

Outputs

  • Phone web app (Hono API + React)
  • Command-line reports
Functional block diagram.

Specifications

Ruoka at a glance
PlatformPhone-first web app and a command-line tool
DataLidl Plus receipts, a shelf price list of about 37,000 products (daily), Lidl and K-Ruoka offers, Open Food Facts
StorageOne SQLite file on your own machine
LanguagesFinnish, English
StatusIn daily use
Built2026
StackTypeScript, Node.js, SQLite, Hono, React, Vite, vitest, Open Food Facts, LLM search
CodePrivate

Revision history

Revision history
RevDateChange
F2026-10-20Lidl's weekly offers and "For you this week" recommendations.
E2026-10-20Shopping list, readable product names and AI search.
D2026-10-17Cheapest protein view, new and gone products, receipt check against shelf prices.
C2026-10-17Shelf price list and price history, cheaper alternatives, categories, Lidl Plus coupons.
B2026-10-16Store offers from K-Ruoka matched against what you buy.
A2026-10-16First version: receipts synced into SQLite, spending report, phone web app.