Engenharia de Software,
Arquitetura & Código.
samuelsantana.dev é um blog pessoal sobre engenharia de software, arquitetura e código — anotações de quem constrói produtos reais no dia a dia.
React #418 só depois das 21h: o servidor já estava amanhã
De dia, nada. A partir das 21h, todo carregamento do Painel e da página de demonstração do BolsoVerde, o app de controle de vendas que eu construo para pequenos vendedores (bolsove…


Idempotência em Tool Calls: o Bug Que Ninguém Vê Até o Agente de IA Duplicar uma Cobrança
Um agente de IA chama a ferramenta charge_customer. A chamada HTTP demora mais que o esperado, o timeout dispara, e o próprio modelo (não um script, o modelo) decide tentar de novo…

Connection Pooling em Postgres Serverless: Por Que Sua API Trava em Produção
Funciona perfeitamente no seu localhost. Passa no CI. Funciona em staging com dois usuários de teste. Aí você sobe para produção, o tráfego cresce um pouco e a API começa a devolve…

RxJS Já Sabe Fazer loading/error/data: os Operators Por Trás do rx-state-bridge
Toda tela que busca dado tem o mesmo esqueleto: um loading que vira true antes do request e false depois, um error que captura o que deu errado, um data que recebe o resultado. Trê…

signal() Também É Função: o Bug Que Deixava Todo Operator do rx-state-bridge Mudo com Angular
rx-state-bridge é uma lib que escrevi pra resolver um problema chato e repetitivo: todo fetch numa UI acaba com o mesmo trio de loading/error/data reescrito à mão, subscription atr…

O Erro Silencioso do OAuth: Por Que o Token Nunca Deveria Passar pela URL
O login OAuth funciona. O popup abre, o usuário aprova no Google, o popup fecha, e a sua aplicação recebe ?token=eyJhbGciOi... na URL de callback. Você lê o token da query string,…

Arquitetura de Pastas em Escala: Como organizar projetos React, Angular e Node.js com SOLID e Clean Architecture
Se você já precisou adicionar um simples campo em um formulário e teve que navegar por cinco pastas na raiz do projeto (/components, /services, /types, /hooks, /utils), você foi ví…

O Frontend Guiado por IA: WebMCP, Tools e Acessibilidade no Angular
Durante anos, o papel do frontend foi muito claro: buscar dados em uma API (REST ou GraphQL), gerenciar o estado local e renderizar HTML. Nós construímos aplicações "burras" que de…

Autenticação e Segurança: JWT vs. Server-Side Sessions no ecossistema Next.js + NestJS
Se existe um tema na engenharia de software capaz de gerar mais discussões do que a escolha entre espaços e tabs, é a autenticação. Durante anos, a comunidade frontend adotou um pa…

RxJS vs. Signals: O impacto na performance e na arquitetura de aplicações Angular
Quem constrói aplicações Angular há mais de alguns anos provavelmente desenvolveu uma espécie de Síndrome de Estocolmo com o RxJS. Nós o amamos pela sua robustez em lidar com fluxo…

Estratégias Reais para Migração de Frontends Complexos
O Fim do "Big Bang" Todo dev sênior já esteve nessa reunião. O legado acumulou uma dívida técnica impagável, o tempo de build leva minutos dolorosos, cada nova feature quebra duas…

Arquitetura de LLMs: Tokens, Contexto, Skills e Agentes
A integração de IA generativa deixou de ser apenas sobre interfaces de chat e se tornou um desafio direto de arquitetura de software. Entender o funcionamento do motor dessas ferra…

Por que meu login OAuth funcionava em dev e travava em produção
Durante semanas o login com Google e GitHub do samuelsantana.dev funcionou perfeitamente — no meu ambiente local. Em produção, o popup abria, o usuário autorizava, e depois disso n…

O Renascimento do Angular: Signals e a Nova Abordagem HTTP
Se você acompanha o ecossistema Angular de perto, sabe que o framework está passando pelo seu maior renascimento desde a reescrita do AngularJS para o Angular 2. Com a chegada das…

O Frontend Virou o Novo Monolito? Como a Arquitetura Impacta a Escala do Negócio
Durante muito tempo, o termo "monolito legado" foi um pesadelo exclusivo dos times de backend. Porém, com o aumento da complexidade das aplicações web modernas, a lógica de negócio…