Designing player and spectator roles into the schema
The Intelli Casino role system isn't just a frontend toggle. It shows up in Prisma relations, GraphQL authorization, the active-games dashboard, and the play screens themselves.

The Intelli Casino role system isn't just a frontend toggle. It shows up in Prisma relations, GraphQL authorization, the active-games dashboard, and the play screens themselves.
I didn't build a separate client-side event layer for Intelli Casino. The GraphQL subscription payloads wrote straight into Apollo cache, and that turned out to be enough to drive the whole live UI.
For a game that could eventually involve real money, hiding future questions can't be a frontend courtesy. It has to be enforced in the GraphQL payload itself.
The interesting part of a live quiz game isn't rendering questions. It's keeping every client on the same clock while still letting the player move fast and the server stay authoritative.
The main reason for the split was simple: I wanted realtime subscriptions, and Vercel wasn't the place to run long-lived WebSocket connections. Once that constraint was clear, the architecture got clearer too.
Building a revolutionary quiz platform that combines intellectual challenges with blockchain-powered betting, creating a unique intersection of knowledge and entertainment.