Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
Mesitto: carta digital con QR, pedidos desde la mesa y gestión del salón para restaurantes.
Translation pending
BusinessTypeScript · PLpgSQLGitHub @jonathanARG01OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Plataforma multi-restaurante de cartas digitales con QR. Cada restaurante tiene su carta pública en /<slug> y un panel en /panel donde el dueño edita categorías, platos, precios, fotos, marca y descarga los QR.
Stack: Next.js 15 (App Router) + Supabase (Postgres, Auth, Storage, RLS) + Vercel.
/<slug>?mesa=7: rápida, pensada para el móvil, cacheada y regenerada al guardar en el panel. Muestra la mesa y un botón de WhatsApp./panel: categorías y platos con foto, precio, descripción y etiquetas; precio editable en línea; interruptor de agotado; reordenar arrastrando; ocultar categorías./panel/marca: logo, colores con vista previa, moneda, WhatsApp. El país (moneda, zona horaria y código de WhatsApp sugeridos) se elige al crear el restaurante y se cambia en Personalizar; por defecto, Chile (CLP, America/Santiago)./panel/qr: QR general (PNG y SVG), QR por mesa (PNG) y hoja PDF A4 con 6 tarjetas para imprimir./panel/sucursales: misma carta, con dirección, horario, WhatsApp y QR de mesa propios (/<slug>?s=centro&mesa=4)./panel/estadisticas: visitas por día, hora, mesa e idioma, pedidos y lo más pedido./admin: todos los restaurantes, plan, pausar/reactivar, entrar a editar la carta de un cliente y crear restaurantes para clientes.supabase/migrations/ (de 0001 a 0015). Opcional: supabase/seed.sql crea la carta de ejemplo /la-esquina y supabase/seed_cafe.sql la cafetería /aroma-cafe con 36 bebidas, fotos y traducciones. supabase/seed_disenos.sql (después de 0006) crea una carta demo por cada diseño nuevo: /la-esquina-verde (Bistró), /jardin-veggie (Dorado), /forno-pizzeria (Forno), /warung-oriente (Oriente) y /neon-tokio (Neón). supabase/seed_disenos_2.sql (después de 0007) suma 11 cartas demo más, una por diseño nuevo (Tropical, Natural, Soleado, Gala, Vitrina, Cinta, Trattoria, Kraft, Madera, Cóctel y Revista), y marca algunos platos como destacados./admin, date permiso de superadmin con tu correo:
insert into public.superadmins (user_id) select id from auth.users where email = '[email protected]';
https://tumenu.com).https://tumenu.com/auth/confirm (y http://localhost:3000/auth/confirm para desarrollo)..env.example a .env.local y rellena las variables (Supabase → Project Settings → API).npm install y npm run dev. Abre http://localhost:3000..env.example en Settings → Environment Variables. Los QR y los correos usan la dirección desde la que se abre el panel; NEXT_PUBLIC_SITE_URL solo se usa en el servidor. Antes de imprimir QR, entra al panel desde el dominio final./registro, pone el nombre del local y su correo./admin → "Restaurante para un cliente". Quedas como dueño y lo eliges arriba en el panel para armarle la carta./admin → "Editar carta" te suma como staff de ese restaurante.public.usuarios con su user_id, el restaurante_id y rol = 'dueno'.plan, activo) se cambian en /admin. Pausar un restaurante oculta su carta al momento.src/lib/planes.ts): Carta = carta, diseños, idiomas, QR y promos; Pro suma salón, cocina, caja, pedidos, reservas, clientes, estadísticas y equipo; Grupo suma sucursales. Lo bloqueado aparece con candado y lleva a /panel/plan./api/recordatorios, Vercel Cron) avisa cuando quedan 4 días y 1 día y, al vencer, pausa la carta (el cliente ve "estamos actualizando la carta"). En /admin puedes extenderla, quitarle el vencimiento o ponerle un plan (eso la reactiva y anota el inicio del plan).CRON_SECRET y SUPABASE_SERVICE_ROLE_KEY (obligatorias para el envío diario). Opcionales: NEXT_PUBLIC_WHATSAPP_VENTAS (cambia el WhatsApp del botón "Quiero contratar"; por defecto +56 9 4149 7083), RESEND_API_KEY + AVISOS_CORREO_DE (correo con dominio verificado en resend.com) + AVISOS_CORREO_ADMIN (dónde te llegan a ti) para mandar los avisos por correo.Tarjeta digital de sellos que se contrata aparte del plan ($12.990/mes por local, $19.990 Grupo). Reemplaza al antiguo "premio cada N visitas".
/admin (interruptor "Loyalty"). El local arma su tarjeta en /panel/sellos (sellos, premio, regla por visita o por monto, colores) y descarga el QR para unirse./s/unirse/<slug> y su tarjeta queda en /s/<código>. La precuenta trae un QR de un solo uso (24 h) que suma el sello de esa visita; si la mesa se anula, el sello se quita./panel/sellos, desde la ficha de la mesa ("Ver tarjeta") o escaneando la tarjeta con la cámara del celular con su sesión iniciada. Con "Pedir PIN de encargado" activo, un mesero necesita el PIN.SUPABASE_SERVICE_ROLE_KEY.GOOGLE_WALLET_ISSUER_ID, GOOGLE_WALLET_CLIENT_EMAIL y GOOGLE_WALLET_PRIVATE_KEY (cuenta de emisor en Google Pay & Wallet Console y una cuenta de servicio de Google Cloud con acceso). Sin ellas el botón no aparece./api/sellos/campanas (vercel.json) que manda el saludo de cumpleaños y el "te extrañamos" con sus sellos de regalo. Usa CRON_SECRET y SUPABASE_SERVICE_ROLE_KEY.src/lib/sellos, src/app/s, src/app/panel/sellos, src/app/api/sellos y las tablas sellos_*, para poder separarlo después como producto independiente.Las fotos de public/demo/cafe salen de una infografía de terceros y son solo para la demo: para clientes reales usa fotos propias o libres de derechos.
src/app/[slug]/ carta pública
src/app/panel/ panel del dueño (carta, marca, qr, sucursales, estadísticas)
src/app/admin/ administración del servicio (superadmin)
src/app/s/ tarjeta de sellos del cliente (Platovi Loyalty)
src/components/carta/ diseños de la carta, idiomas, pedidos y barra inferior
src/app/login|registro|recuperar|nueva-clave/
src/app/auth/confirm/ enlaces de correo (confirmar cuenta, recuperar contraseña)
src/lib/ clientes de Supabase, tipos, QR/PDF, fotos
supabase/ migración SQL y datos de ejemplo
Si el restaurante activa Marca → Imágenes por defecto, los platos sin foto muestran una ilustración según su nombre o descripción (pizza, café, cerveza, etc.). Se guarda en restaurantes.ajustes.imagenes_defecto, así que no necesita SQL. Las imágenes de public/defecto son Fluent Emoji de Microsoft, con licencia MIT (ver public/defecto/LICENSE.txt), que permite el uso comercial.