1 Like
1 BranchVal Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
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.
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
| Archivo | Descripción |
|---|---|
index.ts | HTTP handler + bot de Telegram (grammY) |
claude.ts | Cliente de Anthropic para interpretar intenciones |
intents.ts | Lógica de cada intención (consultas y mutaciones) |
firebase.ts | Cliente de Firebase REST API con auth de service account |
types.ts | Tipos de TypeScript del dominio |
| Intent | Ejemplo | Descripció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 |
/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}}
- 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.
| Key | Descripción |
|---|---|
TELEGRAM_TOKEN | Token del bot (de @BotFather) |
ANTHROPIC_API_KEY | API key de Anthropic (Claude) |
FIREBASE_DATABASE_URL | URL de Firebase Realtime Database |
FIREBASE_SERVICE_ACCOUNT_JSON | JSON completo de la service account de Firebase |
- Las variables de entorno ya están configuradas (excepto TELEGRAM_TOKEN que debe setearse manualmente).
- El webhook se registra automáticamente al primer GET del endpoint.
- Enviar
/startal bot por Telegram para verificar que funciona.