Software Engineering,
Architecture & Code.
samuelsantana.dev is a personal blog about software engineering, architecture, and code — notes from someone who builds real products day to day.
RxJS Already Knows How to Do loading/error/data: the Operators Behind rx-state-bridge
Every screen that fetches data has the same skeleton: a loading that flips to true before the request and false after, an error that captures whatever went wrong, a data that recei…


signal() Is Also a Function: the Bug That Silenced Every rx-state-bridge Operator Under Angular
rx-state-bridge is a library I wrote to solve a tedious, repetitive problem: every fetch in a UI ends up with the same loading/error/data trio rewritten by hand, subscription after…

The Silent OAuth Bug: Why the Token Should Never Travel Through the URL
OAuth login works. The popup opens, the user approves on Google, the popup closes, and your app receives ?token=eyJhbGciOi... in the callback URL. You read the token off the query…

Folder Architecture at Scale: How to Organize React, Angular, and Node.js Projects with SOLID and Clean Architecture
If you have ever had to add a simple field to a form and found yourself navigating through five folders in the project root (/components, /services, /types, /hooks, /utils), you ha…

The AI-Driven Frontend: Integrating WebMCP, Agent Skills, and Angular Aria
For years, the role of the frontend was very clear: fetch data from an API (REST or GraphQL), manage local state, and render HTML. We built "dumb" applications that relied exclusiv…

Authentication and Security: JWT vs. Server-Side Sessions in the Next.js + NestJS Ecosystem
If there is a topic in software engineering capable of generating more debates than the choice between spaces and tabs, it's authentication. For years, the frontend community adopt…

RxJS vs. Signals: The impact on performance and architecture in Angular applications
Anyone building Angular applications for more than a few years has probably developed a sort of Stockholm Syndrome with RxJS. We love it for its robustness in handling complex asyn…

Real Strategies for Complex Frontend Migrations
The End of the "Big Bang" Every senior dev has been in this meeting. The legacy code has accumulated unpayable technical debt, build times take agonizing minutes, every new feature…

LLM Architecture: Tokens, Context, Skills, and Agents
The integration of generative AI is no longer just about chat interfaces; it has become a direct software architecture challenge. Understanding how the engine of these tools works…

Why My OAuth Login Worked in Dev and Broke in Production
For weeks, the Google and GitHub login on samuelsantana.dev worked perfectly—in my local environment. In production, the popup would open, the user would authorize, and after that,…

The Angular Renaissance: Mastering Signals and the New HTTP Approach
If you follow the Angular ecosystem closely, you know the framework is going through its biggest renaissance since the AngularJS-to-Angular-2 rewrite. With versions 16 and 17 landi…

🏗️ Has the Frontend Become the New Monolith? How Architecture Impacts Business Scale
For a long time, the term "legacy monolith" was a nightmare exclusive to backend teams. But as the complexity of modern web applications grew, business logic, state management, and…