Skip to content

How Obrok Works ​

Public Summary ​

Obrok ("meal" in Macedonian) helps people in North Macedonia figure out where to shop so that a week of groceries fits inside the statutory daily meal allowance (140 MKD/day, six working days). Everything else in the system exists to make that one question answerable: what can I actually cook this week, where is it cheapest, and can I get there.

This section explains the four ideas that make that possible, in plain language, aimed at a reader who wants to understand the system's design without reading source code first:

  • Search & Recipe Decomposition — how a free-text query (or a whole recipe) turns into ranked, priced results.
  • Geolocation — how scraped store listings become map coordinates, and where that process is known to fail.
  • Routing & Map — how the map computes travel routes and renders hundreds of markets without stuttering.
  • System Architecture — the container/service topology all of the above runs on.

Internal Details ​

Why This Section Exists ​

The rest of this site (Backend, Frontend, Deployment, Patterns) is written as engineering reference documentation: file tables, endpoint lists, source anchors. That's the right shape for a contributor changing code, but the wrong shape for explaining why the system is built the way it is. The pages in this section are the opposite: prose first, one diagram, no file tables, each one links down into the matching reference page for anyone who wants implementation detail.

The Core Problem ​

Grocery prices in North Macedonia vary meaningfully between chains and even between branches of the same chain. A shopper deciding what to cook has to mentally cross-reference a recipe against prices at stores they can actually reach. Obrok automates that: scrape prices across chains, let a user describe what they want to eat (a product, or a full recipe), decompose it into a shopping list, price that list at every market that carries it, and rank markets by completeness, budget fit, and distance.

Reading Order ​

If you're presenting this as part of a thesis, a reasonable order is: this page, then Search & Recipe Decomposition (the most novel part), then Geolocation (the most concrete "here's a real problem we found and fixed" material), then Routing & Map, then System Architecture as the technical closing summary.

Source Anchors ​

PathRelevance
apps/server/src/shared/utils/obrokBudget.jsStatutory daily meal allowance calculation that anchors the whole product

Risks and Trade-offs ​

  • This section intentionally simplifies. Where it disagrees with a reference page on a detail, the reference page (and the source it cites) is authoritative.

Obrok engineering documentation.