Banking interfaces are where client-rendered SPAs are least defensible — slow first paint on poor connections, and nothing readable without JavaScript.
What I did about it
Every one of 46 pages is a server component. Zero 'use client' page files — the only project in the portfolio at 100% server rendering.
Interactivity is pushed to leaf client components, never to the route.
What I rejected, and why
Stated plainly: this is a complete, high-quality banking interface, not a banking system. There is no backend in this repository.
It is a complete, high-quality banking interface with no backend behind it. Building the UI first was the brief, but I would have stubbed a typed API contract alongside it so the frontend's assumptions were written down rather than implied.