Menu digital, pedidos y puntos.
Translation pending
CommerceJavaScript · CSSGitHub @agentcore-iaOnlineOwner 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
Loading the full README. The saved excerpt is shown below.
Menu digital responsive inspirado en BioMenus, preparado para trabajar por cuenta.Read the full README ↗
Menu digital responsive inspirado en BioMenus, preparado para trabajar por cuenta.
GET /api/accounts/:accountId/menuPOST /api/accounts/:accountId/orders?account=totta, ?account=bruder, ?account=sandras-rose/totta y /brudermock, supabase y sqltemplate, theme, layout, hero, branding y estilo de cardsvideo_url para vista previa/admin para crear cuentas y editar presentacion/video sin SQLnpm install
npm run dev
Esto levanta:
http://127.0.0.1:8787http://127.0.0.1:5173/?account=sandras-rosehttp://127.0.0.1:5173/?account=capta-demohttp://127.0.0.1:5173/?account=tottahttp://127.0.0.1:5173/?account=bruderModo actual recomendado:
.env.example a .envCAPTA_DATA_PROVIDER=supabaseCAPTA_SUPABASE_URLCAPTA_SUPABASE_API_KEY con una key de backend de solo lectura para la APICAPTA_ADMIN_TOKEN para habilitar el panel internoCAPTA_SUPABASE_STORAGE_BUCKET=menu-videos para uploads de previewCAPTA_SUPABASE_STORAGE_API_KEY con una key de backend para StorageCAPTA_SUPABASE_WRITE_API_KEY con una key de backend con permisos de escrituraEl backend lee:
restaurants para resolver la cuenta por slugproducts para traer los productos activos de ese restauranteAgrupa automaticamente por category.
Para pedidos reales, el backend escribe en:
clientespedidositems_pedidocustomer_loyalty_accountscustomer_loyalty_transactionsAsi el pedido aparece en el dashboard de capta y queda historial por cliente usando phone.
El sistema de puntos queda preparado para que la configuracion y administracion se haga desde el dashboard principal de capta, no desde /admin de esta app.
Tablas nuevas:
restaurant_loyalty_settingsrestaurant_loyalty_rewardscustomer_loyalty_accountscustomer_loyalty_transactionsReglas principales:
restaurant_loyalty_settings.enabledrestaurant_id + phonerestaurant_loyalty_rewardsGET /api/accounts/:accountId/loyalty?phone=...Calculo de puntos:
spend_amount_step: cada cuanto dinero gastado se acreditapoints_per_step: cuantos puntos suma ese bloqueminimum_order_total: compra minima para empezar a sumarEjemplo:
spend_amount_step = 1000points_per_step = 1Entonces una compra de $3.500 suma 3 puntos.
Nueva migracion:
Esta app no administra puntos desde /admin; el dashboard de capta debe crear y editar filas en esas tablas.
La API ahora devuelve:
categories: contenido del menupresentation: configuracion visual por cuentaLa presentacion soporta:
template: editorial, bistro, luxelayout: editorial, bistro, luxebranding.wordmarkbranding.subtitlethemehero.imagehero.titlehero.accenthero.descriptioncards.stylepreview.productMediapreview.autoplayVideospreview.mutedVideosEsto permite que cada restaurante tenga una identidad distinta sin duplicar el frontend.
Ahora template define la estructura del menu y theme define el look.
/adminRutas:
http://127.0.0.1:5173/adminhttps://menu-five-red.vercel.app/adminRequiere enviar un token en el header x-admin-token o Authorization: Bearer ....
La UI ya lo hace automaticamente cuando completas el campo Token admin.
Endpoints disponibles:
GET /api/admin/accountsPOST /api/admin/accountsDELETE /api/admin/accounts/:accountIdGET /api/admin/accounts/:accountId/editorPATCH /api/admin/accounts/:accountId/presentationPATCH /api/admin/products/:productId/mediaPOST /api/admin/products/:productId/image-uploadPOST /api/admin/products/:productId/video-uploadCon eso ya puedes:
restaurantsslug una cuenta ya existente de capta sin duplicarlalayout, theme, branding, hero y previewimage_url y video_url por productoBucket recomendado:
menu-videosRequisitos:
.mp4CAPTA_SUPABASE_STORAGE_API_KEY para que el upload salga desde backend y no abrir permisos publicos de escrituraVariables:
CAPTA_SUPABASE_STORAGE_BUCKET=menu-videosCAPTA_SUPABASE_STORAGE_API_KEY=...Flujo en /admin:
Fotos y videos por productoSubir a Storageimage_url o video_url en productsRuta interna usada:
POST /api/admin/products/:productId/video-uploadSe agrego una migracion lista para aplicar:
La migracion crea:
restaurant_menu_presentationsproducts.video_url si todavia no existeSeeds incluidos:
restaurant_menu_presentationsCampos principales:
restaurant_idlayouttheme_idtheme_overrides (jsonb)branding_wordmarkbranding_subtitlehero_image_urlhero_titlehero_accenthero_descriptioncards_stylepreview_modeautoplay_videosmuted_videosproducts.video_urlSi un producto tiene video_url, el frontend ya puede:
video-firstNota:
totta, bruder y sandras-rose ya quedaron cargados en la base real con presentacion propiaQuedaron tres presets listos para usar como base:
premium clarobistro calidonocturno eleganteHoy se resuelven desde:
Y se mezclan con overrides de base desde:
Si en Vercel ves un error como:
Unexpected token '<'is not valid JSONsignifica que estaba publicado solo el frontend y no habia endpoint /api/....
Este repo ahora ya incluye funciones serverless en:
api/health.jsapi/accounts/[accountId]/menu.jsEn Vercel solo necesitas cargar estas variables de entorno y redeploy:
CAPTA_DATA_PROVIDER=supabaseCAPTA_SUPABASE_URL=https://eqnjyygokjinmsfvogxi.supabase.coCAPTA_SUPABASE_API_KEY=...CAPTA_ADMIN_TOKEN=...Alternativa:
CAPTA_DATA_PROVIDER=sql si en el futuro quieres leer directo desde Postgres/MySQL sin pasar por Supabase RESTEl adaptador SQL espera este modelo base:
accounts: id, slug, name, currency, localemenu_categories: id, account_id, slug, name, sort_ordermenu_products: id, account_id, category_id, name, description, price, price_display, image_url, video_url, badge, dietary_tags, is_active, sort_orderLa conexion real a la base de capta queda preparada, pero para enchufarla de verdad todavia hace falta confirmar: