Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/teofilobetancourt/Restaurant-Equis/llms.txt

Use this file to discover all available pages before exploring further.

The POS module is the primary entry point for all customer-facing transactions in Restaurant Equis. Cashiers use it to browse the live menu catalog, assemble a cart by adding and adjusting items, collect basic customer information, choose the fulfillment type, and submit the order — which immediately registers in the database and appears on the Kitchen Display. Upon confirmation the system also generates a pre-filled WhatsApp summary for the restaurant’s business line.

Order Types

Restaurant Equis supports three fulfillment types, each with its own data requirements. Select the appropriate type in the order panel before confirming.
The customer is seated inside the restaurant. You must enter the table number in the numeric field that appears after selecting Mesa. The table number is stored on the order and displayed prominently on the Kitchen Display card.Required field: Mesa (table number, integer ≥ 1)
The catalog is loaded on mount by calling GET /api/productos. Each product belongs to one of the following categories:
Category keyDisplay label
entradaEntrada
plato_principalPlato Principal
postrePostre
bebidaBebida
acompañanteAcompañante
Categories are rendered as a horizontal tab bar at the top of the catalog panel. Clicking a tab filters the product grid to that category. A search bar beneath the tabs lets cashiers find a product by name or description across the active category. Unavailable products (where disponible = false) are rendered with reduced opacity and cannot be added to the cart. Each product card displays:
  • Category label
  • Product name and description
  • Price (e.g. $12.50)
  • Availability badge (Disponible / Agotado)

Cart Management

Clicking an available product card adds it to the cart (or increments its quantity if it already exists). Inside the cart panel each line item shows:
  • Item name and category
  • A free-text special notes field (e.g. sin cebolla)
  • Quantity controls (− / +); reducing quantity to 0 removes the item
  • Line subtotal (price × quantity)
The order summary at the bottom of the cart panel calculates totals in real time:
FieldFormula
SubtotalSum of all line item subtotals
IVA (16%)subtotal × 0.16
Total a Pagarsubtotal + IVA

Customer Info

Before submitting, the cashier fills in the customer panel at the top of the cart sidebar:
FieldNotes
Cédula / RIFVenezuelan national ID or company tax ID (optional)
TeléfonoPhone number — recommended for pickup and delivery orders
NombreCustomer’s full name — required
All three values are sent to the API and stored on the order record.

Placing an Order

When the cashier clicks Confirmar Pedido, the POS performs the following validations before submitting:
  1. Cart must not be empty.
  2. Customer name (cliente_nombre) must not be blank.
  3. If order type is mesa, a table number must be provided.
  4. If order type is delivery, a delivery address must be provided.
On success, the frontend calls:
POST /api/ordenes
Content-Type: application/json
{
  "cliente_nombre": "JUAN PEREZ",
  "cliente_cedula": "V-12345678",
  "cliente_telefono": "0414-0000000",
  "tipo": "mesa",
  "mesa": 5,
  "items": [
    {
      "id_producto": 3,
      "nombre": "Pabellón Criollo",
      "cantidad": 2,
      "precio_unitario": 12.50,
      "notas": "sin caraotas"
    }
  ],
  "subtotal": 25.00,
  "iva": 4.00,
  "total": 29.00
}
The new order immediately appears in the Kitchen Display (Recibido status) and in the Orders history view. The cart, customer fields, and address are reset so the POS is ready for the next transaction.

WhatsApp Integration

Immediately after the API call succeeds, the POS constructs a pre-filled WhatsApp message containing the full order summary and opens it in a new browser tab via:
https://wa.me/{VITE_WHATSAPP_NUMERO}?text={encodedMessage}
The message includes the ticket number, customer name, phone, cédula, fulfillment type, itemised list with notes, subtotal, IVA, and total. Example:
🍔 *NUEVO PEDIDO #9047*

*Cliente:* JUAN PEREZ
*Teléfono:* 0414-0000000
*Cédula/RIF:* V-12345678
*Tipo:* 🪑 Mesa 5

*Ítems:*
• 2x Pabellón Criollo _(SIN CARAOTAS)_

Subtotal: $25.00
IVA (16%): $4.00
*TOTAL: $29.00*
The WhatsApp destination number is configured via the VITE_WHATSAPP_NUMERO environment variable in .env.local. Set it to the restaurant’s WhatsApp Business number in international format without spaces or dashes (e.g. 584140000000). If the variable is not defined, the system falls back to the placeholder 584140000000. Add the variable to your environment before deploying to production:
VITE_WHATSAPP_NUMERO=584140000000

Build docs developers (and LLMs) love