Saltar al contenido
Volver a proyectos
Producto propio · Comercio minoristaEn producción2025

Tendero

Inventario, ventas y escáner de código de barras para una tienda de barrio. Todo desde el celular.

Una aplicación web que reemplaza el cuaderno de la tienda: entra stock, sale una venta, y el inventario cuadra al final del día sin que nadie tenga que contar estantes.

EscanearCámara activa

Arroz Diana 500 g

7702001120987

$3.200

18 en stock

Movimientos

  • Venta-2
  • Entrada+24
  • Venta-1
  • Ajuste-3
SUM(delta)= 18 ✓

El problema

La tienda llevaba el inventario en un cuaderno y los precios en la cabeza del dueño. No había forma de saber qué se estaba vendiendo, ni qué se había acabado, hasta que el estante quedaba vacío. Cualquier reemplazo tenía que funcionar en los celulares Android baratos que ya tenía el personal: nada que instalar, nada que aprender.

Decisiones de ingeniería

  1. Escáner en el navegador, no una app nativa

    Decodificación de códigos de barras con WebAssembly contra la cámara del teléfono. No hay nada que descargar de una tienda de aplicaciones, y funciona igual en un celular de gama baja que en uno nuevo.

  2. El inventario no puede desviarse en silencio

    Cada movimiento de stock es una fila de un libro append-only. La cantidad del producto es una proyección de ese libro, y una tarea de reconciliación verifica que SUM(delta) siga siendo igual a la cantidad guardada, en todo el catálogo.

  3. Importador del cuaderno

    El catálogo que ya existía en papel se carga a la base de datos de una vez, en lugar de pedirle al dueño que teclee mil productos antes de que el sistema le sirva de algo.

  4. Arquitectura sin capa de API

    Los Server Components leen Postgres directo y los Server Actions escriben. Un servicio menos que desplegar, monitorear y mantener sincronizado — algo que importa cuando el equipo de mantenimiento es una sola persona.

Stack

Next.js 16React 19TypeScriptPostgreSQLPrismaTailwind CSSWebAssemblyS3DockerRailwayVitest

Siguiente proyecto

PideBot

Un bot de WhatsApp que toma el pedido y cobra por el restaurante, 24/7.