Bastidores

Produto· Construindo o Garfim · parte 19

Um usuário não via o dia de ontem. Abri todo o passado do Garfim.

A decisão de liberar a edição de qualquer dia passado no Garfim, sem limite de tempo e sem cobrar pelo que não consome IA. Veja as regras definidas.

Uma faixa de dias da semana no Garfim com um dia passado aberto e as refeições dele.

Em 6 de novembro de 2026, tomei uma decisão de produto a partir do feedback de um usuário que não conseguia ver o dia anterior. O aplicativo só mostrava o consumo de hoje.

A especificação do projeto já contemplava a edição retroativa e a cópia de refeições antigas. As fotos guardadas também nunca eram lidas de volta. O feedback evidenciou uma promessa no planejamento que a tela não entregava.

Defini então um registro de decisão técnica para reorganizar essa navegação. Deixo claro que se trata de uma decisão de arquitetura: em 7 de novembro, nada disso está no aplicativo no ar. Minha regra de trabalho exige que toda implementação seja a menor necessária, testada localmente e validada em ambiente de testes antes de subir para a produção.

Qualquer dia anterior funciona exatamente como o dia atual

A premissa da mudança é direta: qualquer dia passado precisa funcionar como o dia de hoje. A tela principal ganha uma faixa com os dias da semana para permitir a troca de data no mesmo espaço. Ao tocar numa data anterior, a pessoa vê as refeições registradas, o consumo de água e os totais nutricionais daquele dia.

O dia selecionado fica salvo apenas na memória do aparelho. Se o usuário fechar o aplicativo ou se o dia virar, a visualização retorna para a data corrente. Também desenhei uma tela de histórico mensal com calendário, total de dias registrados, média calórica e lista em ordem decrescente, com busca pelo nome do alimento.

A regra temporal estabelece limites claros. O sistema recusa registros com data futura, aceitando no máximo 15 minutos de folga em relação ao servidor para celulares com relógio adiantado. Para o passado, não há limite: os dados são da pessoa e ela preenche o histórico quando quiser.

Refeições em dias anteriores recebem o horário usual do turno naquela data (08:00, 12:30, 16:00 e 20:00 no fuso horário da conta). A tela permite alterar o horário exato ou mover o prato de dia. A água também passa a ser editável no passado, com os copos adicionados no meio-dia da data escolhida.

O que consome inteligência artificial mantém a cota diária

Um ponto central foi separar o que consome processamento de inteligência artificial das consultas de dados. Tudo o que não gera custo computacional segue gratuito. Visualizar o passado, editar porções, mover refeições, copiar pratos antigos, excluir registros e cadastrar alimentos por busca de texto ou código de barras permanecem liberados no plano gratuito.

O consumo das cotas gratuitas ocorre quando o aplicativo chama os modelos de visão ou de áudio. Uma análise fotográfica de um prato de ontem consome o limite diário da data em que a chamada é realizada, não da data da refeição.

No mesmo dia 6, removi das fichas das lojas a promessa de escolher fotos da galeria, pois o aplicativo não tinha esse recurso. A decisão do histórico agora inclui a importação de fotos da galeria para refeições fotografadas antes e não registradas na hora. Por exigir código nativo no celular, essa função chegará aos usuários numa versão nova das lojas, aplicando a mesma miniatura de 512 pixels das fotos comuns.

Para a remoção de várias refeições, o aplicativo processa as exclusões em lote após uma única confirmação, informando o total de calorias antes e depois da limpeza.

As fotos voltam a ser exibidas sem criar novos caminhos no sistema

Até agora, as fotos enviadas não eram lidas de volta pela interface. A nova regra determina que a foto da refeição volta a ser exibida para quem a tirou, permanecendo disponível enquanto o registro existir na conta.

A leitura dessas imagens aproveita a mesma sessão e checagem de propriedade das refeições, sem criar rotas paralelas ou novas estruturas de segurança. A antiga regra que apagava fotos após 30 dias foi revogada. Excluir a refeição ou a conta remove as imagens, e a limpeza automática continua descartando rascunhos após 24 horas.

A opção de salvar imagens segue como escolha em Privacidade, mas passa a vir ativada por padrão no consentimento do cadastro. Contas existentes preservam a opção já definida. Se a foto de uma refeição não foi guardada ou expirou na regra antiga, a tela mostra uma ilustração de prato com aviso de foto indisponível, mantendo a lista de alimentos. A numeração da política de privacidade fica igual para não invalidar consentimentos já concedidos.

O que foi recusado para manter a estrutura enxuta

Durante a proposta, avaliei e recusei três alternativas que trariam complexidade ao código:

  1. A criação de telas separadas para rotas de datas específicas, o que duplicaria a interface já existente na tela principal.
  2. A criação de caminhos paralelos no servidor para servir imagens, o que exigiria um segundo fluxo de autenticação para arquivos pequenos.
  3. A adição de uma nova biblioteca externa para seleção de calendário, visto que a base nativa do aplicativo já oferece esse componente.

Uma frase de um usuário bastou para mostrar que a especificação prometia o que a tela não entregava. A entrega vem em partes pequenas, cada uma testada localmente e em staging antes de chegar ao aplicativo. No mesmo dia, a ficha das lojas também precisou alinhar promessa e produto, como contei em 62% baixavam o Garfim, e o problema estava antes da página.

