# Live keuken en bar

De broncode en installatie staan in C:\laragon\www\dinesync. Apache serveert http://dinesync.test. Laravel Reverb verzorgt directe WebSocket-push zonder polling of wachtrij.

## Starten

Start Apache en MySQL in Laragon en dubbelklik op start-live.cmd in de projectmap. Laat dit proces draaien. De live server gebruikt lokaal poort 8080; start geen tweede exemplaar op dezelfde poort. Na een herstart van de computer moet ook deze server opnieuw starten. Voor een beheerde productieomgeving gebruik je een procesmanager die Reverb automatisch herstart.

Installatie op een nieuwe machine: composer install, vul REVERB_APP_KEY en REVERB_APP_SECRET met willekeurige waarden in .env, php artisan migrate en php artisan reverb:start. Sleutels en .env horen niet in Git. De browser ontvangt alleen de publieke app-key. Pusher JS 8.4.0 is lokaal meegeleverd onder public/vendor/pusher (MIT).

## Gebruik

Open Keuken POS of Bar POS in de zijbalk. Elke knop vertegenwoordigt één besteld stuk. Aangevinkte stukken blijven op de bon totdat alle stukken voor die afdeling klaar zijn. Drank gaat uitsluitend naar de bar. Beide afdelingen kunnen gelijktijdig werken aan dezelfde ronde.

Onder Bestellingen kan de bediening een klaar item als Geserveerd markeren. Het gastenoverzicht toont aantallen klaar en Geserveerd apart. Zo blijft duidelijk wat nog onderweg is. Het overzicht werkt automatisch bij zonder de winkelmand te wissen.

Bij een onderbroken verbinding verandert de live status. Bij herverbinden haalt het scherm direct de actuele stand op. De knop Opnieuw controleren blijft beschikbaar. Bestellingen worden altijd eerst in de database vastgelegd; problemen met de live server draaien een geldige bestelling niet terug. Mislukte pushes worden gelogd. Een live verbinding is afhankelijk van een werkend netwerk; letterlijk nul milliseconden vertraging bestaat niet.

Toegang: POS lezen vereist orders.view, afvinken en serveren vereist orders.update_status. Privékanalen zijn restaurantgebonden; gasten kunnen uitsluitend het kanaal van hun eigen browser-tafelsessie openen. Uitgaande berichten bevatten geen namen of bestelregels, alleen een signaal om de geautoriseerde gegevens op te halen.

## Netwerk en hosting

De lokale server luistert standaard alleen op 127.0.0.1. Voor echte tablets op het restaurantnetwerk configureer je een bereikbare REVERB_PUBLIC_HOST, de serverbinding, poort en REVERB_ALLOWED_ORIGINS. Wijzig firewall/reverse proxy bewust. Gebruik HTTPS/WSS bij online hosting; stem REVERB_SCHEME en de poort af op de TLS reverse proxy. Start Reverb opnieuw na configuratiewijzigingen. De server-side REVERB_HOST mag intern blijven; de publieke host is alleen voor browsers.

## Controle

php artisan test test keuken/bar-scheiding, voortgang per stuk, herhaalde acties, serveren, restaurantrechten en gastkanalen. De testdatabase is SQLite in het geheugen. Er worden daarbij geen restaurantgegevens in MySQL vervangen.
