An online degree means the people you study with are people you never stand next to. A video call is the obvious substitute and it is a poor one, because a call permits exactly one conversation and puts everybody inside it. Nobody drifts to the side of the room, nobody leans over for a quiet word, and leaving is a visible event rather than a step. What is missing is not video quality — it is presence and the ordinary social freedom of a shared space: being near some people and not others, and being able to change that by moving. The objective was a space that restores those affordances in a browser tab, for a group that has no shared building to meet in.
The space is a styled 2D campus rendered in Phaser, which each person walks as a character. Audio is positional: LiveKit tracks are mixed by distance, so a voice rises as you approach and fades as you leave, and privacy becomes a matter of walking somewhere else rather than of finding a menu. Two other conversation shapes sit on top of that — key-gated meeting rooms with seated video for a deliberate huddle, and a stage that broadcasts one speaker to everybody in the world at once. Underneath, the build is an npm-workspaces monorepo whose defining rule is that every wire payload exists exactly once: the shared package holds zod schemas, the backend validates against them at runtime, and the frontend imports only the inferred types, which are erased at compile time so zod never ships to the browser.




