I have a fairly simple requirement for classroom technology: I should not have to develop a relationship with the classroom computer.
I don’t want my files living on it. I don’t want to log into six different services on it. I don’t want to wonder whether I remembered to log back out of those six services. I don’t particularly want to carry a USB drive around in 2026. And I definitely don’t want the first five minutes of class to become a live demonstration of Windows display settings while 30 students watch me slowly reconsider my career choices.
So I built Podium.
Podium is my latest open-source project, and the basic idea is very simple:
The classroom computer should just drive the projector. Everything else should be in my hand.
Walk into a classroom. Open a browser. Go to one page. Enter a few connection values and click Go Live.
Bam.
That computer is now basically a dumb display.
From that point forward, I can stand anywhere in the room with my iPad or iPhone and control what appears on the projector. Slides, PDFs, websites, YouTube videos, images, audio, QR codes, countdown timers, a whiteboard, even the camera on my phone can all be sent to the screen without going back to the podium computer.
And that’s really the problem I wanted to solve.
The shared-computer problem
A lot of classroom technology assumes that the computer connected to the projector is your computer.
Often it isn’t.
It’s a shared Windows machine used by dozens of faculty members. It may have university software installed on it, it may be aggressively locked down, and you probably don’t have administrator privileges. Depending on the room, you might not even teach there again for several days.
The usual alternatives aren’t especially elegant.
You can log into cloud storage on the classroom machine. You can email files to yourself. You can carry a USB drive. You can connect your own laptop and begin the traditional ceremony of adapters, display mirroring, resolution changes, and wondering why HDMI apparently stopped being HDMI sometime since Tuesday.
Or the shared computer can just open a web page.
Podium requires no installation, no framework, and no administrator access. The display is a static web page that can be hosted on GitHub Pages, a VPS, or even served locally. The classroom side does one job: render whatever the controller tells it to render.
That’s much closer to how I actually want a classroom to work.
My iPad becomes the podium
Once the display is running, the interesting part moves to the tablet.
Podium’s controller gives me a library of teaching materials and controls for whatever is currently being shown. I can move through slides, jump directly to another slide, see presenter notes, load a PDF, start a timer, throw a QR code onto the screen, play a video, or put up a quick text message.
For my own workflow, there’s especially good support for Marp, since I’ve increasingly been writing lecture slides in Markdown. Podium renders Marp decks directly, including custom themes, presenter notes, code highlighting, math, and even a convention for progressive bullet builds. The tablet shows me the current slide, the upcoming slide, and my notes while the students just see the presentation.
There are also a couple of features that I didn’t initially think would become quite as useful as they have.
I can use an Apple Pencil to annotate directly over the current slide. There’s a temporary laser pointer. I can turn the phone’s camera into a quick document camera. I can split the projector into multiple regions – for example, leaving instructions and a countdown visible alongside something we’re discussing.
And because all of those controls are on the device in my hand, I don’t have to teach from behind the podium.
That matters more than it sounds.
Freeze is really a cue
Probably my favorite feature is Freeze.
Most presentation systems treat freezing the projector as literally freezing the projector: hold this image while I frantically do something else.
Podium treats it more like a video production switcher.
When I press Freeze, the students keep seeing exactly what is already on the screen. But now anything I do on my iPad goes into a private cue.
So while the class is still looking at Slide 12, I can find Slide 17.
Or open the next PDF and get to page 6.
Or load a video and scrub it to 4:20.
Nobody watches me do any of that.
When I’m ready, I press TAKE, and the cued material appears immediately. Podium keeps separate live and cue layers, so it isn’t reopening the content at the moment I take it – the video can already be sitting at the right playhead position and the PDF can already be on the right page.
It’s a small change in the interaction model, but it makes teaching with mixed media dramatically less awkward.
The technology gets out of the performance.
Built for computers I don’t own
One of my goals with Podium was to make it useful precisely in environments where I don’t control all the hardware.
If it’s a classroom computer I use regularly, Podium can remember its settings. Pairing a phone or tablet can be done with a QR code, and the controller can be added to the iPad home screen so it behaves much more like an app.
If I’m using a machine temporarily, I can clear Podium’s settings when I’m finished.
Communication between the display and controller can use Supabase Realtime, a tiny self-hosted WebSocket relay, or MQTT. Messages are encrypted in the browser with AES-GCM using a key derived from the room passphrase, so the relay just moves encrypted messages between the devices.
In other words, I don’t need to turn the classroom PC into my computer just to give a lecture.
That’s the part I care about.
A deliberately boring architecture
Podium is also one of those projects where I’m increasingly fond of the architecture because there isn’t very much of it.
There are three pages:
display.html runs on the classroom computer.control.html runs on the iPad or phone.index.html points you to the other two.
That’s basically it.
No giant application stack. No build process. No account system that I have to maintain. If you want the easiest relay, Supabase works. If you’d rather keep everything under your control, there’s a small Node server you can run on a VPS.
I have nothing against complicated systems when the problem requires them.
I just don’t think advancing a PowerPoint slide should require Kubernetes.
Why I built it
Podium started from a very specific annoyance, but I think the larger idea is useful.
In a shared classroom, the room computer shouldn’t be the center of your digital teaching environment.
It should be infrastructure.
The projector is infrastructure. The speakers are infrastructure. The classroom PC can be infrastructure too.
My teaching materials, notes, controls, annotations, and the things I’m preparing to show next belong on a device I control and carry with me.
So the workflow I wanted was:
Walk into room → open browser → connect display → pick up iPad → teach.
No file copying. No digging through Downloads. No leaving a Google account logged in on a lectern somewhere. No running back to the mouse every time I want to change what the class is seeing.
Just one page on the shared system, and then everything interesting happens from the tablet already in my hand.
That’s Podium.
It’s open source, it’s in my useful-scripts repository on GitHub, and – as the name of that repository suggests – I built it because I wanted something useful.
If it also means I never again have to stand at a classroom computer while students watch me hunt for a browser tab I accidentally buried twelve tabs ago, I will consider the project an unqualified success.