Teste local verde até no S23, e o staging ainda achou um defeito.08 nov · DesenvolvimentoOutra IA revisou 4.170 traduções da IA em inglês e corrigiu 307.08 nov · Inteligência artificialA conta live do Stripe estava ativa, mas falhou na minha conferência.08 nov · LançamentoTrês regras de HSTS num só domínio: por que deixei o preload de fora.08 nov · DesenvolvimentoUma palavra a menos derrubou 13 páginas que já estavam no ar.08 nov · DesenvolvimentoOutro agente de IA revisou meu código 71 vezes e criou dois defeitos.08 nov · Inteligência artificialDepois de 20 anos de carreira, publiquei meu primeiro pacote no npm.08 nov · LançamentoSozinho com IA: iPhone, Android, SaaS com MCP e CLI, e já faturando.07 nov · BastidoresCopiei a mecânica dos líderes e recusei a mentira deles.07 nov · BastidoresA pergunta de LGPD que trava a venda: e o backup?07 nov · ProdutoA IA calibrou minha câmera pelos números. Ficou cara de lanterna.07 nov · BastidoresUm usuário não via o dia de ontem. Abri todo o passado do Garfim.07 nov · Produto62% baixavam o Garfim. O problema estava antes da página.07 nov · LançamentoO idioma certo na tela pode virar o errado no servidor.07 nov · DesenvolvimentoO limite de 10 por minuto que deixou passar muito mais.07 nov · DesenvolvimentoUm PR do Dependabot travou meu banco e as rotas voltaram 500.07 nov · DesenvolvimentoMeus produtos novos não começam do zero. Começam de um clone.07 nov · DesenvolvimentoTirei uma trava da minha IA e a resposta caiu de 5,5 s para 3,7 s.07 nov · DesenvolvimentoTroquei velocidade por uma auditora que confere cada frase.07 nov · Inteligência artificialEscrevi o método CERNE lendo seis especificações reais.07 nov · Inteligência artificialComo anunciar na Meta e vender online no CPF sem abrir empresa.05 nov · BastidoresPausei anúncios depois de ignorar o resultado anterior.05 nov · BastidoresComo depurei um erro de API sem log no registro do Garfim.05 nov · DesenvolvimentoComo forçar atualização no React Native antes de um defeito grave.05 nov · DesenvolvimentoComo levei o LCP do ClipLeve de 9,9 s para menos de 1,5 s.05 nov · DesenvolvimentoPubliquei 650 páginas contra a regra do meu método.05 nov · Inteligência artificialUma conta para organizar erros, métricas e IA dos meus produtos.05 nov · BastidoresSeparei o painel do site e pus o Access na porta.05 nov · DesenvolvimentoUma lista de 69 itens encontrou requisitos só no papel.05 nov · BastidoresO antispam esperou tanto que parou o formulário.05 nov · DesenvolvimentoCortei a publicação de 17 minutos para 4 na minha máquina.05 nov · DesenvolvimentoEu gravo. A IA corta, legenda e entrega o vídeo curto.05 nov · Inteligência artificialComo criar anúncios UGC com IA usando o método PROVA.05 nov · Inteligência artificialA IA disse que usou as skills. A página provou o contrário.05 nov · Inteligência artificialNove páginas reprovadas antes de encontrar uma identidade.05 nov · Inteligência artificialEm 48 horas, juntei domínios, e‑mail, sites e medição num padrão só.30 out · BastidoresPor que tirei os três sites do GPT Sites.30 out · DesenvolvimentoComo troquei o luisjunior.ai com cerca de 10 segundos fora do ar.30 out · DesenvolvimentoRefiz o luisjunior.ai do zero: cada afirmação com prova.30 out · LançamentoUm padrão para todos os domínios, inclusive os de produtos futuros.30 out · BastidoresTodo o e‑mail dos meus domínios saiu do VPS num só dia.30 out · DesenvolvimentoDecidi mover o envio do Garfim do Resend para a Cloudflare.30 out · DesenvolvimentoO método FONTE para aparecer no Google e nas respostas de IA.30 out · Inteligência artificialTrês sites, três decisões de busca, e uma delas é não gerar páginas.30 out · Inteligência artificialMedição de vários sites num painel só, com consentimento.30 out · BastidoresComo a IA me apresenta mídias para aprovação29 out · Inteligência artificialO Garfim chegou ao Google Play. Agora tem Android e iPhone.22 out · LançamentoConseguir testadores e esperar 14 dias: a reta final do Garfim no Android.22 out · BastidoresO ClipLeve chegou à App Store. O que aprendi até aqui.20 out · LançamentoO ClipLeve foi rejeitado de novo. Dessa vez, por uma palavra.20 out · ProdutoO Garfim foi aprovado. E já está na App Store.16 out · LançamentoA última negativa do Garfim: câmera, assinatura e o caminho inteiro.16 out · LançamentoClipLeve: o cuidado por trás de um vídeo mais leve.12 out · ProdutoPor que restaurar uma assinatura pode falhar em outra conta.12 out · ProdutoQuando um aplicativo pode dizer que sua conta foi excluída?12 out · ProdutoO que a primeira negativa da App Store me fez explicar.08 out · LançamentoO que quero aprender com o teste fechado do Garfim.08 out · ProdutoO trabalho de uma assinatura continua depois da compra.03 out · DesenvolvimentoPor que o Garfim ganhou um plano gratuito.03 out · ProdutoO login funcionou. Por que a tela do Garfim não saiu do lugar?03 out · LançamentoPagenello: um site começa pelo que o visitante veio fazer.03 out · LançamentoComo uma foto do almoço vira um produto.27 set · ConcepçãoAs decisões que continuo tomando ao desenvolver com IA.27 set · DesenvolvimentoApresentar o Garfim ao público também é um teste do produto.27 set · Lançamento

GET luisjunior.ai/llms.txt

Esta é a versão do site escrita para modelos de linguagem: os mesmos fatos, sem layout, prontos para um assistente de IA ler e citar. Agentes no Chrome também encontram aqui ferramentas WebMCP para consultar produtos, textos e contato.

conectando…0 tokens · 0 tok/s