Ir al artículo
Aniq-UI

Food StudioEl sitio web de pedidos

El sitio web de pedidos

Lo que el sitio web hace por los clientes: sus páginas, el menú y el creador de comidas, el carrito y el pago, las cocinas y las zonas de reparto, el seguimiento de pedidos, las cuentas y las recompensas, las etiquetas de analítica y los buscadores.

Para el paquete Full Stack

Páginas

Cada página existe en inglés en /en y en árabe en /ar. Una ruta sin idioma va a /en.

RutaQué muestra
/enLa página de inicio: nueve secciones creadas en el editor de la página de inicio del panel, desde la portada y las categorías hasta los platos populares, el combo, el creador de comidas, la entrega, las recompensas y las preguntas.
/en/shopEl menú, con controles de búsqueda, categoría, dieta y orden que se guardan en la dirección, así que cada vista se puede compartir. Un plato que no se puede pedir en este momento sigue visible y lo indica.
/en/categoriesLas categorías del menú.
/en/products/<slug>Un plato: galería, tamaño y extras con el precio en el botón, un campo de instrucciones, cantidad de 1 a 10, ingredientes, alérgenos, reseñas y platos relacionados. El combo tiene su propia página en la misma dirección, con sus opciones y sus suplementos.
/en/cartEl carrito, con un código promocional, entrega o recogida, la dirección de entrega, una fila de sugerencias y un total que calcula la API.
/en/checkoutContacto, entrega y pago en una sola página junto al resumen del pedido. Abierto a invitados.
/en/order-confirmation/<number>El pedido que se acaba de hacer, siguiéndolo desde la cocina hasta la puerta.
/en/track-orderSeguimiento del pedido por número de pedido y correo, sin cuenta.
/en/locationsLas cocinas: una comprobación del código postal para la entrega o la recogida, si están abiertas y su horario, las zonas de reparto y un mapa.
/en/about, /en/contact, /en/faq, /en/privacy, /en/termsPáginas de soporte y legales. Un mensaje del formulario de contacto llega a las notificaciones del panel, para el propietario y los gerentes.
/en/auth/login, /en/auth/register, /en/auth/forgot-password, /en/auth/reset-passwordInicio de sesión, registro y restablecimiento de contraseña para los clientes.
/en/accountEl área con sesión iniciada: un resumen con los puntos de recompensa, los pedidos y su detalle con opción de volver a pedir, las direcciones guardadas, el perfil, el seguimiento de pedidos y los platos guardados.
  • El menú de demostración tiene 64 platos en ocho categorías, cada uno con textos en inglés y en árabe, imágenes, opciones, alérgenos y etiquetas de dieta. El personal lo edita todo en el panel.
  • Las opciones de un plato son grupos de elecciones, como un tamaño o unos extras, cada una con su propio cambio de precio. El precio del botón sigue a las elecciones.
  • El combo es un principal, un acompañamiento y una bebida por un solo precio, $19.99 en la demo, con un suplemento por algunos cambios. El creador de comidas de la página de inicio elige los tres y abre el combo con esa elección.
  • Un plato que el personal marca como no disponible, o uno cuyo stock controlado se agota, sigue en el menú pero no se puede añadir.

Cocinas, entrega y recogida

  • Cada pedido lo cocina una cocina. La demo tiene cuatro: Central, Riverside, Uptown y Harbor, cada una con su propio horario, zona horaria, tiempo de preparación y códigos postales de entrega.
  • La entrega solo llega a los códigos postales que indica cada cocina; la recogida es en la propia dirección de la cocina. El cliente introduce un código postal, y el sitio web elige una cocina que da servicio a esa zona y está abierta, o le ofrece alternativas.
  • Una cocina solo acepta pedidos mientras está abierta. La carga de datos inicia el restaurante con un reloj de demostración que mantiene todas las cocinas a las 20:55, para que en la demo se pueda pedir a cualquier hora; el personal lo cambia al reloj real en Settings, Restaurant.
  • El tiempo estimado es el tiempo de preparación de la cocina más 5 a 15 minutos para la entrega, y más 0 a 10 para la recogida.
  • El mapa de la página de ubicaciones se dibuja en código a partir del punto en el mapa de cada cocina, y no necesita ningún servicio de mapas.

