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: a plain web stack, WebSockets between the screen and the phone, PDFs rendered in the browser, Stripe for passes, and a hosted service at vuthis.com. No app store, no installer on either end. That is the whole point: the only thing a screen needs is a browser.
The display page is deliberately simple: it subscribes to its session and renders whatever it is told to show. 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. A display that drops Wi-Fi for a minute and comes back must show the right number, not the number it last saw. We test this by being cruel to real TVs.
- 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.
Elsewhere: the non-technical version of this story is on Medium, Screen mirroring has a privacy problem. A QR code fixes it. The launch announcement is on PRLog. We post updates on Bluesky and Mastodon, and there is a Flipboard magazine of guides.
Top comments (0)