How once-store/once-verduleria works
This repository is a browser-based produce-shop PWA: customers browse lot-priced products, place an order, choose payment, and receive a ticket; staff use role-gated screens to prepare orders and run store operations. The frontend connects to Supabase for authentication and business data, while Mercado Pago and the WhatsApp bot are external. Several staff-screen capabilities are documented in the README but their full implementations were not sampled, so those relationships are shown only where documented.
Main entry points: sesion.js Session and roles · app.js Catalog and checkout · armado.js Order assembly · admin.js Staff dashboard
Components 21
Customer storefront
- Catalog and checkout
app.js - Payment returns
pago-exitoso.html - Order ticket
ticket.js
Staff operations
- Staff dashboard
admin.js - Order assembly
armado.js - Cash register
caja.js - Customer accounts
clientes.js - WhatsApp conversations
conversaciones.js - Store hours
horario.js - Staff alerts
sidebar-alertas.js
Stock and finance
- Purchases and ripening
compras.js - Inventory control
inventario.js - Promotions
promociones.js - Financial management
finanzas.js - Sales metrics
metricas.js - Crate lookup
cajon.js
Shared services
- Session and roles
sesion.js - Supabase database
Other components
- Customer
- Mercado Pago
- WhatsApp bot
Connections 30
- Customer → Catalog and checkout: browses and orders
README.md - Catalog and checkout → Supabase database: reads catalog; checks out
README.md - Catalog and checkout → Mercado Pago: starts payment
- Mercado Pago → Supabase database: confirms payment
README.md - Mercado Pago → Payment returns: returns customer
README.md - Customer → Order ticket: opens order receipt
README.md - Staff dashboard → Session and roles: checks role
admin.js - Staff dashboard → Supabase database: loads dashboard data
admin.js - Order assembly → Session and roles: checks role
armado.js - Order assembly → Supabase database: loads orders and items
armado.js - Cash register → Session and roles: checks role
caja.js - Cash register → Supabase database: loads cash state
caja.js - Customer accounts → Session and roles: checks role
clientes.js - Customer accounts → Supabase database: manages accounts
clientes.js - WhatsApp conversations → Session and roles: checks role
conversaciones.js - WhatsApp conversations → Supabase database: loads conversations
README.md - Purchases and ripening → Session and roles: checks role
compras.js - Purchases and ripening → Supabase database: records purchases and lots
compras.js - Inventory control → Session and roles: checks role
inventario.js - Inventory control → Supabase database: reads stock lots
README.md - Promotions → Session and roles: checks role
promociones.js - Promotions → Supabase database: manages promotions
promociones.js - Financial management → Session and roles: checks role
finanzas.js - Financial management → Supabase database: loads finance data
finanzas.js - Sales metrics → Session and roles: checks role
metricas.js - Sales metrics → Supabase database: loads sales metrics
metricas.js - Store hours → Supabase database: manages store hours
horario.js - Crate lookup → Supabase database: looks up crate
README.md - Staff alerts → Supabase database: displays calculated alerts
README.md - WhatsApp bot → Order assembly: leaves orders for preparation
README.md