~/projects/tortilla-casa $ cat case-study.md
CASE STUDY — 02

Tortilla Casa — Multi-Store Ordering

A complete web + mobile ordering platform for a multi-city fast-food franchise — and a sister pizza brand launched on the same foundation.

Tech Lead 2023 — Present
Next.jsStrapi CMSPostgreSQLReact Native
01 — The Problem

One franchise, many cities, zero infrastructure

A growing Serbian fast-food franchise was taking orders by phone across multiple cities. Each store has its own menu, its own delivery zone, and its own kitchen capacity — but customers just want to type an address and order.

Placeholder: expand on the business constraints — peak-hour load, staff workflows, payment requirements in the local market.

bash
$ curl /api/order --data '{"address": "Bulevar 12, Niš"}'
resolving address → geo(43.32, 21.89)
matching delivery zones… 2 candidates
selected store: nis-centar (distance 1.2km)
menu loaded: 84 items, 12 modifier groups
02 — The Approach

Address-based routing and a CMS the staff actually use

Every order starts with an address. The platform geocodes it, matches it against per-store delivery polygons, and routes the customer to the right store’s menu — with product modifiers, combos, and pricing all managed in Strapi by non-technical staff.

Group ordering through shareable links lets an office order together; local bank payment integration handles the money without international gateways.

ts
 1// route order → nearest store whose zone contains the point 2const store = stores 3  .filter(s => contains(s.deliveryZone, point)) 4  .sort((a, b) => dist(a, point) - dist(b, point))[0]; 5  6if (!store) return outOfZone(); 7return menuFor(store.id); // per-store menu + modifiers
03 — The Architecture

One foundation, two brands, three platforms

Next.js web storefront and a React Native app share the same Strapi-backed API and PostgreSQL database. The architecture was deliberately brand-agnostic — when the owners launched a pizza brand, it shipped on the same foundation in a fraction of the time.

Next.js Web RN Mobile App Strapi API PostgreSQL Bank Payments Store Terminals
04 — The Results

The franchise runs on it

Phone orders moved online across every location, and the second brand launched on the shared platform. Placeholder: add order volume, growth numbers, or owner feedback.

0
brands on one codebase
0+
store locations routed
0%
orders flowing online
0
platforms: web, iOS, Android