Real-time, bilingual restaurant ordering system with three
roles — Waiter, Kitchen, and Admin — each protected at the
layout level. Waiters browse the menu and submit orders; a
custom Node.js + Socket.io server pushes them
to the kitchen board instantly with no polling. Kitchen staff
move orders through SENT → IN_PROGRESS → READY;
status changes fire a live toast notification to the waiter
anywhere in the app. Cart state managed with
Zustand; Order +
OrderItem records created atomically via a single
Server Action. Full Arabic/English i18n with
next-intl, automatic RTL/LTR switching, and bilingual data
stored at the DB level (nameAr/nameEn).
30+ Vitest + React Testing Library tests
covering Zustand store logic and role-aware UI components.