10 · FRONTEND ARCHITECTURE · ANGULAR / TYPESCRIPT / NAVIGATION
Navigation Is Not the Business
A URL can represent and restore where the customer is without becoming the owner of workflow or business state.
Checkout position gained navigation semantics through representation, browser-history synchronization, and restoration while workflow and business responsibilities remained separate.
POSITION → URL → RESTORE → OWNERSHIP
Read engineering note → 09 · FRONTEND ARCHITECTURE · ANGULAR / TYPESCRIPT / ASYNC WORKFLOWS
What Happens While We Wait?
Latency can change workflow correctness when one user intent is allowed to start the same operation twice.
An in-flight operation introduced duplicate-intent protection, workflow-owned pending state, and visible progress without earning a generalized async-state framework.
INTENT → IN-FLIGHT → GUARD → OUTCOME
Read engineering note → 08 · FRONTEND ARCHITECTURE · ANGULAR / TYPESCRIPT / SERVER STATE
The Server Owns Some of Our State
The browser can hold a valid Order representation without owning the authoritative truth about that Order.
Server-owned data has a different lifecycle from ordinary local state: authority, freshness, staleness, and refetching matter.
REPRESENTATION → STALENESS → AUTHORITY → REFETCH
Read engineering note → 07 · FRONTEND ARCHITECTURE · ANGULAR / TYPESCRIPT / DEPENDENCY INJECTION
Dependency Injection Is Not Dependency Inversion
Angular can inject dependencies correctly while higher-level code still depends on the wrong abstraction.
Dependency Inversion, Dependency Injection, and composition participate in the same runtime graph but answer different architectural questions.
COUPLING → INVERSION → DI → COMPOSITION
Read engineering note → 06 · FRONTEND ARCHITECTURE · TYPESCRIPT / ANGULAR / REACT
Replace Angular. What Breaks?
The frontend Application was supposed to be independent of Angular. Replacing the UI with React tested whether that claim was actually true.
The UI framework changed. The Application, Domain, use cases, and business behavior did not.
CLAIM → SUBSTITUTE → JOURNEY → EVIDENCE
Read engineering note → 05 · FRONTEND ARCHITECTURE · ANGULAR / TYPESCRIPT / REST / GRAPHQL
REST Was an Implementation Detail. Prove It.
REST was supposed to be replaceable. Swapping it for GraphQL tested whether that architectural claim was actually true.
The transport changed. The Application, Domain, capability contracts, and customer journey did not.
CLAIM → SUBSTITUTE → E2E → EVIDENCE
Read engineering note → 04 · BACKEND ARCHITECTURE · PYTHON / DJANGO / FLASK
We Said Django Was an Adapter. Prove It.
Calling Django an adapter was an architectural claim. Replacing its HTTP role with Flask was the experiment.
The inbound HTTP framework changed. The Domain and Application did not.
CLAIM → REPLACE → SYSTEM TEST → EVIDENCE
Read engineering note → 03 · FRONTEND ARCHITECTURE · TYPESCRIPT / ANGULAR
When CQRS Earns Its Place — and When It Doesn't
I split reads from writes. I still did not introduce CQRS.
Different responsibilities can earn segregation without earning CQRS.
DIVERGENCE → NARROW CAPABILITIES → CQRS QUESTION → STOP
Read engineering note → 02 · FRONTEND ARCHITECTURE · TYPESCRIPT / ANGULAR
Measure Before You Optimize
Finding inefficiency is not the same as finding a problem.
The browser was over-fetching. Measurement showed that the observed cost still did not justify another architectural mechanism.
OBSERVE → MEASURE → DECIDE → STOP
Read engineering note → 01 · BACKEND ARCHITECTURE · PYTHON / DJANGO
The In-Memory Lie
What a Fake Can Prove — and What It Can't
A green in-memory test proved application coordination — but not database persistence.
TEST → ASSUMPTION → REAL DATABASE → EVIDENCE
Read engineering note →