§1O problema
Planejar a semana, comprar, cozinhar em lote e saber o que está no congelador são tarefas soltas. Faltava um fluxo único, do cardápio até a etiqueta com a data de validade.
§2O que eu construí
- Cinco telasSemana, Coach, Cozinha, Compras e Despensa.
- CoachMonta um cardápio a partir de regras definidas na tela, usando um LLM e receitas buscadas ao vivo em um serviço de receitas.
- ComprasLista de compras precificada e entrega do carrinho ao supermercado online (a compra final é feita lá).
- ReceitasCriadas no serviço de receitas pela API da própria página (gravação conferida depois por leitura).
- EtiquetasUma etiqueta por porção em impressora Bluetooth, por D-Bus, com data de congelamento e validade.
- DespensaEstados da porção (planejada, comprada, cozida, congelada).
- Guarda de acesso localContra requisições de outros sites.
§3As partes difíceis
5 itens- 01
Automatizar serviços sem API pública
Navegador controlado por script, e achar que a página usa uma API REST (GET/PATCH) em vez de simular digitação.
- 02
Impressora Bluetooth no Linux sem root
A biblioteca padrão não conectava; criei só o transporte falando com o BlueZ por D-Bus e reaproveitei o protocolo da biblioteca.
- 03
Impressora que dorme sozinha
E a confirmação de página que nunca chega (resolvido consultando o estado de tempos em tempos).
- 04
Etiqueta legível
Registrar a fonte manualmente para o canvas não sair com retângulos, e conferir sem gastar etiqueta (modo só-PNG).
- 05
Trabalhos lentos assíncronos e regras de calendário
Sempre planeja a próxima semana, nunca a atual.
§4Resultado
Ciclo completo implementado e ensaiado de ponta a ponta em agosto de 2026, com impressão de etiqueta confirmada na impressora. Última atualização em outubro de 2026.
§5Stack
- Next.js 16
- TypeScript
- SQLite (better-sqlite3)
- LLM por linha de comando (saída JSON)
- Puppeteer / navegador automatizado
- Bluetooth LE (BlueZ / D-Bus, niimbluelib)
- @napi-rs/canvas
- pm2
- Tailscale