Carrito y pago

  • El carrito de un invitado vive en el navegador. El carrito de un cliente con sesión iniciada se guarda en el servidor, y el carrito de invitado se fusiona con él al iniciar sesión.
  • Cada total, en el carrito y en el pago, lo calcula la API a partir de su propio menú y sus ajustes, así que lo que ve el cliente es lo que se cobra. Si un precio cambió o un plato dejó de estar disponible desde que se llenó el carrito, el pago muestra el cambio y pide al cliente que lo acepte.
  • Tarifas en la demo: entrega $2.99, recogida gratuita y un mínimo de entrega de $10.00. El personal las cambia en Settings, Restaurant.
  • El código promocional TASTE10 descuenta un 10% de los artículos del menú. Los códigos no se combinan con puntos canjeados salvo que el personal lo permita para ese código.
  • Un invitado paga con un nombre, un correo y un número de teléfono; los datos y la dirección predeterminada de un cliente con sesión iniciada rellenan el formulario.
  • El pago se hace en la propia página de Stripe o de PayPal, o con el pago de demostración cuando no hay ningún proveedor configurado. Después de pagar, el cliente vuelve a la página del pedido.

Seguimiento de pedidos

Un pedido pasa por pendiente, confirmado, en preparación y listo, luego en reparto y entregado, o directamente a entregado cuando se recoge. Un invitado lo sigue en /en/track-order con el número de pedido y el correo con el que lo hizo; un cliente lo ve en su cuenta. La cronología se actualiza sola mientras la cocina trabaja. Un número desconocido y un correo incorrecto reciben la misma respuesta, así que el seguimiento no sirve para encontrar pedidos de otras personas.

Cuentas de cliente y recompensas

  • Los clientes se registran con un nombre, un correo y una contraseña de al menos 8 caracteres. Solo inician sesión en el sitio web: una cuenta de cliente no puede abrir el panel.
  • Recompensas. Un pedido pagado gana un punto por cada dólar de comida después de descuentos, una vez entregado. 100 puntos descuentan $5.00 de un pedido en el pago. La cuenta muestra el saldo y el historial. El personal cambia los dos números en Settings, Restaurant.
  • Los platos guardados acompañan al cliente de un dispositivo a otro, y un pedido anterior se puede volver a pedir con un clic.
  • El restablecimiento de contraseña envía por correo un enlace a la página de restablecimiento del sitio web cuando la API tiene un proveedor de correo configurado. El enlace funciona una vez, durante una hora.
  • Reseñas. La página de un plato muestra sus reseñas, la media, el número de reseñas y el desglose por estrellas. El sitio web no tiene formulario para escribir una: la API recibe la reseña de un cliente con sesión iniciada en POST /api/reviews, y las reseñas de la demo vienen de la carga de datos.

Analítica y píxeles de seguimiento

Hay seis redes conectadas. Activa una poniendo su id en el .env del sitio web y volviendo a construirlo:

VariableRed
NEXT_PUBLIC_GTM_IDGoogle Tag Manager
NEXT_PUBLIC_GA4_MEASUREMENT_IDGoogle Analytics 4
NEXT_PUBLIC_META_PIXEL_IDFacebook e Instagram
NEXT_PUBLIC_TIKTOK_PIXEL_IDTikTok
NEXT_PUBLIC_SNAPCHAT_PIXEL_IDSnapchat
NEXT_PUBLIC_PINTEREST_TAG_IDPinterest
  • Un id en blanco no carga ningún script. Si configuras solo uno, configura NEXT_PUBLIC_GTM_ID: Tag Manager puede cargar los demás. Si GA4 funciona dentro de Tag Manager, deja en blanco el id de GA4 o cada sesión se contará dos veces.
  • El sitio web informa de page_view, view_item, add_to_cart, remove_from_cart, add_to_wishlist, view_cart, begin_checkout, purchase, search, sign_up y login, con los platos, el valor y la moneda (NEXT_PUBLIC_ANALYTICS_CURRENCY, USD por defecto).
  • Las etiquetas se cargan en cuanto se carga la página. Si vendes en la UE o en el Reino Unido, pon antes un banner de consentimiento delante de ellas.

Buscadores

Cada página define su propio título, su descripción y su dirección canónica, con el otro idioma como alternativa. Las páginas de carrito, pago, cuenta, seguimiento e inicio de sesión están marcadas como noindex. /sitemap.xml incluye cada página pública en los dos idiomas y cada plato publicado, y /robots.txt apunta a él. Configura domain.url en src/config/brand.config.ts con tu dirección real para que ambos la usen.

La versión de demo pública

Incluido con tu compra. Inicia sesión para leerlo o ábrelo en tu descarga.

Cómo se comporta el sitio web en una versión de demo pública y cómo quitar ese código.

Cómo encaja el código del sitio web

Incluido con tu compra. Inicia sesión para leerlo o ábrelo en tu descarga.

La estructura del código y las convenciones que debes mantener al cambiarlo.

¿Te atascaste en un paso?

Busca una solución antes de empezar de nuevo.

Solución de problemas

Preferencias de Cookies

Utilizamos cookies para mejorar tu experiencia de navegación, analizar el tráfico del sitio y personalizar el contenido. Al hacer clic en "Aceptar Todo", consientes nuestro uso de cookies para análisis y publicidad personalizada.