PWA / Operacje

GastroOps

Samodzielnie zbudowane offline-first PWA Nuxt 4 — projekt produktu, architektura, implementacja, testy i wdrożenie wykonane przez jednego developera — które zastępuje papierowe logi HACCP cyfrowym monitoringiem temperatur, zadaniami i ścieżkami audytu dla małych firm gastronomicznych.

Informacje o projekcie

Rola
Zdefiniowałem workflowy operacyjne i samodzielnie zbudowałem produkt, architekturę offline, integracje, testy oraz środowisko demo.
Okres
Lipiec 2026 · Niezależny prototyp produktu
Zespół
Projekt samodzielny · 1 developer
Dashboard GastroOps z zaległymi kontrolami i statusem HACCP

Wyzwanie

Małe firmy spożywcze — lodziarnie, kawiarnie, food trucki — potrzebują zgodności HACCP, ale papierowe logi są podatne na błędy i łatwo je zgubić. Rozwiązanie cyfrowe musi przetrwać niestabilny internet w sezonowych lub mobilnych lokalizacjach.

Kluczowa decyzja

Kolejkować każdą mutację lokalnie i synchronizować ją idempotentnie po powrocie sieci, aby praca HACCP nie zależała od połączenia.

Podejście

System powstał jako PWA Nuxt 4 z typowanym modelem domenowym i granicą repozytorium. Mutacje otrzymują idempotencyjne UUID, a endpoint synchronizacji przyjmuje ograniczone batch’e po powrocie sieci. Serwer ocenia zakresy temperatur, checklisty i wartości yes/no, otwiera niezgodności oraz wymusza działanie korygujące, retest i zamknięcie. Tryb demo używa repozytorium in-memory; adaptery serwerowe obejmują write-through do Baserow i ścieżkę SaaS opartą o SQLite.

Kluczowe elementy

  • Kolejka offline z UUID i idempotencją dla kontroli, raportów dziennych i dostaw
  • Ocena zakresów, checklist i yes/no ze stanami compliant, warning, critical i non-conformity
  • Cykl działania korygującego wymagający retestu przed zamknięciem
  • Uprawnienia według roli i lokalizacji oraz izolowany lookup urządzeń QR
  • Traceability dostaw i partii produktów z kontrolami bezpieczeństwa
  • Eksport kontroli sanitarnej z rekordami, rejestrami, audytem i informacją o zakresie

Architektura

  • Nuxt 4 z Vue 3 i TypeScript strict
  • Nuxt UI 4 i Tailwind CSS dla komponentów UI
  • Pinia wyłącznie do kolejki offline
  • Plugin Vite PWA dla service workera i cache
  • API Nitro za interfejsami repozytoriów dla demo in-memory, Baserow i trybu SaaS na SQLite
  • Walidacja Zod na wszystkich granicach danych
  • Testy jednostkowe Vitest i e2e Playwright

Weryfikacja

  • Testy kontraktu repozytorium pokrywają idempotencję, izolację QR, korekty, metryki dashboardu, zatwierdzanie szablonów i dostawy
  • Playwright prowadzi temperaturę poza zakresem przez niezgodność, działanie korygujące, retest i zamknięcie
  • Schematy Zod walidują requesty API i reguły między polami na granicach serwera

Obecne ograniczenia

  • Domyślne publiczne demo przechowuje stan w pamięci procesu, jeśli nie skonfigurowano opcjonalnego snapshotu
  • Adapter Baserow działa write-through i nie ma jeszcze kompletnego cache odczytów
  • Podpisywane uploady R2/S3 oraz przygotowana ścieżka Postgres nie są ukończonymi funkcjami produkcyjnymi

Rezultat

Kompletny źródłowo prototyp operacyjny z deterministycznym demo, przetestowanymi workflow HACCP i opisanym self-hostingiem. Trwałe wdrożenie multi-tenant nadal wymaga wyboru i konfiguracji produkcyjnego trybu repozytorium.

Nuxt 4Vue 3TypeScriptPWABaserowOffline-First