Obsah článku
title: "Návrh a plán vývoja POS systému pre reštaurácie (PWA)"
slug: "pos-system-pwa-development-plan"
technologies: ["PWA", "JavaScript", "REST API", "HTTPS", "Service Worker", "Idempotency", "WebSockets"]
tags: ["pos", "pwa", "restaurant-tech", "offline-first", "api-design", "system-architecture"]
date_solved: "2025-08-21"
Projekt/Téma: Návrh a plán vývoja POS systému pre reštaurácie (PWA)
-
Cieľ / Problém na vyriešenie: Nahradiť existujúci, nespoľahlivý POS systém založený na UDP protokole novým, moderným riešením. Nový systém musí byť postavený na robustnej a spoľahlivej architektúre (HTTPS), musí byť schopný fungovať v offline režime (offline-first) a byť plne integrovaný s existujúcim podnikovým informačným systémom (
is.oit.sk). -
Použité technológie a nástroje:
- Frontend: Progresívna Webová Aplikácia (PWA)
- Komunikácia: Striktne REST API cez HTTPS (TCP)
- Offline funkčnosť: Service Worker, lokálne úložisko v prehliadači (napr. IndexedDB)
- Architektonické princípy: Idempotencia
- Real-time aktualizácie: Periodické dopytovanie (polling) alebo WebSockets
-
Kľúčové postupy a konfiguračné kroky:
- Backend (súčasť
is.oit.sk):- Rozšírenie existujúcej DB schémy o tabuľky špecifické pre POS (
pos_tables,pos_orders,pos_order_items,pos_terminals). - Vytvorenie nového API modulu (
Api\PosPresenter) s idempotentnými endpointmi pre správu stolov, objednávok, platieb a komunikáciu s kuchyňou. - Zapuzdrenie všetkej biznis logiky do novej fasády
PosFacade, ktorá bude slúžiť ako most medzi API a hlavnými ERP modulmi (Predaj, Fakturácia, Sklady).
- Rozšírenie existujúcej DB schémy o tabuľky špecifické pre POS (
- Frontend (PWA Aplikácia pre čašníkov):
- Inicializácia PWA (manifest, service worker).
- Vytvorenie UI pre mapu stolov s real-time aktualizáciou statusu.
- Implementácia UI pre objednávanie s offline frontou – všetky zmeny sa najprv ukladajú lokálne a synchronizujú sa so serverom, keď je dostupné pripojenie.
- Zabezpečenie idempotentnosti pri platbách generovaním unikátneho
X-Idempotency-Keyna strane klienta pre každú platobnú transakciu.
- Frontend (Kitchen Display System - KDS):
- Vytvorenie jednoduchého webového rozhrania, ktoré sa periodicky dopytuje na nové položky objednávok a umožňuje kuchyni/baru meniť ich stav.
- Backend (súčasť
-
Výsledné kódy a skripty: Projekt je v štádiu detailného plánovania. Kľúčové budú:
- Definícia API endpointov v
Api\PosPresenter.php. - Logika pre spracovanie a synchronizáciu offline fronty v
ServiceWorker.jsa hlavnom JS súbore PWA. - Biznis logika v
PosFacade.php, ktorá integruje POS operácie s existujúcimi ERP modulmi.
- Definícia API endpointov v
-
Zistené problémy a riešenia (Gotchas):
- Problém (predchádzajúceho systému): Nespoľahlivosť UDP protokolu vedie k strate dát a nekonzistentnému stavu.
- Riešenie: Striktné použitie HTTPS (TCP), ktoré zaručuje doručenie a správne poradie paketov.
- Problém: Dvojité zaúčtovanie platby pri zlom sieťovom pripojení (používateľ klikne dvakrát).
- Riešenie: Implementácia idempotencie pre všetky kritické operácie (hlavne platby) pomocou
X-Idempotency-Keyhlavičky. Server si pamätá kľúče a duplicitné požiadavky s rovnakým kľúčom ignoruje. - Problém: Aplikácia je nepoužiteľná pri krátkom výpadku Wi-Fi.
- Riešenie: Návrh "Offline-First" architektúry s lokálnou frontou zmien, ktorá sa synchronizuje so serverom, keď je to možné.
-
Finálny výsledok / Záver: Výsledkom bude detailný a komplexný plán vývoja, ktorý slúži ako roadmapa pre implementáciu moderného, spoľahlivého a plne integrovaného POS systému. Plán adresuje všetky známe nedostatky existujúceho riešenia a definuje robustné architektonické princípy pre budúci vývoj.