2026 · Designer & developer
Mantel
Your memories, on display
- Discipline
- Coding
- For
- Fun
- Stack
- Next.jsTypeScriptSupabaseElectronSwift
Problem
The TV in my living room is a black rectangle most of the day, and my photos sit in a cloud nobody opens.
What I built
One app for every screen in the house: a web player, a Mac screensaver and a desktop app, all fed from the same library.
Result
Live at mantelapp.vercel.app, with a downloadable Mac app.
Mantel turns a Mac screensaver, a smart TV, an iPad or any browser into a living picture frame of your photos and videos.
The problem
The TV in my living room was a black rectangle most of the day, and our photos sat in a cloud nobody opened.
What I built
- One library, every screen: a web player, a Mac screensaver and a desktop app.
- Photos come from shared Google Drive folders; videos are transcoded in the browser before upload, with a per-account quota.
- Your phone can change what the TV is showing, in real time.
Engineering decisions
- Realtime over polling. Always-on screens polling every few seconds added up to about a million requests a month. I moved updates to realtime broadcasts, with a slow fallback poll that pauses when the screen is hidden.
- Every database table locked down with row-level security.
- A native Swift screensaver bundled inside an Electron app, shipped as a universal DMG for Intel and Apple Silicon.
Results
Live at mantelapp.vercel.app, with a downloadable Mac app.
How I thought about it
It started as FrameTV, until I remembered Samsung already sells a TV called The Frame. Always-on screens also taught me to hate polling: it now waits for realtime pushes instead of asking every few seconds.
