Ir al contenido

Qué pasa cuando un cliente entra al restaurante

Diez pasos, desde que el cliente se sienta hasta que paga. Para cada paso: qué ve el cliente, qué hace el staff, qué hace Ordina entre bastidores.

Ordina no es una app que el cliente descarga. Tampoco es un TPV. Es la capa intermedia: entre el cliente hambriento y la cocina, entre la caja y el fisco. Este es un día típico en nuestro local de Punta Ala, verano 2026, contado paso a paso.

  1. 01

    El cliente llega

    Cliente
    Se sienta en la mesa que le ha indicado el host, deja las llaves, mira afuera. Huele a pan fresco.
    Staff
    Le saluda, le acompaña a la mesa, le dice 'acerca el móvil aquí para el menú' y señala la etiqueta NFC en la mesa.
    Ordina
    Nada todavía. La sesión de la mesa se abre en el primer tap.
  2. 02

    El tap NFC

    Cliente
    Acerca el móvil a la etiqueta en la mesa. Safari/Chrome se abre con el menú del restaurante. Sin app que descargar, sin cámara, sin login.
    Staff
    Nada. Es el momento del cliente.
    Ordina
    Crea una BillSession para esa mesa. Carga el menú en el idioma del navegador (italiano o inglés, por defecto italiano). Si existe una reserva confirmada para esa mesa en el turno actual, la marca como 'llegado' automáticamente.
  3. 03

    Navega el menú

    Cliente
    Desplaza los platos por categoría. Toca uno, ve una foto grande, descripción, alérgenos, modificadores (p. ej. 'pasta sin gluten', 'aceite extra'). Añade al carrito con un toque.
    Staff
    Continúa atendiendo otras mesas.
    Ordina
    Todo el menú está en caché (ISR 60 s) — carga instantánea. Fotos cargadas de forma diferida. Sin llamada al servidor hasta el envío del pedido.
  4. 04

    Compone el pedido

    Cliente
    Añade platos, escribe una nota libre ('sin cebolla') en el campo de texto, ve actualizarse el total. Pulsa 'Enviar pedido'.
    Staff
    Se acerca solo si el cliente levanta la mano (botón 'Llamar camarero' en la app — pg_notify al staff).
    Ordina
    El payload del pedido se guarda en localStorage hasta que el servidor lo confirma. Si el cliente pierde la señal, el envío espera a que vuelva la conexión.
  5. 05

    El pedido sale

    Cliente
    Ve una página de seguimiento: 'Pedido recibido, esperando aceptación'. Línea de tiempo visible.
    Staff
    Aparece una nueva tarjeta de pedido en el panel, con un pitido y una suave vibración de la tablet. Número de mesa grande, contenido compacto.
    Ordina
    Insert del Order en PG, pg_notify('orders'), SSE push a todos los clientes suscritos al canal del tenant. Latencia inferior a 200 ms.
  6. 06

    El staff acepta

    Cliente
    Ve 'Pedido aceptado' con un ETA de 12 min. Sin recargar — la página se actualiza sola.
    Staff
    Pulsa 'Aceptar' en la tablet. El pedido pasa al KDS en cocina, agrupado por categoría (primeros, segundos, guarniciones).
    Ordina
    Actualiza OrderStatus → ACCEPTED, escribe OrderStatusEvent, emite pg_notify para el rastreador del cliente. AuditLog escrito.
  7. 07

    La cocina cocina

    Cliente
    Espera. Bebe. Charla con quien está en la mesa.
    Staff
    En cocina el joven chef tiene el KDS delante. Ve el paquete de pedidos, marca 'en preparación' al empezar, 'listo' al terminar.
    Ordina
    Los nuevos estados se propagan al cliente. El temporizador de pedidos en IN_PREP alimenta el informe de latencia media de cocina.
  8. 08

    Llega la comida

    Cliente
    Ve la animación en rojo Caveat '¡Buen provecho!' cuando el camarero pulsa 'Servido'.
    Staff
    Lleva los platos, pulsa 'Servido' en el carrito flotante.
    Ordina
    Estado final SERVED. Snapshot de Order.foodCostMinor tomado de Recipe.foodCostMinorCached en ese momento — este es el margen real, no el estimado.
  9. 09

    El pago

    Cliente
    Abre la página del pedido, pulsa 'Pagar'. Stripe Element ofrece Apple Pay (reconoce iPhone) o tarjeta. Toca, desbloquea con FaceID, paga en 3 segundos. Deja una propina del 10 %.
    Staff
    Nada — el cliente ha pagado desde el móvil. Un aviso pasivo en el panel ('Mesa 7 ha pagado, todo en orden').
    Ordina
    PaymentIntent de Stripe creado en el servidor, el webhook 'payment_intent.succeeded' cambia paymentStatus a PAID. Propina registrada por separado. Recibo fiscal (RT) emitido por el proveedor elegido por el restaurante.
  10. 10

    El cliente se va

    Cliente
    Se despide, se va. Comió en 45 minutos, pagó en 3 segundos, dijo 'gracias' a un camarero que nunca le preguntó dónde estaba el baño.
    Staff
    Limpia la mesa, pone en cola la próxima reserva confirmada en pantalla.
    Ordina
    BillSession cerrada, mesa de vuelta al pool, las próximas reservas notificadas (email t12 al cliente si tiene mesa asignada).

¿Quieres verlo en vivo?

Diez minutos de demo remota. Te hacemos recorrer el flujo tú mismo, desde la mesa ficticia hasta la cocina simulada. Sin compromiso, sin tarjeta de crédito.

Reservar la demo
Come funziona — Italy On Demand — Italy On Demand