Wszystkie case studies
2 aplikacje · 45 dni roboczychGastronomia · Franczyza2025–2026 · projekt zakończony
Case Study #03

MESO.
Dwie aplikacje,
jeden ekosystem gastro.

PWA do zamawiania jedzenia powstała w 25 dni roboczych. System POS pod model Central Kitchen — w 20. Potem spięliśmy je w monorepo z jedną zasadą: do bazy pisze tylko POS. Architektura jest gotowa na kiosk i aplikację mobilną jako kolejne kanały.

45 dni
dwie aplikacje dowiezione na produkcję
11
modułów biznesowych w POS
MESO · 2 aplikacje · 1 ekosystem
Delivery PWA · POS · Central Kitchen
MESOpos, Kitchen Display System
MESOpos, ekran sprzedaży
Meso Delivery, menu PWA

Od kuchni centralnej
po ekran klienta.

MESO · Delivery + POS · wersja demoKDS · Ekran sprzedaży · PWA klienta
25 dni
Meso Delivery
PWA: menu, koszyk, P24, lojalność, statusy na żywo.
20 dni
MESOpos
11 modułów: od KDS, przez FEFO, po food cost.
25
endpointów REST API v1
JWT + API keys. Jedyna droga zapisu do bazy.
150+
testów
Vitest + Playwright, w tym smoke testy na produkcji.

25 i 20 dni to osobne projekty: aplikacja kliencka i POS. Trzecim etapem była migracja do wspólnego monorepo i pełna integracja.

MESO to franczyzowy koncept „Smart Asian Comfort” — japoński comfort food w modelu, który oszczędza na czynszu i personelu, a inwestuje w produkt. Operacyjnie wygląda to tak: jedna Kuchnia Centralna produkuje buliony, marynaty i sosy, a sprzedają mobilne punkty — food trucki i kioski.

Ten model jest świetny biznesowo i bezlitosny technologicznie. Gotowe systemy POS zakładają restaurację z jedną kuchnią i jednym magazynem. Marketplace'y dostawowe biorą prowizję od każdego zamówienia i zabierają relację z klientem. A franczyza potrzebuje od pierwszego dnia czegoś, co zwykle mają dopiero sieci po latach: centralnej kontroli receptur, kosztów i zapasów w wielu lokalizacjach naraz.

Zamiast naginać gotowce, zbudowaliśmy własny ekosystem. Od zera.

IAkt

Własny kanał zamówień w 25 dni roboczych.

Meso Delivery to instalowalna aplikacja PWA do zamawiania z dostawą i odbiorem. Własny kanał sprzedaży zamiast prowizji marketplace'ów: menu z wariantami i dodatkami, koszyk z sugestiami, płatności BLIK/karty/Przelewy24, program lojalnościowy MESO Club i status zamówienia na żywo.

Jedna aplikacja, każdy ekran.
PWA instaluje się na telefonie i działa jak natywna.
Meso Delivery, menu w PWA na telefonie
Menu → koszyk → płatność
BLIK, karty, Przelewy24. Zamówienie trafia do kuchni dopiero po potwierdzonej płatności.
Status na żywo
Supabase Realtime pcha status z kuchni na ekran klienta. Bez odświeżania strony.
Kliknij zakładkę ponownie
Menu → karta dania → koszyk → checkout, krok po kroku.
Ekran 01Meso Delivery · menu, karta dania, koszyk, checkout · mobile / tablet / desktopInteraktywne
Wideo 01Meso Delivery · showcase aplikacji · desktop + mobileLoop · 50 sek.

Wyzwanie #1 — zamówienie, które nie ma prawa zginąć.

Klient zapłacił, więc zamówienie musi dotrzeć do kuchni — nawet jeśli POS akurat nie odpowiada. Webhook płatności Przelewy24 wyzwala submission do POS API; jeśli POS jest niedostępny, zamówienie ląduje w kolejce retry z backoffem, a idempotentność (external_order_id) gwarantuje, że ponowienie nie stworzy duplikatu.

01
Klient płaci
BLIK / karta / P24. Webhook płatności potwierdza wpłatę.
02
Submission do POS
Delivery wysyła zamówienie do POS API. Typowany klient, retry z backoffem.
03
POS nie odpowiada?
Zamówienie czeka w kolejce retry. Idempotentność wyklucza duplikaty.
04
Kuchnia gotuje
Zamówienie ląduje na KDS. Kucharz zmienia statusy jednym dotknięciem.
05
Klient widzi status
Webhook HMAC → Delivery → Supabase Realtime → ekran klienta. W sekundę.
Meso Delivery, śledzenie zamówienia: oś statusów, szacowany czas dostawy i kurier
Krok 05 na ekranie klienta: oś statusów, ETA i kurier.
Diagram 01Cykl życia zamówienia: od płatności po status na ekranie klienta5 kroków
IIAkt

POS pod Central Kitchen w 20 dni roboczych.

MESOpos nie jest zwykłą kasą. To system operacyjny całej sieci — 11 modułów biznesowych w architekturze modular monolith, zaprojektowanej pod model: Kuchnia Centralna produkuje, punkty sprzedają.

Sprzedaż (POS)
Ekran kasowy z wariantami, modyfikatorami i koszykiem.
Kuchnia (KDS)
Kolejka zamówień na ekran kuchni: timery, priorytety, uwagi.
Magazyn
Magazyny KC i punktów, przesunięcia, inwentaryzacje, straty.
Partie i FEFO
Batch tracking z datami przydatności. First Expired, First Out.
Receptury (BOM)
Zagnieżdżone receptury z automatyczną kalkulacją food cost.
Menu
Produkty, kategorie, warianty, dostępność per punkt.
CRM i lojalność
Profile klientów, segmentacja RFM, punkty i progi.
Zamówienia online
Widok zamówień spływających z aplikacji Delivery.
Dostawy
Śledzenie dowozów z dopasowywaniem adresów.
Pracownicy
Rejestracja czasu pracy, clock-in z poziomu punktu.
Użytkownicy i role
Uprawnienia, panel administratora, klucze API.

