Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

51 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Menu Atelier Café

Publiczne, dwujęzyczne menu i zaplecze operacyjne Marta Banaszek Atelier-Café. Aplikacja synchronizuje katalog z Dotykačką, udostępnia panel administracyjny, strefę kelnera, obsługę zamówień, rozliczeń kasowych, etapowej inwentaryzacji, grafiku i czasu pracy oraz rezerwacji.

Stos technologiczny

  • Next.js 16, React 19 i TypeScript
  • PostgreSQL 17 oraz Drizzle ORM
  • opcjonalny runtime Vinext/Cloudflare dla środowiska Sites
  • Docker Compose lub natywna usługa Node.js

Wymagania

  • Node.js >=22.13.0 i npm
  • PostgreSQL 17 albo Docker z obsługą Compose
  • dla skryptów Sites na Linuksie: flock, curl, sha256sum i GNU timeout

Instalacja lokalna

npm ci

Utwórz lokalną konfigurację tylko wtedy, gdy plik .env jeszcze nie istnieje:

test -e .env || cp .env_example .env

Następnie zastąp wszystkie wartości replace-with-... własnymi, losowymi danymi. Nie nadpisuj istniejącego .env. Prawdziwych haseł, tokenów, kluczy API, identyfikatorów prywatnych wdrożeń ani danych klientów nie wolno commitować.

Pełna lista wymaganych i opcjonalnych ustawień znajduje się w .env_example. Zmienne NEXT_PUBLIC_* trafiają do kodu przeglądarki i nie mogą zawierać sekretów.

Uruchomienie deweloperskie

npm run dev

Domyślny adres lokalny to http://localhost:3000.

PostgreSQL i migracje

DATABASE_URL jest wymagany przez aplikację i polecenia Drizzle. Po skonfigurowaniu pustej bazy uruchom:

npm run db:migrate

Nowe migracje po zmianach w db/schema.ts generuje:

npm run db:generate

Docker Compose

Po przygotowaniu .env:

docker compose up --build

Aplikacja będzie dostępna pod http://localhost:3000. Wolumeny menu_postgres i menu_uploads przechowują bazę oraz zdjęcia poza obrazem kontenera.

Kontrola jakości

npm run lint
npm run build:server
npm test

npm test wykonuje także build Vinext. Pomocnicze skrypty Sites używają projektowego katalogu .sites-runtime/, który jest lokalny i ignorowany przez Git.

Bezpieczeństwo integracji

  • Sekrety są używane wyłącznie po stronie serwera i pochodzą z ignorowanego .env lub chronionej konfiguracji usługi.
  • WAITER_POS_ACTIONS_ENABLED i DOTYKACKA_INVENTORY_WRITE_ENABLED są domyślnie wyłączone.
  • Prywatny .openai/hosting.json nie jest publikowany. Dla nowego środowiska skopiuj .openai/hosting.example.json do .openai/hosting.json i uzupełnij go lokalnie.
  • public/uploads/ jest przeznaczony na dane runtime i pozostaje poza repozytorium z wyjątkiem .gitkeep.
  • Endpoint synchronizacji wymaga SYNC_SECRET; webhook może używać osobnego DOTYKACKA_WEBHOOK_SECRET.

Rachunek dla gościa i ankiety

W strefie kelnera przycisk „Rachunek dla gościa” pobiera z Dotykački zamknięte rachunki z ostatnich 12 godzin. Kelner może wybrać dowolny stolik na dowolnym tablecie. Widok gościa korzysta z końcowego zamówienia w POS, dlatego uwzględnia pozycje zmienione w Dotykačce po pierwotnym wysłaniu zamówienia. Przekazanie tabletu wylogowuje kelnera, a „Zakończ” usuwa krótką sesję rachunku i wraca do menu gościa.

Każdemu pracownikowi można w panelu „Pracownicy i dostępy” ustawić własną treść podziękowania oraz przypisać do trzech lekkich animacji MP4, WebM lub GIF. Domyślny tekst brzmi „Dziękuję i zapraszam ponownie!”. Rachunek pokazuje imienne podziękowanie osoby przekazującej tablet i losuje jedną z jej animacji; wideo odtwarza się automatycznie, bez dźwięku i w pętli.

Ankieta przed zamówieniem pozostaje w waiter_survey_questions. Osobna ankieta po rachunku i jej odpowiedzi używają tabel guest_survey_questions oraz guest_survey_responses, tworzonych przez migrację 0028_guest_receipts.sql.

Kod QR wymaga ustawienia zmiennej GOOGLE_REVIEW_URL na dokładny, publiczny link „napisz opinię” z profilu Google firmy. Bez tej zmiennej rachunek i ankieta działają, ale kod QR jest ukryty.

Pracownicy, grafik i ewidencja czasu

Panel „Pracownicy i dostępy” skupia ustawienia dostępu, karty QR, indywidualne podziękowania oraz zwijane dane pracownika: stawkę godzinową, telefon i adres e-mail. Każda osoba ma niezależny przełącznik „Grafik: TAK/NIE”. Stan „NIE” blokuje nowe dyspozycje i planowanie po stronie interfejsu oraz serwera, ale zachowuje historyczne zmiany, czas pracy, rozliczenia i napiwki.

Jeżeli pracownik nie ma kodu kreskowego w Dotykačce, administrator może wygenerować go z panelu pracowników. Zapis wymaga osobnego potwierdzenia, używa aktualnej wersji rekordu ETag, nie nadpisuje kodu istniejącego w Dotykačce i po potwierdzeniu automatycznie udostępnia kartę QR czasu pracy.

Administrator układa plan w sekcji „KROK 2 — Ułóż i opublikuj grafik”. Wyraźny przycisk „+ Dodaj zmianę” jest dostępny, gdy co najmniej jeden aktywny pracownik ma ustawienie „Grafik: TAK”. Szkic nie jest widoczny dla zespołu do chwili publikacji.

Funkcje pracownicze wymagają migracji 0037–0042. Najnowsza migracja 0042_employee_profile_and_scheduling.sql dodaje ustawienie udziału w grafiku oraz prywatne pola profilu. Pełne zasady działania i lista kontroli po wdrożeniu znajdują się w docs/WORKFORCE_AND_RESERVATIONS.md.

Szczegóły wdrożenia znajdują się w docs/DEPLOYMENT.md, zasady grafiku, ewidencji i rezerwacji w docs/WORKFORCE_AND_RESERVATIONS.md, bieżące reguły produktów, kodów, tagów, filtrów i zdjęć w docs/MENU_CONFIGURATION.md, a zasady integracji magazynowej w docs/DOTYKACKA_INVENTORY_INTEGRATION.md. Operacyjną listę przygotowania POS zawiera DOTYKACKA_CHECKLIST.md.

Licencja i publikacja

Repozytorium nie zawiera pliku licencji. Przed redystrybucją kodu poza projekt należy ustalić warunki z właścicielem repozytorium.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages