Variantes sin explosión combinatoria
El catálogo de remeras se arma por tipo × talle × color × manga, cada combinación con su propio stock — pero el cliente ve una tarjeta por estilo, no una por cada talle cargado.
Caso de estudio · Full-stack
Tienda online y panel de administración para Lumil, un negocio real de gráfica, sublimación y piezas 3D en San Nicolás. Lo diseñé, desarrollé y sigo manteniendo en producción de punta a punta: base de datos, seguridad, frontend, lógica de negocio y despliegue.
La tienda: catálogo por secciones, variantes de producto y pedido directo por WhatsApp, sin pasar por checkout.
Lumil necesitaba un sistema propio para publicar su catálogo, recibir pedidos, controlar stock y llevar la caja del día a día — sin depender de una plantilla genérica de e-commerce ni de planillas sueltas. El catálogo tiene productos con variantes reales (remeras por tipo, talle, color y manga), precios a consultar, combos de temporada, y un flujo de venta que termina en WhatsApp, que es como el negocio ya se comunicaba con sus clientes.
Full-stack, solo: diseño del esquema de base de datos y de las políticas de seguridad en Supabase, todo el frontend de la tienda y del panel, la lógica de negocio (stock, pagos, caja, facturación), la generación de PDFs y, más recientemente, la migración a un flujo de despliegue continuo con Git y Netlify. Sigue en desarrollo activo — el negocio pide funcionalidades nuevas y las voy sumando en producción.
Sitio estático sin build step, con Supabase como backend completo y Row Level Security como única capa de seguridad real: no hay ningún servidor propio que proteger, la base de datos rechaza directamente cualquier consulta que no venga de un usuario autenticado y autorizado como administrador.
git push a master despliega la tienda y el panel automáticamente.Problemas que resolví
El catálogo de remeras se arma por tipo × talle × color × manga, cada combinación con su propio stock — pero el cliente ve una tarjeta por estilo, no una por cada talle cargado.
Se descuenta al cargar el pedido, se ajusta si se edita, se devuelve si se cancela, y rechaza la operación con un aviso claro si no alcanza.
El reparto entre negocio y ganancia se carga por cada pago real. Si cambia el monto de una seña ya cobrada, el reparto del pago siguiente se invalida solo y pide recargarse.
El resultado de cada mes se convierte automáticamente en el saldo inicial del siguiente, en cadena, sin ningún botón de "cerrar mes".
Presupuestos, remitos, facturas y cierres de caja se generan en el propio navegador con jsPDF, sin backend de por medio.
El buscador de productos existía por separado en tres pantallas y se habían desincronizado. Lo centralicé en un módulo compartido — el bug desapareció de las tres a la vez.
El panel: acceso autenticado con Supabase Auth. Sin login válido, Row Level Security bloquea cualquier consulta a los datos reales del negocio.
master¿Te sirve algo así?
Si tu negocio necesita algo parecido — catálogo, pedidos, panel propio — te cuento cómo lo encararía.
Contame tu proyecto