Public
Remixed
Bot Telegram para despensa con Firebase + Claude AI
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.

🏪 Despensa Bot

Bot de Telegram para gestionar tu despensa: ventas, caja, stock y fiados. Usa grammY + Claude AI (Anthropic) para interpretar mensajes en lenguaje natural y Firebase Realtime Database (REST API) como backend.

Arquitectura

Usuario → Telegram → webhook (index.ts)
                        ↓
                   grammY bot recibe el mensaje
                        ↓
                   claude.ts → Anthropic API → devuelve Intent JSON
                        ↓
                   intents.ts → ejecuta la acción contra Firebase
                        ↓
                   firebase.ts → REST API (GET/PATCH/POST) con auth JWT
                        ↓
                   Respuesta formateada → Telegram → Usuario

Archivos

ArchivoDescripción
index.tsHTTP handler + bot de Telegram (grammY)
claude.tsCliente de Anthropic para interpretar intenciones
intents.tsLógica de cada intención (consultas y mutaciones)
firebase.tsCliente de Firebase REST API con auth de service account
types.tsTipos de TypeScript del dominio

Intenciones soportadas

IntentEjemploDescripción
consultar_ventas_hoy"cuánto vendí hoy"Lista ventas del día con total
consultar_caja_hoy"cómo está la caja"Totales por método de pago (ventas - gastos)
stock_bajo"stock bajo"Productos con stock_actual ≤ stock_minimo
buscar_producto"buscar coca"Búsqueda parcial por nombre o marca
consultar_fiados"fiados de juan" / "quiénes me deben"Fiados de un cliente o todos
registrar_venta"vendí 2 coca transferencia"Resta stock + agrega movimiento de caja
modificar_precio"cambiar precio de coca a 500"Actualiza precio_venta del producto
registrar_gasto"gasté 200 en luz"Agrega movimiento de caja tipo gasto

Schema de Firebase

/caja/movs/{id}: {descripcion, tipo: "venta"|"gasto", metodoPago: "efectivo"|"transferencia", monto, fecha}
/stock/productos/{id}: {categoria, codigo_barras, marca, nombre, precio_compra, precio_venta, stock_actual, stock_minimo, stock_maximo}
/fiados/clientes/{id}: {nombre, movs/{movId}: {tipo: "fiado"|"pago", monto, fecha}}

Reglas de seguridad

  • Nunca se usa PUT en nodos padre (/caja, /stock, /fiados).
  • PATCH actualiza paths puntuales sin sobrescribir hermanos.
  • POST crea nuevos nodos con push ID autogenerado por Firebase.

Variables de entorno

KeyDescripción
TELEGRAM_TOKENToken del bot (de @BotFather)
ANTHROPIC_API_KEYAPI key de Anthropic (Claude)
FIREBASE_DATABASE_URLURL de Firebase Realtime Database
FIREBASE_SERVICE_ACCOUNT_JSONJSON completo de la service account de Firebase

Setup

  1. Las variables de entorno ya están configuradas (excepto TELEGRAM_TOKEN que debe setearse manualmente).
  2. El webhook se registra automáticamente al primer GET del endpoint.
  3. Enviar /start al bot por Telegram para verificar que funciona.