Every meeting room, classroom and church hall has a screen, and every screen has a browser. Yet putting one thing on that screen, a PDF, a few photos, a countdown timer, still means hunting for an HDMI cable or mirroring your whole phone to the room, notifications included.
I built V U This to fix that with the smallest possible stack. Here is how it works and what I learned.
The idea: the screen is a dumb client, the phone is the remote
Open vuthis.com on any TV, projector laptop or Raspberry Pi. The page creates a display session and shows a QR code that encodes the full controller URL, plus a short code as a fallback. Scan it with a phone and the phone becomes the remote. Whatever you pick on the phone, the screen shows: a photo slideshow, a PDF with page controls, large text, an announcement, a clock in any time zone, a countdown / count-up / count-to timer, a tally counter or a Wi-Fi QR code.
Only the chosen content ever reaches the screen. That is the whole point: it is screen sharing without screen mirroring.
Why a browser and not an app
- Every smart TV, Chromecast (browser mode), Fire TV (Silk), signage player and projector laptop already has a browser. Zero install on either side.
- No pairing, no same-Wi-Fi requirement, no AirPlay/Miracast compatibility matrix. Works over 4G.
- A QR code is the fastest possible pairing UX. People already know what to do with it.
The stack
Boring on purpose: Node.js + Express, SQLite for sessions and pass state, WebSockets for the display ↔ controller channel, pdf.js for documents rendered client-side, Stripe for passes, Postfix/OpenDKIM for magic-link login, everything behind Cloudflare. A CLI installer sets up an Ubuntu VPS end to end, and it can be self-hosted on a private LAN for schools and offices that cannot use cloud tools.
The display page is deliberately stateless: it subscribes to its session over a WebSocket and renders whatever "scene" JSON arrives ({type:"timer", mode:"countdown", seconds:600, label:"Break"}). The controller is space-adaptive: on a phone it shows the essentials, on a tablet or laptop it surfaces previews, queueing and context. Same code, more room, more controls.
Things that bit me
-
TV browsers are old. Samsung Tizen and LG webOS ship Chromium builds several versions behind. No optional chaining in some, flaky
requestFullscreen. Transpile, and test on a real TV. - Screensavers and sleep. A display page that goes black after ten minutes is useless. The Wake Lock API helps where supported; otherwise a tiny looping video keeps some TVs awake.
- PDFs on a 4K screen. Rendering with pdf.js at device pixel ratio matters; "fit page" vs "fit width" need to be one tap on the phone, not a zoom gesture.
- Timers must survive reconnects. Store the end timestamp, not the remaining seconds, so a display that drops Wi-Fi and comes back shows the right number.
- Free tiers need limits that feel fair. One screen, 60 minutes, 20 photos, one PDF, no account. Paid passes ($5.99 for 24h up to $299.99 a year) add multiple screens, 250 MB storage and an automatic playlist mode that turns a TV into simple digital signage.
Where people actually use it
Teachers put a full-screen countdown timer on the classroom projector and worksheets on the board from a phone. Coworking spaces show the agenda on the meeting-room TV. Reception desks run a digital notice board. Event organisers show the schedule and the guest Wi-Fi as a QR code. Families show phone photos on the living-room TV without a casting device.
Try it
Open vuthis.com on a screen, scan, show. No sign-up. Feature guides: show photos on a TV, display a PDF on a TV, full-screen countdown timer, digital notice board on a TV.
If it fails on a specific TV browser, I would love to know which one. And if you find it useful, a link from your blog, README or wherever you post helps a bootstrapped two-person team more than you would think.
Top comments (0)