Skip to content
← Everything I've made

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.
NextGod’s Sanctuary →