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.
Performance com RxJS, medida: o gargalo quase nunca é o operador
Uma pergunta que aparece sob "RxJS performance" é se o RxJS é lento. Eu medi. Na minha máquina, cada operador de uma cadeia custa entre 8 e 12 nanossegundos por valor. Não é de gra…


Erro ao inicializar o OAuth: como descobrir em que etapa o login quebrou
"Erro ao inicializar o OAuth", "Não foi possível entrar", "Login failed". A mensagem que chega ao usuário quase nunca diz onde o fluxo parou, e um login OAuth tem pelo menos cinco…

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…

Estrutura de pastas em Angular 22: features lazy e fronteiras que o lint garante
Em julho eu escrevi um panorama de arquitetura de pastas para React, Angular e Node.js. A parte de Angular envelheceu mal. Ela recomendava checkout.component.ts e auth.guard.ts, pa…

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…

Engenharia de contexto na prática: o que o agente não carrega não existe
Em 19 de agosto eu descobri que as regras escritas para todos os meus repositórios nunca tinham valido em sessão nenhuma. Elas estavam num AGENTS.md na pasta que reúne os projetos,…

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
Atualização: procurando só Angular? A estrutura de pastas em Angular 22 foi testada no CLI atual, com os nomes de arquivo de hoje (sem .component.ts), rotas lazy por feature e fron…

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…