Full-stack engineering · Realtime systems · Interaction design · 2026
PlayAgain
A browser gaming application that connects a TV or desktop screen with phones as controllers.
Web application · Personal project

The problem
Playing together across a shared screen and personal phones requires a clear pairing flow, responsive input and reliable connection handling. I built PlayAgain around a host screen, mobile controllers and browser-based emulation, bringing those separate device roles into one application.
Engineering
Next.js and TypeScript provide the host, controller and API routes. Browser clients handle emulation, rendering and audio; the realtime layer connects room membership and controller input through WebSockets, WebRTC and Redis pub/sub. QR pairing, room tokens, input protocols and connection state management support the interaction between devices.
Device experience
The host interface supports large screens and gamepad navigation, while the mobile interface provides touch controls and paired gamepad input. A controller-run mode lets the phone run the emulator and stream video and audio to the host. Authentication, Google Drive library routes and save-state handling sit alongside the gameplay interface.
Verification
The repository includes tests for binary input protocols, connection state, host and controller behavior, and transport switching. The screenshots show the live landing page, host room, paired phone controller and the built-in controller demo.
Project visuals
Select an image to view it at full size.