Wyzwanie #2 — FEFO, czyli magazyn, który myśli datami.

W gastronomii nie wystarczy wiedzieć ile czego jest. Trzeba wiedzieć która partia i do kiedy. Każde przyjęcie towaru tworzy partię z datą przydatności; rozchód zdejmuje automatycznie z partii o najkrótszej dacie (First Expired, First Out). Kierownik punktu widzi nadchodzące przeterminowania, zanim staną się stratą.

Wyzwanie #3 — food cost bez Excela.

Receptury w MESO są zagnieżdżone: marynata wchodzi do bulionu, bulion do ramenu. Zmiana ceny jednego składnika w Kuchni Centralnej przelicza koszt każdego dania w całej sieci. Właściciel widzi marżę na poziomie pozycji menu — na żywo, nie w kwartalnym arkuszu.

Ekran 02MESOpos · 6 kluczowych ekranów · wersja demo z danymi przykładowymiInteraktywne
IIIAkt

Monorepo: dwie aplikacje, jedna prawda.

Dwie działające aplikacje to za mało, jeśli mają rosnąć razem. Trzecim etapem była migracja do Turborepo z trzema współdzielonymi pakietami: @meso/core (typy, enumy, schematy Zod), @meso/api-client (typowany klient HTTP z retry i backoffem) i @meso/supabase.

Całość trzyma się jednej zasady architektonicznej: do bazy pisze wyłącznie POS API. Delivery i każdy przyszły kanał rozmawiają z POS przez REST. Nowy kanał sprzedaży to klient API, nie nowy system.

Delivery PWA
kanał klienta
POS UI
kanał operacyjny
Kiosk
gotowość architektury
Aplikacja mobilna
gotowość architektury
REST /api/v1/* · JWT + API keys← webhooki HMAC-SHA256 + retry
POS API
25 endpointów · jedyny zapis do bazy
SQL · Row-Level Security← Realtime → ekran klienta
Supabase PostgreSQL
82 migracje · RLS · Realtime
Diagram 02Architektura ekosystemu · jedna droga zapisu, wiele kanałówOnly POS writes

POS aktywnie powiadamia Delivery o zmianach statusu przez webhooki podpisane HMAC-SHA256 z retry, a Supabase Realtime dostarcza status na ekran klienta w sekundę od kliknięcia kucharza w KDS. Synchronizacja menu działa w jedną stronę: edytujesz produkt raz, oba kanały są aktualne.

Produkcja to nie demo. Traktuję ją jak produkcję.

Dostęp do danych
Row-Level Security (Supabase)
API
JWT + klucze API z granularnymi uprawnieniami
Webhooki
Podpis HMAC-SHA256 · retry · idempotentność
Płatności
Przelewy24: BLIK, karty · zwroty z poziomu POS
Testy
150+ — Vitest unit + Playwright E2E + smoke na produkcji
Monitoring
Sentry w obu aplikacjach
CI / hosting
Vercel, środowiska preview, 82 migracje bazy
Stack — wybór pod problem, nie pod CV
Next.jsTypeScript (strict)ReactSupabase + RLSTurborepoZustandReact QueryZodTailwind CSSshadcn/uiPrzelewy24PlaywrightVitestSentryVercel
  1. Discovery i specyfikacjaModel operacyjny KC + punkty przełożony na specyfikację funkcjonalną POS i spec PWA.
  2. ArchitekturaModular monolith, kontrakty API, zasada „only POS writes”.
  3. Design i build DeliveryPWA od landing page po checkout z Przelewy24.
  4. Build POS11 modułów: KDS, magazyn FEFO, receptury BOM, CRM, pracownicy.
  5. IntegracjaAPI v1, webhooki HMAC, kolejki retry, idempotentność.
  6. Migracja do monorepoTurborepo, współdzielone pakiety, jeden pipeline.
  7. Jakość150+ testów, Sentry, smoke testy na produkcji.
  8. Utrzymanie i rozwójIteracje, poprawki i monitoring przez cały czas życia produktu na produkcji.

Bez przekazywania między PM, analitykiem, designerem i developerem. Jedna osoba, która zna ten ekosystem od pierwszego dnia — każda kolejna iteracja jest tańsza i szybsza, bo nikt nie musi się od nowa uczyć kontekstu.

MESO dostało własny kanał zamówień bez prowizji i POS szyty pod swój model operacyjny.

Franczyza dostała w 45 dni roboczych infrastrukturę, którą sieci budują latami: centralne receptury i koszty, magazyny z FEFO, KDS w kuchni i zamówienia online z płatnościami — wszystko w jednym ekosystemie, w którym nowy punkt sprzedaży to wpis w bazie, a nowy kanał to klient API.

Sam koncept MESO został zamknięty w marcu 2026 — z powodów biznesowych, nie technologicznych. System przeszedł pełny cykl: od specyfikacji, przez produkcję i realne zamówienia z płatnościami, po wygaszenie. Kod i architektura zostały u właściciela — gotowe na kolejne wdrożenie.

45 dni roboczych. Dwie aplikacje. Jedna architektura.

Budujesz sieć gastro i sklejasz operacje z pięciu programów?