SpillR
2026Real-time / Networked · Full-stack
Real-time TV commentary platform with time-synced messaging. Mobile-first.
A second-screen app for watching TV together when you aren't together. You join a room for an episode, scrub through its timeline, and the chat plays back in sync — every comment pinned to the moment in the episode it was written at, resurfacing there on every rewatch.
How it works
- Comments carry
runtime_seconds— a position on the episode clock, not a wall-clock timestamp. That one decision makes the chat replayable. - Playback is buffer-and-drip: a 30-second lookahead pre-fetches upcoming comments, and a ticker releases each one the instant the clock passes it.
- A 40-second proximity gate decides whether a freshly arriving live comment appears immediately or quietly waits for its slot in the timeline.
- Socket.IO rooms are keyed by episode, so replies, reactions, polls and spoiler marks only reach people watching the same thing. Show data syncs from TVMaze into a 12-table Postgres schema.
- The quirk: there is no video anywhere. The "episode" is a simulated clock — a play button and a scrubber ticking one second at a time — and the whole synced-chat illusion hangs off it.
Credit
Built with a Northcoders team of four. The real-time layer is mine: the backend socket engine and the comment playback and sync hooks on the client.
Numbers
13 REST endpoints, ~11 socket events, 55 backend tests. Backend deployed on Render — kept awake on the free tier by a cron job that pings it every ten minutes.
React NativeExpoExpressSocket.ioSupabasePostgreSQL
realtimereact-nativesocket-io