🇵🇪 Bienvenidos a Nuestra Mesa
COCINA PERUANA

Tradición y auténtico sabor del Perú • Ceviches frescos, Saltados al Wok, Mariscos y Pisco Sour Catedral

Ceviches Frescos
Ceviches
Saltados al Wok
Saltados al Wok
Pisco Sour y Mojitos
Sour & Bar

PISCO & AJI

COCINA PERUANA
COCINA PERUANA
Lomo Saltado al Wok
🔥 Clásico Lomo Saltado al Wok
Opción 1 • Más Fácil y 100% Gratis

Al pulsar este botón después de editar tus precios, platos o fotos, se descargará un archivo index.html nuevo con todos tus cambios ya grabados en su interior. Luego solo entras a Cloudflare Pages → Create a project → Direct Upload y arrastras ese archivo. ¡Todos los clientes que escaneen el QR verán la carta actualizada al instante!

Opción 2 • Nube en Tiempo Real

CONECTAR CON CLOUDFLARE WORKERS KV (SIN RESUBIR ARCHIVO)

Si configuras un Worker gratuito en Cloudflare con un espacio KV llamado MENU_KV, puedes guardar los precios y platos desde tu celular tocando el botón de arriba sin tener que subir el archivo HTML cada vez.

✓ ¡Carta publicada en vivo en Cloudflare Workers KV!
📋 Ver código de Cloudflare Worker (worker.js) listo para copiar y pegar Clic para desplegar

1. En Cloudflare crea un KV Namespace llamado MENU_KV y vincúlalo a tu Worker.
2. Pega este código en tu Worker y define la variable ADMIN_SECRET:

export default {
  async fetch(request, env) {
    const cors = {
      "Access-Control-Allow-Origin": "*",
      "Access-Control-Allow-Methods": "GET, PUT, OPTIONS",
      "Access-Control-Allow-Headers": "Content-Type, Authorization"
    };
    if (request.method === "OPTIONS") return new Response(null, { headers: cors });

    if (request.method === "GET") {
      const data = await env.MENU_KV.get("pisco_aji_menu");
      return new Response(data || "null", {
        headers: { ...cors, "Content-Type": "application/json" }
      });
    }

    if (request.method === "PUT") {
      const auth = request.headers.get("Authorization");
      if (auth !== `Bearer ${env.ADMIN_SECRET}`) {
        return new Response(JSON.stringify({ error: "No autorizado" }), { status: 401, headers: cors });
      }
      const body = await request.text();
      await env.MENU_KV.put("pisco_aji_menu", body);
      return new Response(JSON.stringify({ ok: true }), {
        headers: { ...cors, "Content-Type": "application/json" }
      });
    }
    return new Response("Pisco & Aji Menu API", { headers: cors });
  }
};
📦 Respaldo de Datos (JSON) y Restauración
🔐 Cambiar PIN de Acceso Admin