The transcendence project addresses a fundamental challenge in fullstack education: how to ship a production-grade system that combines real-time interactivity, data persistence, and user experience in a single codebase. Most tutorials silently gloss over session state, connection reliability, or multi-step user flows.
The core insight driving architecture decisions was separation of concerns without artificial boundaries. Rather than a monolithic 'call the backend, render the response' pattern, the system splits game logic (client-side, fast-loop), user management (server-side, transactional), and real-time state (bidirectional over WebSocket). This separation forces clarity: a move in Pong is client-authoritative with server-reconciliation; a friend request is server-authoritative with eventual client sync.
Every dependency was chosen to minimize complexity-per-feature. Fastify over Express for simpler plugin composition. Prisma over raw SQL for migration safety. Zod for compile-time inference of validation schemas. Socket.io for abstraction over raw WebSockets. These choices compound: schema validation automatically generates Swagger docs; Prisma migrations track database evolution; Zod + TypeScript prevent entire categories of null/undefined bugs.

