[{"data":1,"prerenderedAt":253},["ShallowReactive",2],{"diario":3},[4,44,71,100,129,165,193],{"id":5,"title":6,"body":7,"date":30,"description":31,"extension":32,"meta":33,"navigation":34,"path":35,"seo":36,"stem":37,"tags":38,"__hash__":43},"diario/diario/animacoes-site-pessoal.md","Animações no site pessoal",{"type":8,"value":9,"toc":26},"minimark",[10,23],[11,12,13,14,18,19,22],"p",{},"Quis dar uma animaçãozinha no site pessoal. Criei um composable ",[15,16,17],"code",{},"useReveal"," com Intersection Observer e uma diretiva ",[15,20,21],{},"v-reveal"," pra animar elementos quando entram na viewport. Zero dependências, tudo CSS.",[11,24,25],{},"Fade up, stagger em listas, navbar que esconde ao scrollar pra baixo e aparece ao scrollar pra cima. Simples e leve.",{"title":27,"searchDepth":28,"depth":28,"links":29},"",2,[],"2026-03-05","Quis dar uma animaçãozinha no site pessoal. Criei um composable useReveal com Intersection Observer e uma diretiva v-reveal pra animar elementos quando entram na viewport. Zero dependências, tudo CSS.","md",{},true,"/diario/animacoes-site-pessoal",{"title":6,"description":31},"diario/animacoes-site-pessoal",[39,40,41,42],"site-pessoal","animacoes","css","nuxt","ebHmk3-5ycnXoR2hx6xtqjLQewI8-lE2vLCtBYcypSI",{"id":45,"title":46,"body":47,"date":60,"description":51,"extension":32,"meta":61,"navigation":34,"path":62,"seo":63,"stem":64,"tags":65,"__hash__":70},"diario/diario/afscj-nfce-e-suporte-pj.md","AFSCJ: entrega oficial da loja dos funcionários",{"type":8,"value":48,"toc":58},[49,52,55],[11,50,51],{},"Hoje fiz a entrega oficial da loja dos funcionários da SC Johnson. Desenvolvi a primeira versão em 2011 e refiz agora em 2025. Quinze anos depois, a loja voltou completa: catálogo de produtos, pedidos com PIX e desconto em folha, controle de estoque por centro de distribuição, e agora com emissão de nota e cupom fiscal via API do Bling.",[11,53,54],{},"O suporte a PJ foi o último ajuste. Pessoa jurídica não tem data de nascimento obrigatória, então relaxei a validação. Ajustei também os templates de email pra não pedir \"CPF\" quando é CNPJ.",[11,56,57],{},"Serviço entregue. Quem sabe renovar a loja deles daqui a mais 15 anos. Mas acho que estarei aposentado curtindo a vida apenas.",{"title":27,"searchDepth":28,"depth":28,"links":59},[],"2026-03-04",{},"/diario/afscj-nfce-e-suporte-pj",{"title":46,"description":51},"diario/afscj-nfce-e-suporte-pj",[66,67,68,69],"afscj","ecommerce","bling","terceiros","dfRTeYYwMf1m9DwifSbP5GzUO4MwUoD0T49xWR5rz5Y",{"id":72,"title":73,"body":74,"date":60,"description":78,"extension":32,"meta":90,"navigation":34,"path":91,"seo":92,"stem":93,"tags":94,"__hash__":99},"diario/diario/promax-extrusao-3d-e-modal-de-layers.md","Promax CNC: extrusão 3D e configuração de layers",{"type":8,"value":75,"toc":88},[76,79,82,85],[11,77,78],{},"Dia pesado na Promax. Implementei a extrusão 3D da espessura da chapa no visualizador Three.js. Antes o preview era flat. Agora a chapa aparece com a espessura real do material. Chapa de 3mm parece chapa de 3mm. Parece bobeira mas muda completamente a percepção do operador quando tá validando o nesting antes de cortar.",[11,80,81],{},"Junto com isso, fiz o modal de LayerConfig. Quando um DXF é importado, cada layer do arquivo vira uma linha no modal onde se configura: velocidade de corte, potência do laser, número de passes, ordem de corte. Contorno externo corta mais devagar, furos internos podem cortar mais rápido. Cada layer com parâmetros independentes.",[11,83,84],{},"Também melhorei o import de CSV Promob. Marceneiros usam o Promob pra projetar móveis. Agora exportam a lista de peças do Promob, importam no Promax, e o G-code sai pronto pro CNC. Fluxo que antes levava horas vira minutos.",[11,86,87],{},"A Promax tá tomando forma. Ainda preciso fechar o catálogo de materiais e o módulo de orçamento, mas o core de DXF → nesting → G-code já funciona.",{"title":27,"searchDepth":28,"depth":28,"links":89},[],{},"/diario/promax-extrusao-3d-e-modal-de-layers",{"title":73,"description":78},"diario/promax-extrusao-3d-e-modal-de-layers",[95,96,97,98],"promax","cnc","three.js","react","9tZL8KAwldTyhiXb87FKrd5clTEvZeetDtrZlDE3EEg",{"id":101,"title":102,"body":103,"date":119,"description":107,"extension":32,"meta":120,"navigation":34,"path":121,"seo":122,"stem":123,"tags":124,"__hash__":128},"diario/diario/talkpro-backend-pronto-app-na-fila.md","TalkPro: começando os apps iOS e Android",{"type":8,"value":104,"toc":117},[105,108,111,114],[11,106,107],{},"TalkPro é um sistema de gestão de atendimento pra provedores de internet fibra. O backend já tá rodando com 57 endpoints na API Restify: autenticação, faturas com PIX e boleto, tickets de suporte, teste de velocidade, gestão de conta. Tudo pronto com conexão ao hardware, CTO, OLT, etc.",[11,109,110],{},"Agora comecei a desenvolver os apps pra iOS e Android. O plano é Expo SDK 52, React Native com NativeWind, Zustand pro state e TanStack Query pro server state.",[11,112,113],{},"Organizei o plano de desenvolvimento em 8 fases. Fase 0 é o scaffold com auth biométrica via expo-secure-store. Fase 1 é a tela de faturas, que é a funcionalidade mais usada. Depois vem suporte, velocidade, e o resto.",[11,115,116],{},"O app é white-label. Qualquer provedor de internet consegue colocar a marca dele e entregar pro cliente final. A API já suporta multi-tenant, então o app só precisa consumir.",{"title":27,"searchDepth":28,"depth":28,"links":118},[],"2026-03-03",{},"/diario/talkpro-backend-pronto-app-na-fila",{"title":102,"description":107},"diario/talkpro-backend-pronto-app-na-fila",[125,126,127,69],"talkpro","react-native","expo","4Qzox9HNFsMwPsqrnPYEIb9m3tDUDJXSq0wgvjpYaEI",{"id":130,"title":131,"body":132,"date":156,"description":136,"extension":32,"meta":157,"navigation":34,"path":158,"seo":159,"stem":160,"tags":161,"__hash__":164},"diario/diario/ted-variantes-e-central-do-cliente.md","T&D: variantes na troca e ajustes na central do cliente",{"type":8,"value":133,"toc":154},[134,137,140,143],[11,135,136],{},"Na Troque & Devolva, trabalhei em duas frentes hoje.",[11,138,139],{},"No app, melhorei o card e modal de novo pedido pra exibir badges de variantes e o layout de preço. Quando o consumidor faz uma troca, agora fica claro qual variante (cor, tamanho) ele tá devolvendo e qual tá recebendo.",[11,141,142],{},"Na central do cliente, alguns ajustes e correções de bugs. No site, publiquei a seção de Exchange Variants na página de reversas.",[11,144,145,146,153],{},"Se você precisa de uma ferramenta de trocas, devoluções ou pós-vendas para e-commerce, visita o ",[147,148,152],"a",{"href":149,"rel":150},"https://troqueedevolva.com.br",[151],"nofollow","troqueedevolva.com.br",".",{"title":27,"searchDepth":28,"depth":28,"links":155},[],"2026-03-02",{},"/diario/ted-variantes-e-central-do-cliente",{"title":131,"description":136},"diario/ted-variantes-e-central-do-cliente",[162,67,163],"ted","troca","Dy9BkjujNAi8tELQ5SiB6A8WQNAWx4qw1_26NpgcEWw",{"id":166,"title":167,"body":168,"date":184,"description":172,"extension":32,"meta":185,"navigation":34,"path":186,"seo":187,"stem":188,"tags":189,"__hash__":192},"diario/diario/promax-site-redesign-factoryflow.md","Promax CNC: nova empresa, redesign do site",{"type":8,"value":169,"toc":182},[170,173,176,179],[11,171,172],{},"Tô começando uma empresa nova: Promax CNC. A ideia é uma plataforma completa pra fábricas de corte CNC (laser, plasma, router). O fluxo é simples: importa o arquivo DXF com o desenho das peças, o sistema faz o nesting automático (encaixa as peças na chapa pra desperdiçar o mínimo de material), otimiza o G-code e gera o arquivo .nc pronto pro CNC.",[11,174,175],{},"Hoje o operador de CNC faz isso manualmente ou usa software caro e complicado. A Promax resolve com uma plataforma web acessível. Abre no navegador, importa o DXF, e em minutos tem o arquivo de corte otimizado.",[11,177,178],{},"A stack é monorepo: React 19 no frontend, Fastify no backend, MongoDB, e um pacote core com parser de DXF, engine de nesting e gerador de G-code com pós-processador Syntec.",[11,180,181],{},"Hoje fiz o redesign do site institucional. Visual mais corporativo e industrial. O público é dono de fábrica, não pode parecer startup de tecnologia. Criei uma seção FactoryFlow mostrando o fluxo da fábrica em 14 passos em zigzag. Ficou boa mas escondi temporariamente porque precisa de ilustrações melhores.",{"title":27,"searchDepth":28,"depth":28,"links":183},[],"2026-03-01",{},"/diario/promax-site-redesign-factoryflow",{"title":167,"description":172},"diario/promax-site-redesign-factoryflow",[95,96,190,191],"site","nova-empresa","lEm1YwE8y68rJiEzo93Emth9BC7bKf8dakmAuVVvWho",{"id":194,"title":195,"body":196,"date":244,"description":200,"extension":32,"meta":245,"navigation":34,"path":246,"seo":247,"stem":248,"tags":249,"__hash__":252},"diario/diario/confirmacao-de-identidade-para-dados-sensiveis.md","Confirmação de identidade para dados sensíveis",{"type":8,"value":197,"toc":242},[198,201,208,211,214,239],[11,199,200],{},"Tem gente que deixa o navegador logado na Troque & Devolva o dia inteiro e isso abre brecha pra vazamento de dados importantes. Um colega poderia acessar dados sensíveis pelo login que ficou aberto.",[11,202,203,204,207],{},"Pra deixar isso mais seguro, dados sensíveis como tokens e chaves de integração agora ficam mascarados por padrão (",[15,205,206],{},"****c123","). Pra revelar, o usuário precisa confirmar a identidade com senha ou código 2FA.",[11,209,210],{},"Mesmo depois de revelar, os dados ficam visíveis por poucos minutos e depois mascaram de novo automaticamente.",[11,212,213],{},"Como eu fiz:",[215,216,217,221,224,227,230,233,236],"ul",{},[218,219,220],"li",{},"Cada rota da API que devolve dado sensível é marcada com um decorator que diz quais campos mascarar",[218,222,223],{},"O backend já entrega tudo mascarado. O frontend nunca recebe o valor real sem autorização",[218,225,226],{},"Quando o usuário pede pra revelar, primeiro confirma a senha ou código 2FA",[218,228,229],{},"Depois a API verifica se ele tem no seu escopo permissão pra aquele tipo de dado",[218,231,232],{},"Se tiver, cria uma janela de 5 minutos vinculada àquele recurso específico",[218,234,235],{},"Expirou, mascara de novo",[218,237,238],{},"Toda revelação fica registrada em log de auditoria com retenção de 1 ano: IP, user agent, horário e o que foi revelado",[11,240,241],{},"Mais um requisito de segurança entregue.",{"title":27,"searchDepth":28,"depth":28,"links":243},[],"2026-02-24",{},"/diario/confirmacao-de-identidade-para-dados-sensiveis",{"title":195,"description":200},"diario/confirmacao-de-identidade-para-dados-sensiveis",[162,250,251],"segurança","api","SCRpAHpsmgq95tJx5TaXARYR0aTU4mgt0CC6AQi5EKQ",1772834005831]