Matinee
A cloud-connected e-ink display · 2026
A movie review that hangs on your wall. It pulls what I’ve watched and rated on Letterboxd, renders the whole frame in the cloud, and paints it onto a 13.3″ e-ink panel that sips power and never asks for attention. No feed. No notifications. Just the last thing I loved, framed like it matters.

On my wall right now — Forrest Gump, five stars.
At a glance
- What
- A cloud-connected e-ink display that frames your latest Letterboxd review
- My role
- All of it — PCB, firmware, cloud pipeline, companion app
- Status
- Working prototype in daily use; Kickstarter planned
- Stack
- ESP32-S3 · Python/PIL · Next.js · Supabase
0
Unit Kickstarter run
$0
Bill of materials, per unit
0
Colors of e-ink (Spectra 6)
0
Source, done right
The Idea
I write real reviews. Then they vanish into a feed.
I’ve logged hundreds of films on Letterboxd — half-star ratings, dumb little one-liners, the occasional review I’m actually proud of. And all of it lives in an app I open, scroll, and forget. The stuff I think about the most has no place in the room I actually live in.
So I built the room a screen. Matinee takes my latest Letterboxd entry and turns it into an object — poster, rating, my words — that just sits there, on the wall, being true. It’s the opposite of a notification. You don’t check it. You catch it out of the corner of your eye and remember you have taste.
Interactive
Go ahead. Hit refresh.
Press the button and watch it repaint, the way real e-ink does — a flash, an invert, then it settles into the next frame.

Real frames, exported straight from the live pipeline — the household’s actual reviews. The flash mimics how e-ink repaints.
The Object
I wanted dumb hardware and a smart cloud.
The hardware does almost nothing on purpose. There’s no processor grinding away, no app running on the device. An ESP32 wakes up, asks the cloud “is there a new picture?”, and if there is, it paints it and goes back to sleep. That’s it.
That decision is the whole design. Every hard problem — fetching from Letterboxd, laying out the frame, fitting a poster into six colors — happens on a server I can fix in seconds, not on 200 boards I’d have to physically recall. The panel is e-ink because a movie poster shouldn’t glow, shouldn’t refresh, shouldn’t cost power to keep showing. It holds its last image with the power off. Like paper that changes its mind once a day.
The Board
A two-layer board, a $4 brain, and a spec I could hand to a factory.
I designed the PCB to be almost boring — and that was the goal. One ESP32-S3, a power regulator, a USB-C port, two buttons, and a ribbon connector to the panel. Two layers. Under a dollar to assemble. The less that’s on the board, the less that can fail across a 200-unit run.
Boot Sequence
Power On
ESP32 boots, checks for saved Wi-Fi.
Wi-Fi Setup
No network? Spin up a captive portal to configure.
Register
Phone home with the hardware serial.
Pair
Show a 6-digit code, claim it in the app.
Loop
Heartbeat every 5 min, poll for a new frame every 10s, sleep.
The Pipeline
From my Letterboxd to my wall, in five hops.
Letterboxd
RSS feed
Vercel
Python + PIL render
Supabase
1600×1200 PNG
ESP32
polls via ETag
The panel
repaints
The ETag trick is the part I’m quietest-proud of: the device asks “has the picture changed?” and 99% of the time the answer is “no,” so it downloads nothing and goes back to sleep. It’s the difference between a wall ornament and a power bill.
The Companion
The wall is the output. The app is the control room.
Pairing, what’s on the wall, the whole review feed — it all lives in a Next.js PWA I run off my phone.

Now Displaying
The home screen mirrors the wall: what’s showing, whether the device is online, and how often it repaints. It’s also where I set the sprite — my house critic, Spike — and watch the counter tick past 350 reviews.

The Feed
Every review the household logs, flowing into a feed the wall pulls from. It started as a way to show off my Letterboxd and turned into a small, honest record of what we actually watch.
The Hard Part
I designed it for everything. I shipped it for one thing.
The original spec was greedy. Matinee was going to surface my whole taste — Letterboxd and Untappd, concerts I’d been to, books, the works. I built the architecture to handle all of it, sources as plug-ins.
Then I ran the honest math on a 200-unit Kickstarter and made the call I’d make again: one source, flawless, beats five, flaky. Every extra integration was another feed to babysit, another way for a stranger’s wall to show a broken frame. So I cut. Letterboxd only — the one I actually use every day.
Designed for · not shipped
Designed for. Deliberately not shipped. That’s the point.
Reflection
What building a physical product taught me that software never did.
Software forgives you. Ship a bug, push a fix, nobody remembers. Hardware doesn’t — every choice gets soldered into 200 copies you can’t take back. That pressure made me a better editor of my own ideas.
The scope cut, the dumb-hardware bet, the boring two-layer board — all of it was me learning to design for the version that ships and survives, not the version that demos.
Technical
- PCB Design (KiCad)
- ESP32 / Embedded C
- E-Ink & SPI
- Python / PIL Rendering
- Next.js + Supabase
- Vercel Serverless
Judgment
- Scoping & Cutting
- Design for Manufacture
- Cost Engineering
- Systems Thinking
- Product Ownership
- Shipping Physical
Want one on your wall?
Matinee’s heading to Kickstarter. If you want to talk hardware, taste, or how a $4 chip ends up being furniture — I’m around.
A cloud-connected e-ink display · matinee.ink · 2026