Retune
A television that never stopped broadcasting 2010.
Eleven channels airing right now, whether or not the tab is open. You cannot pause, scrub or pick — you can change the channel, and that is all.
- Design + Engineering
- 2026
- In progress

Overview
Retune is a web television that is always mid-broadcast. Open it at four in the afternoon and a programme is already halfway through, because it has been running all day without you. There is no backend and nothing to store: what is on air is a pure function of the wall clock, so two people opening it at the same moment see the same frame. You retuned a set; you did not rewind it — retuning is the only control the app gives you.
Problem
On-demand video removed the thing that made television feel alive: you were joining something already in progress, and what you missed was gone. Rebuilding that on the web means the interface has to refuse the affordances people now expect.
Approach
Model a schedule, not a playlist. Playback position is derived from the wall clock, so tuning in mid-programme is the default rather than an edge case — and it means the app needs no backend at all, because there is no state to keep. Channel changes are deliberately lossy.
Architecture
React 19 and Vite, no server. The schedule is a pure function of current time, so every client computes the same answer independently. Two people opening it at the same moment see the same frame without anything being synchronised.
Key interactions
- What is on air is derived from the clock — no backend, no sync
- Eleven channels running continuously, tab open or not
- Channel-switch transition with static and signal-lock
- CRT scanline, bloom and chroma treatments in CSS
- Scheduled commercial breaks and bumpers
Technical decisions
Derive the schedule instead of storing it
Making air-time a function of the clock removed the backend entirely and made multi-viewer consistency free. There is nothing to keep in sync because there is nothing being kept.
No scrub bar
Every control that lets you recover what you missed dissolves the premise. Constraints are what sell the idea, so the only control is the channel.
What I took from it
- The strongest feature was the one I refused to build.