- Două moduri de acces — QR sau URL direct
Clienții pot ajunge pe pagina de meniu în două moduri:
Prin scanarea codului QR de pe masă — Codul QR fizic de pe masă conține un token unic care identifică masa și locația. Clientul scanează, accesează meniul și poate plasa o comandă la masă fără a crea un cont.
Prin URL direct sau link — Accesând adresa locației (ex: /ro/cluj-napoca/pizzeria-cristina/) se poate vizualiza meniul și plasa comenzi de tip Ridicare sau Livrare, dar este necesar un cont. - Comenzi la masă — fără cont (prin cod QR)
Aceasta este singura metodă prin care se poate comanda fără a fi autentificat. Clientul care scanează QR-ul de pe masă:
— Accesează meniul complet al locației
— Adaugă produse în coș
— Poate personaliza produsele (elimina ingrediente, adăuga toppinguri, lăsa notițe)
— Plasează comanda direct, fără nicio înregistrare
— Poate urmări statusul comenzii sale în timp real pe același ecran
— Poate solicita nota de plată direct din aplicație
Tipul de comandă este întotdeauna „la masă" (dine-in) și nu poate fi schimbat din modul QR. - Comenzi Ridicare și Livrare — necesită cont
Comenzile de tip Ridicare (takeaway) și Livrare (delivery) nu pot fi plasate fără un cont. Fluxul este:
1. Clientul accesează pagina locației prin link
2. Adaugă produse în coș
3. Selectează tipul de comandă (Ridicare sau Livrare)
4. La apăsarea „Plasează comanda", dacă nu este autentificat, este redirecționat la pagina de login
5. Coșul este salvat automat înainte de redirecționare — nu se pierde nimic
6. După autentificare, clientul este adus înapoi la pagina locației
7. Comanda este trimisă automat, fără a mai fi necesar să apese din nou butonul - Tipurile de comenzi disponibile
Platforma acceptă trei tipuri de comenzi, iar disponibilitatea fiecăruia depinde de setările locației:
La masă (dine-in) — disponibil prin scanare QR, fără cont necesar, fără taxă de livrare
Ridicare (takeaway) — clientul vine să ridice personal comanda, necesită cont, fără taxă de livrare
Livrare (delivery) — comanda ajunge la adresa clientului, necesită cont, adresă de livrare obligatorie, se aplică taxa de livrare și comanda minimă (dacă sunt setate)
Dacă locația permite un singur tip de comandă, selectorul dispare și tipul se aplică automat. - Coșul de cumpărături
Coșul funcționează atât în browser (fără internet, instantaneu) cât și sincronizat cu serverul:
— Produsele adăugate rămân în coș chiar dacă pagina este reîncărcată
— La autentificare, coșul salvat anterior este restaurat automat
— Același coș poate fi continuat după login, fără a pierde produsele selectate
— Coșul se șterge automat după plasarea cu succes a comenzii
Fiecare produs din coș poate avea: variantă selectată, toppinguri alese, ingrediente eliminate și o notiță personală. - Vizualizarea și căutarea produselor
Produsele sunt organizate pe categorii și subcategorii (ex: Pizza → Clasică, Specială). Sunt afișate doar categoriile care conțin produse disponibile.
Căutare în timp real — tastând în câmpul de căutare, se filtrează instantaneu produsele după nume și descriere, afișând maximum 7 rezultate sugerate.
Fiecare card de produs poate afișa:
— Imagine și galerie foto (cu slideshow automat la 5 secunde)
— Preț și preț redus (cu procentul de reducere dacă există promoție)
— Badge-uri: 🌶️ Picant, 🌿 Vegetarian, 🌱 Vegan
— Timp estimat de preparare
— Calorii (dacă sunt introduse de locație) - Personalizarea produselor
La adăugarea unui produs în coș, clientul poate personaliza comanda prin modalul produsului:
Variante — unele produse vin în mai multe variante (ex: mărimi pentru pizza, gramaje). Fiecare variantă are propriul preț. Sunt afișate ca butoane de selecție.
Eliminare ingrediente — clientul poate apăsa pe un ingredient din lista produsului pentru a-l elimina din comandă (ex: „fără ceapă", „fără măsline"). Sunt disponibile doar ingredientele marcate de locație ca eliminabile.
Toppinguri — adaosuri opționale cu preț separat (ex: „extra parmezan"). Clientul selectează cantitatea dorită, în limita maximului permis per topping.
Notiță personală per produs — câmp liber pentru instrucțiuni specifice (ex: „bine prăjit", „fără sare").
Notiță generală pentru toată comanda — câmp disponibil în coș, aplicabil întregii comenzi. - Alergeni și informații nutriționale
Informațiile despre alergeni sunt afișate în modalul fiecărui produs cu iconiță ⚠️. Platforma afișează și:
— Lista completă de ingrediente (cu posibilitate de a marca cele eliminabile)
— Valoarea calorică (dacă este introdusă de locație)
— Informații suplimentare sub formă de etichete (ex: „Preparat proaspăt", „Fără gluten")
Aceste informații sunt furnizate de locație și pot varia. - Notițe traduse automat cu Gemini AI
Clienții pot lăsa notițe în orice limbă. Sistemul detectează automat limba și, dacă aceasta diferă de limba locației, traduce notiția pentru personalul din bucătărie sau pentru ospătar.
Exemplu: Clientul scrie „Please put more meat!" — ospătarul vede „Vă rog puneți mai multă carne!"
— Butonul 🌐 de lângă notiță permite ospătarului să vadă și textul original al clientului
— Dacă traducerea nu este posibilă (eroare API), notiția originală este afișată nemodificată, comanda nu este blocată
— Sunt traduse atât notițele per produs cât și notița generală a comenzii - Urmărirea statusului comenzii în timp real
După plasarea comenzii, clientul poate urmări progresul acesteia direct pe pagina locației, fără reîncărcare manuală (actualizare automată la 8 secunde):
⏳ În așteptare — comanda a fost primită, așteaptă confirmarea personalului
✅ Confirmată — personalul a confirmat comanda
👨🍳 Se prepară — bucătăria lucrează la comandă
🛎️ Gata de ridicare — comanda este pregătită (pentru comenzile la masă și ridicare)
📦 Pregătit pentru livrare — comanda este ambalată și urmează să fie expediată (doar pentru livrare)
✅ Comanda a fost livrată — comanda a ajuns la client (doar pentru livrare)
✅ Finalizată — comanda a fost predată clientului (la masă și ridicare)
❌ Anulată — comanda a fost anulată, motivul poate fi vizibil
Clienții fără cont (mod QR) urmăresc comanda prin token-ul de sesiune anonim. Clienții autentificați văd toate comenzile din ultimele 24 de ore. - Solicitarea notei de plată
Clienții care au comandat la masă pot solicita nota de plată direct din aplicație, fără a chema ospătarul:
— Butonul „🧾 Solicită nota" trimite o notificare instantă la personalul locației
— Ospătarul vede o alertă animată în interfața sa de lucru
— Cererea nu poate fi trimisă de două ori pentru aceeași comandă (prevenire duplicate) - Program, disponibilitate și sezonalitate
Pagina reflectă în timp real starea locației:
Locație deschisă — meniul complet este accesibil, comenzile pot fi plasate
În afara programului — pagina funcționează în mod „doar vizualizare"; comenzile nu pot fi plasate
Închisă manual — operatorul a dezactivat temporar comenzile; clientul este informat
Sezon — locațiile cu activitate sezonieră afișează un mesaj cu data de redeschidere dacă nu sunt în sezon
Programul suportă ore multiple pe zi (ex: pauza de prânz), fusuri orare configurabile și formatul cu zile individuale. - Date de contact pentru Ridicare și Livrare
La plasarea unei comenzi de tip Ridicare sau Livrare, clientul este rugat să completeze câteva date de contact necesare pentru procesarea comenzii:
Nume (opțional) — numele clientului, afișat personalului pentru o identificare mai ușoară la ridicare sau livrare
Număr de telefon (obligatoriu) — folosit de personal pentru a contacta clientul în cazul în care apar întârzieri, modificări sau probleme cu livrarea; permite ospătarului sau curierului să sune direct clientul cu un singur click din interfața de lucru
Adresă de livrare (obligatorie doar pentru Livrare) — adresa completă la care se trimite comanda
Personalul locației vede aceste date direct pe cardul comenzii: „📞 Ion Popescu: 0712 345 678" — numărul este clickable pentru apel direct. - Livrare — taxă, comandă minimă și flux de status
Pentru comenzile de tip Livrare se aplică reguli suplimentare:
Taxă de livrare — sumă fixă afișată clar în coș, adăugată la total
Comandă minimă — dacă subtotalul coșului este sub limita impusă de locație, se afișează un mesaj de eroare cu suma exactă necesară; comanda nu poate fi plasată până nu este atinsă valoarea minimă
Adresă de livrare obligatorie — câmpul devine roșu și apare un mesaj de eroare dacă adresa nu este completată
Taxa de livrare și comanda minimă sunt stabilite individual de fiecare locație.
Fluxul de status pentru comenzile cu livrare este diferit față de comenzile la masă:
Gata de livrare — comanda este ambalată și pregătită pentru expediere (secțiune distinctă, cu culoare portocalie)
📦 Livrat din magazin — personalul confirmă că comanda a plecat; clientul vede statusul „✅ Comanda a fost livrată" - Metode de plată
În versiunea actuală a platformei, plata se efectuează la livrarea comenzii, direct cu personalul locației. Nu există procesare de plăți online prin platformă. Statusul plății este actualizat de ospătar sau de administrator din panoul de administrare. - Securitate și protecția datelor
Platforma include mai multe măsuri de securitate:
Prețurile sunt verificate server-side — prețul final al unui produs este întotdeauna cel din baza de date, nu cel trimis de browser; nu este posibilă manipularea prețurilor
Date sanitizate — toate datele introduse de client sunt curățate înainte de salvare
Identificare anonimă — clienții QR sunt identificați printr-un cod unic generat automat, fără a stoca date personale
Autorizare la cererea notei — sistemul verifică în 3 niveluri dacă solicitantul are dreptul să ceară nota pentru acea comandă - Suport multilingv complet
Întreaga pagină — categorii, produse, descrieri, mesaje — este disponibilă în mai multe limbi. Limba afișată este detectată automat după preferința browserului sau poate fi selectată manual.
Adresele URL sunt și ele localizate: același restaurant poate fi accesat la /ro/nadrag/pizzeria-cristina/ sau /en/nadrag/pizzeria-cristina/.
Traducerile produselor, categoriilor și descrierilor sunt gestionate de operatorii locației prin panoul de administrare.