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
Demo ↗GitHub (fe)GitHub (be) ↗
realtimereact-nativesocket-io