{"id":51861625,"url":"https://github.com/juninmd/queima-buchinho","last_synced_at":"2026-07-24T08:02:12.240Z","repository":{"id":338655993,"uuid":"1153134145","full_name":"juninmd/queima-buchinho","owner":"juninmd","description":null,"archived":false,"fork":false,"pushed_at":"2026-07-09T14:33:10.000Z","size":1942,"stargazers_count":0,"open_issues_count":8,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-07-23T10:18:11.294Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/juninmd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-08T23:57:14.000Z","updated_at":"2026-07-09T14:33:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/juninmd/queima-buchinho","commit_stats":null,"previous_names":["juninmd/queima-buchinho"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/juninmd/queima-buchinho","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juninmd%2Fqueima-buchinho","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juninmd%2Fqueima-buchinho/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juninmd%2Fqueima-buchinho/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juninmd%2Fqueima-buchinho/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/juninmd","download_url":"https://codeload.github.com/juninmd/queima-buchinho/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juninmd%2Fqueima-buchinho/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35832970,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-24T02:00:07.870Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-24T08:02:11.462Z","updated_at":"2026-07-24T08:02:12.232Z","avatar_url":"https://github.com/juninmd.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Queima Buchinho Bot\n\n[![Status: Active](https://img.shields.io/badge/Status-Active-brightgreen.svg)]()\n[![Runtime: Bun](https://img.shields.io/badge/Runtime-Bun-f7df1e.svg?logo=bun\u0026logoColor=black)]()\n[![Language: TypeScript](https://img.shields.io/badge/Language-TypeScript-blue.svg?logo=typescript\u0026logoColor=white)]()\n[![Database: PostgreSQL](https://img.shields.io/badge/Database-PostgreSQL-336791.svg?logo=postgresql\u0026logoColor=white)]()\n[![Cache: Redis](https://img.shields.io/badge/Cache-Redis-DC382D.svg?logo=redis\u0026logoColor=white)]()\n[![Protocol: Antigravity](https://img.shields.io/badge/Protocol-Antigravity-orange.svg)]()\n\n\u003e **Queima Buchinho** é um bot de motivação de treinos e rastreamento de hábitos saudáveis via Telegram, integrado com Inteligência Artificial sob a persona de **Mika** (uma assistente *toxic-cute*, irônica e altamente sarcástica). \nPara começar a interagir e acompanhar seus hábitos, basta iniciar uma conversa com o bot no Telegram e usar o comando /start.\nEste projeto demonstra uma aplicação completa de bot Telegram com IA, testes automatizados e deploy via Docker.\n\nConstruído com foco em altíssima performance, baixo consumo de memória e inicialização instantânea utilizando o ecossistema **Bun** e **TypeScript**.\n\n---\n\n## ✨ Recursos Principais\n\n- 📅 **Rastreamento de Hábitos Diários**: Controle interativo de hábitos como treino, cárdio, alongamento, leitura, meditação, suplementos, refeições e restrição de açúcar.\n- 💧 **Registro de Água Simplificado**: Menu rápido para registrar consumo de água ao longo do dia em ml.\n- 📈 **Registro de Métricas Corporais**: Acompanhe seu peso, altura, passos diários, gordura corporal e massa muscular com comandos simples.\n- 🤖 **Interação Inteligente (Mika)**: Respostas dinâmicas geradas por IA (Ollama ou OpenRouter) com a persona ácida de Mika.\n- 🗣️ **Respostas de Voz (TTS)**: Conversão de texto para fala em tempo real integrada utilizando a API Edge-TTS.\n- 📊 **Relatórios Consolidados**: Resumos diários e relatórios semanais com gráficos de barra gerados diretamente no chat.\n- ⚡ **Execução Resiliente**: Auto-reconnect em caso de falhas de polling e smart liveness check para monitorar a saúde da aplicação.\n\n---\n\n## 🛠️ Stack Tecnológica\n\n- **Runtime**: [Bun](https://bun.sh/) (para boot ultra-rápido, testes acelerados e economia de memória)\n- **Framework do Bot**: `node-telegram-bot-api`\n- **Banco de Dados**: PostgreSQL (armazenamento persistente de treinos, hábitos e métricas)\n- **Cache / Estado**: Redis (armazenamento temporário e controle de concorrência)\n- **IA/LLM**: Provedores de API Ollama e OpenRouter via `@openrouter/ai-sdk-provider`\n- **Agendador**: `node-cron` para controle interno de notificações de refeições e lembretes diários\n- **Testes**: Jest com `ts-jest`\n\n---\n\n## 🎮 Comandos do Bot\n\n### 📋 Menu \u0026 Controle\n- `/menu` | `/start` | `/progresso` — Abre o menu diário interativo de hábitos.\n- `/help` — Exibe a lista de comandos e ajuda.\n- `/agua` — Atalho para registrar ingestão de água.\n- `/semana` — Exibe o relatório de progresso dos hábitos da semana corrente.\n- `/relatorio` — Relatório consolidado do dia.\n- `/cardapio` — Exibe a dieta/refeição recomendada para o dia atual.\n- `/ficha` — Exibe a rotina de exercícios físicos configurada para o dia.\n- `/hora` — Consulta o horário oficial de Brasília.\n\n### 💪 Treino \u0026 Streak\n- `/checktreino` — Alterna o status do treino de hoje.\n- `/cardio` — Alterna o status do cárdio de hoje.\n- `/streak` — Exibe quantos dias seguidos você treinou sem falhar.\n- `/reset` — Reseta os registros do dia atual.\n\n### 📊 Registro de Métricas\n- `/peso \u003cvalor\u003e` — Registra seu peso atual em kg (ex: `/peso 78.5`).\n- `/altura \u003cvalor\u003e` — Registra sua altura em cm (ex: `/altura 175`).\n- `/passos \u003cvalor\u003e` — Registra os passos acumulados no dia (ex: `/passos 10000`).\n- `/gordura \u003cvalor\u003e` — Registra o percentual de gordura corporal (ex: `/gordura 14.5`).\n- `/musculo \u003cvalor\u003e` — Registra o percentual de massa muscular (ex: `/musculo 42.1`).\n\n### 🎭 Diversão \u0026 Mídias\n- `/motivar` — Solicita uma frase motivacional (ou um deboche) de voz da Mika.\n- `/cantada` | `/xaveco` — Envia uma cantada nerd/maromba de academia.\n- `/meme \u003ctermo\u003e` — Busca um meme de academia (ou termo específico).\n- `/sticker \u003ctermo\u003e` — Busca um sticker relacionado ao termo.\n- `/gif \u003ctermo\u003e` — Envia um GIF do Giphy associado ao termo.\n- `/instante \u003csom\u003e` — Toca um áudio divertido do MyInstants (ex: `/instante faustao-errou`).\n\n---\n\n## ⚙️ Instalação e Configuração\n\n### 1. Clonar o Repositório\n```bash\ngit clone git@github.com:juninmd/queima-buchinho.git\ncd queima-buchinho\n```\n\n### 2. Configurar Variáveis de Ambiente\nCopie o arquivo `.env.example` para `.env` e preencha as credenciais:\n```bash\ncp .env.example .env\n```\n\n### 3. Rodar localmente via Docker Compose\nA forma mais rápida de iniciar o banco de dados PostgreSQL, Redis e o bot localmente:\n```bash\ndocker-compose up --build\n```\n\n---\n\n## 🛡️ Diretrizes do Protocolo Antigravity\n\nEste projeto segue regras de codificação do protocolo **Antigravity**:\n1. **Limite de 150 Linhas por Arquivo**: Módulos e classes devem ser fragmentados para manter a legibilidade e a separação de responsabilidades.\n2. **Tipagem Estrita**: Nenhuma utilização de tipo `any` sem justificativa excepcional.\n3. **Robustez e Cobertura**: Garantia de cobertura de testes abrangendo cenários felizes e de erro (edge cases).\n\n---\n\n## 🧪 Desenvolvimento \u0026 Testes\n\nPara executar testes locais utilizando o runtime do Bun:\n\n```bash\n# Executa testes unitários e integrados com Jest\nbun run test\n\n# Executa o linter e validações de tipagem do TypeScript\nbun run lint\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuninmd%2Fqueima-buchinho","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuninmd%2Fqueima-buchinho","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuninmd%2Fqueima-buchinho/lists"}