Three.js and Vite with TypeScript in strict mode, a roughly sixty line observable store, a DOM heads up display rather than a component tree, and no backend. No React, no React Three Fiber, no Zustand, no Redux, no Tailwind. That was a decision rather than an omission: a brief proposed all of them, and every one I did not adopt is written down with the reason in a decisions log that now runs to dozens of entries.