Overview

JustCastIt is a zero-install, browser-based wireless screen-casting platform for TouchIT interactive LED displays. A presenter opens the casting page in any browser - on PC, Mac, Chromebook, or Linux - enters a short session code, and shares their screen to the LED with nothing to install. Built solo, it uses WebRTC (via OpenVidu) for real-time screen streaming, so multiple participants can cast into one session and the display can switch between them or blow any one up to full screen.

The platform is two React web apps over a Node.js/Express signaling backend. The Teacher app runs on the TouchIT LED as the session host and receiver: it generates a 6-digit session code and a QR code, then displays the incoming casts. The Student app is the casting client: it joins by code and shares its screen. An Express API backed by the OpenVidu Node client issues the WebRTC sessions and access tokens that connect them.

Key Achievements

Built the full platform solo, two React front-ends (the LED-side host/receiver and the casting client) plus the Node.js/Express signaling/token backend. The casting client publishes its screen with openvidu-browser (videoSource: 'screen'), letting the presenter share a full screen, window, or tab via the browser’s native picker, while the host app tracks every subscriber stream, lets the display switch the “main” stream in real time, and expand any stream to full screen.

The host generates a random 6-digit session code plus a scannable QR code (qrcode.react) for a simple pairing flow, and because sessions run through the deployed OpenVidu media server, casters can connect over the internet rather than just the same LAN, enabling remote casting and remote support scenarios.

Technical Implementation

Frontend - Two Create React App apps (Ant Design UI), sharing an OpenVidu session model. The Teacher (host/receiver) app, intended to run on the TouchIT LED, creates a 6-digit session ID and QR code, subscribes to every caster’s stream, maintains a mainStreamManager to choose which cast is shown large, and offers full-screen view per stream. The Student (caster) app joins by session ID and publishes its screen via openvidu-browser with videoSource: 'screen'. Both connect to OpenVidu rooms using access tokens fetched from the backend.

Backend - A Node.js/Express service whose core is the /api/OpenVidu endpoint: it uses the OpenVidu Node client to create sessions and issue connection tokens, so browser clients can join the right WebRTC room. The app is set up with Helmet, compression, CORS, cookie/body parsing, and a health check, with MongoDB (Mongoose), JWT, and nodemailer available in the stack. It runs against an OpenVidu media server that handles the actual WebRTC routing, deployed on a Digital Ocean Linux VPS.

Architecture - Browser clients ⇄ Express token/session API ⇄ OpenVidu media server. Screen frames travel as WebRTC media through OpenVidu rather than through the app server, which keeps casting low-latency; the Express layer only brokers sessions and tokens. The whole thing is delivered as web apps over HTTPS on a self-managed Linux VPS - no client install, and no native receiver app on the LED.

Impact & Results

Screen casting works straight from a browser, no downloads or drivers, on any major desktop OS or Chromebook, and the LED display just opens the host web app, turning any TouchIT panel into a casting target with no receiver hardware or native app required. Several people can cast into one session, with the display switching between them or full-screening any one, and internet-based casting through the OpenVidu server supports remote learning and remote support beyond the local network. Because media flows peer-to-server over WebRTC rather than through the application backend, casting stays low-latency by design.